Appearance
status+me.virmesh.success.avatarResolved
avatar manifest が正常に解決されたことを示します。
Description
この status は me.virmesh.avatar.resolveAvatar が署名付き avatar manifest を返した場合に使います。
private avatar の場合は、有効な fetchGrant が検証済みです。
When this happens
- public avatar manifest が解決された
- private avatar manifest が有効な
fetchGrantにより解決された
Payload
解決された avatar manifest です。
References obj+me.virmesh.avatar.manifest : AvatarServer が返す署名対象の avatar manifest です。
avatarIdstringRequiredavatar identifier です。形式は medi:avatar:<scheme>:<publicKey> です。
versionIdstringRequiredmanifest の immutable version identifier です。
endpointstringRequiredこの manifest を解決する AvatarServer の absolute URL です。
namestringRequired表示用の avatar 名です。
visibilitystringRequiredpublic または private です。
publisher が avatar 鍵をこの avatar 用に委任したことを示す署名付き object です。
References obj+me.virmesh.avatar.publisherDelegation : publisher が avatar 鍵と publisher identity の対応を署名した object です。
payload.avatarIdstringRequired委任先の avatar identifier です。
payload.publisher.idstringRequiredpublisher の player identifier です。
payload.publisher.handlestringOptionalpublisher の表示用 handle snapshot です。
payload.issuedAtintegerRequireddelegation を発行した epoch second です。
payload.expiresAtintegerOptionaldelegation の任意の期限です。epoch second で表します。
signaturestringRequiredcanonical JSON of payload に対する publisher の署名です。
assetsobject[]Requiredmodel などの重い asset entry 一覧です。各 entry は kind, contentType, profile, url, hash, size を持ちます。
assets[].kindstringRequiredmodel などの asset 種別です。
assets[].contentTypestringRequiredHTTP content type です。
assets[].profilestringRequiredvrm, glb, gltf などの実装 profile です。
assets[].urlstringRequiredasset を取得する absolute URL です。private avatar では、fetchGrant を再送せずに使える短命 signed URL または grant-bound URL にします。
assets[].hashstringRequiredasset body の content hash です。v1 では sha256:<base64url> を使います。
assets[].sizeintegerRequiredasset body の byte size です。
thumbnailobjectOptional任意の thumbnail asset entry です。contentType, profile, url, hash, size を持ちます。
wearer が提示する任意の購入 receipt claim です。
References obj+me.virmesh.avatar.purchaseReceipt : seller が buyer に対して発行した avatar purchase receipt claim です。
payload.avatarIdstringRequired購入対象の avatar identifier です。
payload.shopUrlstringRequired購入元ショップページの absolute URL です。
payload.seller.idstringRequiredseller の player identifier です。
payload.seller.handlestringOptionalseller の表示用 handle snapshot です。
payload.buyer.idstringRequiredbuyer の player identifier です。
payload.buyer.handlestringOptionalbuyer の表示用 handle snapshot です。
payload.issuedAtintegerRequiredreceipt を発行した epoch second です。
signaturestringRequiredcanonical JSON of payload に対する seller の署名です。
任意の WASM script と sandbox policy です。
References obj+me.virmesh.avatar.scriptSandbox : avatar WASM script と v1 sandbox policy を表す object です。
urlstringRequiredWASM binary を取得する absolute URL です。
hashstringRequiredWASM binary body の content hash です。v1 では sha256:<base64url> を使います。
permissionsstring[]Requiredscript が要求する permission token 一覧です。v1 では avatar.self など低権限の token に限定します。
sandbox.runtimestringRequiredv1 では wasm です。
sandbox.networkbooleanRequirednetwork access を許可するかです。v1 では false です。
sandbox.filesystembooleanRequiredfilesystem access を許可するかです。v1 では false です。
sandbox.worldMutationbooleanRequiredworld state mutation を許可するかです。v1 では false です。
sandbox.maxMemoryBytesintegerRequiredscript に許可する最大 memory byte 数です。
sandbox.maxExecutionMillisintegerRequired1 tick または 1 call あたりの最大実行時間です。
signaturestringRequiredcanonical JSON of payload.manifest に対する avatar 鍵の署名です。
Examples
avatar resolved
{
"payload": {
"manifest": {
"avatarId": "medi:avatar:ed25519:avatar-public-key",
"versionId": "2026-04-11T00:00:00Z",
"endpoint": "https://avatars.example.com/",
"name": "Alice Avatar",
"visibility": "public",
"publisherDelegation": {
"payload": {
"avatarId": "medi:avatar:ed25519:avatar-public-key",
"publisher": {
"id": "medi:player:ed25519:publisher-public-key",
"handle": "[email protected]"
},
"issuedAt": 1770000000
},
"signature": "base64-signature-by-publisher"
},
"assets": [
{
"kind": "model",
"contentType": "model/gltf-binary",
"profile": "glb",
"url": "https://cdn.example.com/avatars/avatar.glb",
"hash": "sha256:base64url-hash",
"size": 2480000
}
]
}
},
"signature": "base64-signature-by-avatar-key"
}Client handling
payload.manifestを responsesignatureと合わせて検証してから使うpublisherDelegation.payloadをpublisherDelegation.signatureと合わせて検証してから表示する- asset 取得後に manifest 内の
hashと一致することを確認する
Related statuses
Referenced by
| HTTP | API | Action |
|---|---|---|
200 | me.virmesh.avatar.resolveAvatar | me.virmesh.avatar.resolveAvatar |