Appearance
status+me.virmesh.success.playerProfileResolved
公開プロフィールが解決されたことを示します。
Description
me.virmesh.player.resolveProfile が正常終了したときに返ります。
この 200 response は shared status envelope ではなく、
handle record と profile module payload 群を対象 player 本人の鍵で個別署名した profile response をそのまま返します。
When this happens
- 対象 player または handle が見つかる
- 公開プロフィールに必要な情報が揃っている
Payload
解決された公開プロフィール payload です。top-level の response 署名は持たず、payload.handle.record と payload.modules.*.payload をそれぞれ個別署名で返します。
References obj+me.virmesh.player.profile : player の公開プロフィール object です。
current handle record payload です。
References obj+me.virmesh.handle.record : player に紐づく current handle record です。
idstringRequiredhandle owner の player identifier です。
primaryHandlestringRequiredplayer の canonical primary handle です。
secondaryHandlesstring[]Required同一 player に解決される secondary handle 一覧です。
playerServerstringRequiredplayer を管理する PlayerServer の absolute URL です。
updated_atintegerRequiredこの handle record payload を生成した時刻です。epoch second を返します。
handle.signaturestringRequiredcanonical JSON of handle.record に対する、対象 player 本人の署名です。
公開プロフィールの必須 displayName module payload です。
References profile+me.virmesh.player.displayName : player の必須 profile displayName module payload です。
modulestringRequired常に profile+me.virmesh.player.displayName を返します。
idstringRequiredmodule owner の player identifier です。
displayNamestringRequiredPlayerServer が保持する公開 display name です。
updated_atintegerRequiredこの module payload を生成した時刻です。epoch second を返します。
modules.profile+me.virmesh.player.displayName.signaturestringRequiredcanonical JSON of modules.profile+me.virmesh.player.displayName.payload に対する、対象 player 本人の署名です。
bio と image を持つ optional profile card module payload です。
References profile+me.virmesh.player.card : player の optional profile card module payload です。
modulestringRequired常に profile+me.virmesh.player.card を返します。
idstringRequiredmodule owner の player identifier です。
biostringOptionalplain text の自己紹介文です。
PlayerServer 内の immutable image asset を指す参照 object です。
References obj+me.virmesh.player.profileImage : PlayerServer 内に保存された公開プロフィール画像を指す参照 object です。
assetIdstringRequiredPlayerServer 内の 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.signaturestringOptionalcanonical JSON of modules.profile+me.virmesh.player.card.payload に対する、対象 player 本人の署名です。
Examples
resolved public profile
{
"payload": {
"handle": {
"record": {
"id": "medi:player:ed25519:base64-public-key",
"primaryHandle": "alice@virmesh.me",
"secondaryHandles": [
"alice@example.com"
],
"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"
}
}
}
}Client handling
payload.handle.recordをpayload.handle.signatureと合わせて検証してから使うpayload.modules.profile+me.virmesh.player.displayName.payloadを対応する signature と合わせて検証してから使う- optional module がある場合も
payload.modules.*.payload.idがpayload.handle.record.idと一致することを確認してから 1 つの公開プロフィールとして扱う
Related statuses
Referenced by
| HTTP | API | Action |
|---|---|---|
200 | me.virmesh.player.resolveProfile | me.virmesh.player.resolveProfile |