Appearance
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 に含まれます。
Endpoint
Request schema
query.idstringOptionalplayer identifier で検索します。query.handle とは同時指定できません。
query.handlestringOptionalprimary handle で検索します。query.id とは同時指定できません。
Responses
200status+me.virmesh.success.playerProfileResolved公開プロフィールが解決されたことを示します。
status+me.virmesh.success.playerProfileResolved公開プロフィールが解決されたことを示します。
Response body
解決された公開プロフィール 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 本人の署名です。
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 をそのまま返します。
400status+me.virmesh.http.invalid_queryquery parameter の組み合わせまたは形式が不正であることを示します。
status+me.virmesh.http.invalid_queryquery parameter の組み合わせまたは形式が不正であることを示します。
この status は route が期待する query parameter の条件を満たしていない場合に返ります。
resolveHandle では id と handle の同時指定、未指定、未知の 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."
}
}404status+me.virmesh.player.profile_not_found指定した player id または handle に対応するプロフィール対象が存在しないことを示します。
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."
}
}404status+me.virmesh.player.profile_not_configuredplayer は存在するが公開プロフィールに必要な情報が未設定であることを示します。
status+me.virmesh.player.profile_not_configuredplayer は存在するが公開プロフィールに必要な情報が未設定であることを示します。
この 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."
}
}410status+me.virmesh.account.disabled対象 account が tombstone 化済みであり、有効な主体または参照先として扱えないことを示します。
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."
}
}