名前 サーバープロトコル
名前を查询し登録するためにジャミが使用するプロトコルは, HTTP [REST] (https://en.wikipedia.org/wiki/Representational_state_transfer) API で JSON 文書と通常の HTTP ステータスコードで要求に応答する.
公共名前のサーバーは, ns.jami.net
でホストされ,バックエンドとしてブロックチェーンを使用します.別の実装では,名前のサーバープロトコルを再利用可能にする他のデータベースまたはディレクトリサービスを利用できます.
uername@example.com
という形でユーザー名を検索すると,ネームサーバーの uername
を example.com
で検索します. (デフォルトネームサーバーを使用するには, @ns.jami.net
を追加する必要はありません.
名前格式化に関する規則
ユーザー名は,その形式に関するいくつかの規則を確認するために,Regexによってチェックされます.
長さは3から32文字の間のものでなければならない.
Those characters must be alphanumerical with dashes
-
being also accepted.
名前を探している
これは名前サーバーが提供する主なサービスです. ユーザー名に対応するJami IDを取得できます.
要求
foobar
という名前に対する要請は,URIとして /name/
*foobar
*とされた GET
の要請です.
反応 (成功)
ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ ヽ
体は2文字列属性を持つJSON文書である: name
と addr
. name
は,要求されたものと等しく, addr
は, 0x
と先付いた Jami IDの六桁表示である.
JSON の答えは
{
"name":"foobar",
"addr":"0x29347542eb07159f316577e1ae16243d152f6b7b"
}
回答 (見つかりませんでした)
ヽ404 ``Not
Found
の回答が, コンテンツタイプ
のフィールドを アプリケーション/json
と設定してクライアントに送信する必要があります.
文字体は JSON ドキュメントで,1 文字列属性である: error
. この属性はエラーを説明するエラーメッセージで埋め込まれています (将来クライアントで表示される可能性があります).
参照実施について,返却された文書は:
{
"error":"name not registred"
}
アドレスを検索する
このサービスは逆の検索です. 名前サーバーに登録されている場合はアドレスを尋ねてユーザー名が返されます.
要求
ID jami:29347542eb07159f316577e1ae16243d152f6b7b
は,URIとして /addr/
*29347542eb07159f316577e1ae16243d152f6b7b
*とされた GET
の要求である.
反応 (成功)
メールアドレスがユーザー名と一致する場合は,ステータスコードの返信を 200
OK
と入力して,クライアントに コンテンツタイプ
フィールドを アプリケーション/json
と設定して送信する必要があります.
文字体は JSON ドキュメントで 1 文字列属性である: name
. このフィールドの値は,このアドレスに登録された名前です
JSON の答えは
{
"name":"foobar"
}
回答 (見つかりませんでした)
返信番号が見つからない場合,ステータスコードの返信は 404
Not
Found
と設定された コンテンツタイプ
フィールドをクライアントに送信する必要があります.
文字体は JSON ドキュメントで,1 文字列属性である: error
. この属性はエラーを説明するエラーメッセージで埋め込まれています (将来クライアントで表示される可能性があります).
参照実施について,返却された文書は:
{
"error":"address not registred"
}
名前登録
このプロトコルのこの部分は新しい名前/アドレスペアを登録するために使用されます. 主な公共登録書で使用されますが,カスタム実装ではオプションかもしれません.
要求
foobar
という名前を登録する要請は, URIとして /name/
*foobar
*を入力した POST
の要請である.ヘッダー属性 Content-type
は, application/json
に設定しなければならない.
ヽaddrと
owner.
addrは,登録される名前である
0x` と前記された Jami ID を含む.
foobar
の例は,次のとおりです.
{
"addr":"0x29347542eb07159f316577e1ae16243d152f6b7b",
"owner":"foobar"
}
反応 (成功)
名前/アドレスペアが成功して登録された場合,ステータスコードの返答は, 200
OK
と設定された コンテンツタイプ
フィールドをクライアントに送信する必要があります.
体は 1 の boolean success
を true
に設定した JSON ドキュメントを含んでいます.
例として
{
"success":true
}
名前や住所を問い合わせるさらなる試みは成功する.
返信 (不良要求)
登録が要求のエラー (フォーマット,欠けている属性など) によって達成できない場合は,ステータスコードの返答を 400
Bad
Request
と入力してクライアントに コンテンツタイプ
フィールドを application/json
と設定する必要があります.
体は2つの属性を持つ JSON 文書である: success
が boolean と error
が文字列である. success
は, false
と error
に設定され,エラーを説明するエラーメッセージが記入されている (将来クライアントで表示される可能性があります).
ユーザ名の不正なフォーマットの場合,そのボディは:
{
"success": false,
"error": "invalid name"
}
回答 (禁止)
登録が既に取られているため,登録が達成できない場合は,ステータスコードの返答を 403
Forbidden
と入力して,クライアントに コンテンツタイプ
フィールドを application/json
と設定して送信する必要があります.
体は3つの属性を持つ JSON ドキュメントである: success
これは元々のリクエストから複製された文字列である false
, name
, addr
の boolean setです.
foobar
を登録すると,すでに登録されている場合,次の反応が起こるでしょう.
{
"success": false,
"name":"foobar",
"addr":"0x29347542eb07159fdeadbeefae16243d152f6b7b"
}
リンクは
jami-nameservice
:ns.jami.net
で使用された NodeJS 実装を参照し,イーサリアムノードを問い合わせます.