名前 サーバープロトコル

名前を查询し登録するためにジャミが使用するプロトコルは, HTTP [REST] (https://en.wikipedia.org/wiki/Representational_state_transfer) API で JSON 文書と通常の HTTP ステータスコードで要求に応答する.

公共名前のサーバーは, ns.jami.netでホストされ,バックエンドとしてブロックチェーンを使用します.別の実装では,名前のサーバープロトコルを再利用可能にする他のデータベースまたはディレクトリサービスを利用できます.

uername@example.comという形でユーザー名を検索すると,ネームサーバーの uernameexample.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文書である: nameaddr. 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に設定しなければならない.

ヽaddrowner. addrは,登録される名前である0x` と前記された Jami ID を含む.

foobarの例は,次のとおりです.

{
    "addr":"0x29347542eb07159f316577e1ae16243d152f6b7b",
    "owner":"foobar"
}

反応 (成功)

名前/アドレスペアが成功して登録された場合,ステータスコードの返答は, 200 OK と設定された コンテンツタイプフィールドをクライアントに送信する必要があります.

体は 1 の boolean successtrue に設定した JSON ドキュメントを含んでいます.

例として

{
    "success":true
}

名前や住所を問い合わせるさらなる試みは成功する.

返信 (不良要求)

登録が要求のエラー (フォーマット,欠けている属性など) によって達成できない場合は,ステータスコードの返答を 400 Bad Request と入力してクライアントに コンテンツタイプフィールドを application/json と設定する必要があります.

体は2つの属性を持つ JSON 文書である: successが boolean と errorが文字列である. successは, falseerrorに設定され,エラーを説明するエラーメッセージが記入されている (将来クライアントで表示される可能性があります).

ユーザ名の不正なフォーマットの場合,そのボディは:

{
    "success": false,
    "error": "invalid name"
}

回答 (禁止)

登録が既に取られているため,登録が達成できない場合は,ステータスコードの返答を 403 Forbidden と入力して,クライアントに コンテンツタイプフィールドを application/json と設定して送信する必要があります.

体は3つの属性を持つ JSON ドキュメントである: success これは元々のリクエストから複製された文字列である false, name, addr の boolean setです.

foobarを登録すると,すでに登録されている場合,次の反応が起こるでしょう.

{
    "success": false,
    "name":"foobar",
    "addr":"0x29347542eb07159fdeadbeefae16243d152f6b7b"
}