Skip to content

me.virmesh.player.resolveProfile

player id または handle から公開プロフィールを解決します。

公開されているプロフィールを取得するactionです。 もし別のサーバーのプロフィールを解決する場合、対象プレイヤーサーバーに要求を転送し、中継します。 id指定かつサーバーがそのidのプレイヤーサーバーを認識していない場合、status+me.virmesh.player.profile_not_found を返します。 tombstone 化済み account またはその handle に対する解決では、古い payload を返さず status+me.virmesh.account.disabled を返します。 v1 では handle に加えて、必須 module profile+me.virmesh.player.displayName が揃っている場合だけ成功します。 optional module profile+me.virmesh.player.card は、存在し内容を持つときだけ payload.modules に含まれます。

draft

Endpoint

Method
GET
Path
/public/me.virmesh.player.resolveProfile
Auth
none
Host
VirMesh.PlayerServer

Request schema

query.idstringOptional

player identifier で検索します。query.handle とは同時指定できません。

query.handlestringOptional

primary handle で検索します。query.id とは同時指定できません。

Responses

200
status+me.virmesh.success.playerProfileResolved

公開プロフィールが解決されたことを示します。

Response body

payloadplayerProfileRequired

解決された公開プロフィール payload です。top-level の response 署名は持たず、payload.handle.recordpayload.modules.*.payload をそれぞれ個別署名で返します。

References obj+me.virmesh.player.profile : player の公開プロフィール object です。

handle.recordhandleRecordRequired

current handle record payload です。

References obj+me.virmesh.handle.record : player に紐づく current handle record です。

idstringRequired

handle owner の player identifier です。

primaryHandlestringRequired

player の canonical primary handle です。

secondaryHandlesstring[]Required

同一 player に解決される secondary handle 一覧です。

playerServerstringRequired

player を管理する PlayerServer の absolute URL です。

updated_atintegerRequired

この handle record payload を生成した時刻です。epoch second を返します。

handle.signaturestringRequired

canonical JSON of handle.record に対する、対象 player 本人の署名です。

modules.profile+me.virmesh.player.displayName.payloadplayerDisplayNameRequired

公開プロフィールの必須 displayName module payload です。

References profile+me.virmesh.player.displayName : player の必須 profile displayName module payload です。

modulestringRequired

常に profile+me.virmesh.player.displayName を返します。

idstringRequired

module owner の player identifier です。

displayNamestringRequired

PlayerServer が保持する公開 display name です。

updated_atintegerRequired

この module payload を生成した時刻です。epoch second を返します。

modules.profile+me.virmesh.player.displayName.signaturestringRequired

canonical JSON of modules.profile+me.virmesh.player.displayName.payload に対する、対象 player 本人の署名です。

modules.profile+me.virmesh.player.card.payloadplayerProfileCardOptional

bioimage を持つ optional profile card module payload です。

References profile+me.virmesh.player.card : player の optional profile card module payload です。

modulestringRequired

常に profile+me.virmesh.player.card を返します。

idstringRequired

module owner の player identifier です。

biostringOptional

plain text の自己紹介文です。

imageplayerProfileImageOptional

PlayerServer 内の immutable image asset を指す参照 object です。

References obj+me.virmesh.player.profileImage : PlayerServer 内に保存された公開プロフィール画像を指す参照 object です。

assetIdstringRequired

PlayerServer 内の immutable profile image asset identifier です。

contentTypestringRequired

画像の HTTP content type です。v1 は image/png または image/jpeg を使います。

hashstringRequired

画像 body hash です。v1 は sha256:<base64url> を使います。

widthintegerRequired

画像の pixel width です。

heightintegerRequired

画像の pixel height です。

sizeintegerRequired

画像 body の byte size です。

updated_atintegerRequired

この module payload を生成した時刻です。epoch second を返します。

modules.profile+me.virmesh.player.card.signaturestringOptional

canonical JSON of modules.profile+me.virmesh.player.card.payload に対する、対象 player 本人の署名です。

Response example

{
  "payload": {
    "handle": {
      "record": {
        "id": "medi:player:ed25519:base64-public-key",
        "primaryHandle": "[email protected]",
        "secondaryHandles": [
          "[email protected]"
        ],
        "playerServer": "https://ps.example.com/",
        "updated_at": 1770000100
      },
      "signature": "base64-signature-by-player-for-handle-record"
    },
    "modules": {
      "profile+me.virmesh.player.displayName": {
        "payload": {
          "module": "profile+me.virmesh.player.displayName",
          "id": "medi:player:ed25519:base64-public-key",
          "displayName": "Alice",
          "updated_at": 1770000200
        },
        "signature": "base64-signature-by-player-for-display-name-module"
      },
      "profile+me.virmesh.player.card": {
        "payload": {
          "module": "profile+me.virmesh.player.card",
          "id": "medi:player:ed25519:base64-public-key",
          "bio": "VR world builder",
          "image": {
            "assetId": "profimg_123",
            "contentType": "image/png",
            "hash": "sha256:base64url-hash",
            "width": 512,
            "height": 512,
            "size": 42000
          },
          "updated_at": 1770000300
        },
        "signature": "base64-signature-by-player-for-profile-card-module"
      }
    }
  }
}

me.virmesh.player.resolveProfile が正常終了したときに返ります。 この 200 response は shared status envelope ではなく、 handle record と profile module payload 群を対象 player 本人の鍵で個別署名した profile response をそのまま返します。

400
status+me.virmesh.http.invalid_query

query parameter の組み合わせまたは形式が不正であることを示します。

この status は route が期待する query parameter の条件を満たしていない場合に返ります。 resolveHandle では idhandle の同時指定、未指定、未知の key を拒否します。

Status payload

payload.messagestringRequired

実装依存の詳細メッセージです。

handle query is ambiguous

{
  "status": "status+me.virmesh.http.invalid_query",
  "payload": {
    "message": "Specify exactly one of query.id or query.handle."
  }
}
404
status+me.virmesh.player.profile_not_found

指定した player id または handle に対応するプロフィール対象が存在しないことを示します。

この status は me.virmesh.player.resolveProfile が 指定された検索キーに対応する player または handle record を見つけられなかった場合に返ります。

Status payload

payload.messagestringRequired

実装依存の詳細メッセージです。

profile target not found

{
  "status": "status+me.virmesh.player.profile_not_found",
  "payload": {
    "message": "No player or handle matched the requested profile target."
  }
}
404
status+me.virmesh.player.profile_not_configured

player は存在するが公開プロフィールに必要な情報が未設定であることを示します。

この status は me.virmesh.player.resolveProfile の対象 player 自体は存在するものの、 公開プロフィールとして返すために必要な情報が揃っていない場合に返ります。 v1 では必須 module profile+me.virmesh.player.displayName 未設定、 または primaryHandle 未設定のどちらかで未設定扱いです。

Status payload

payload.messagestringRequired

実装依存の詳細メッセージです。

profile is not configured yet

{
  "status": "status+me.virmesh.player.profile_not_configured",
  "payload": {
    "message": "The player exists, but its public profile is not configured yet."
  }
}
410
status+me.virmesh.account.disabled

対象 account が tombstone 化済みであり、有効な主体または参照先として扱えないことを示します。

この status は account が disable 済みで、以後の更新、social 操作、migration、 公開 profile / handle 解決の対象として受理されない場合に返ります。 通常は HTTP 410 Gone と組み合わせて返します。

Status payload

payload.messagestringRequired

実装依存の詳細メッセージです。

account disabled

{
  "status": "status+me.virmesh.account.disabled",
  "payload": {
    "message": "The requested account has been disabled and tombstoned."
  }
}