Appearance
me.virmesh.world.resolveWorld
world address または world id から署名付き world manifest を解決します。
WorldServer が保持する world を、人間向けの world address または canonical worldId から解決する public action です(単一のエントリポイント)。
world address は world 専用の人間向け識別子です。例: example.com/world。
player handle(例: [email protected])は me.virmesh.handle.resolveHandle で解決します。
必要に応じて versionId または manifest の hash で特定リビジョンを要求できます。versionId と hash は同時に指定しません。
クライアントは response の signature で core manifest を検証し、payload.modules 内の各 module も個別に検証してから表示情報や instance policy を使います。
解決後の handshake、instance 取得、署名検証では payload.manifest.worldId を使います。
Endpoint
Request schema
query.worldAddressstringOptional解決する world address です。query.worldId とは同時指定できません。
query.worldIdstringOptional解決する world identifier です。形式は medi:world:<scheme>:<publicKey> です。query.worldAddress とは同時指定できません。
query.versionIdstringOptional特定の manifest version を要求します。query.hash とは同時指定しません。
query.hashstringOptional特定の manifest hash を要求します。query.versionId とは同時指定しません。
Request example
{
"query": {
"worldAddress": "example.com/world"
}
}Responses
200status+me.virmesh.success.worldResolvedworld manifest が正常に解決されたことを示します。
status+me.virmesh.success.worldResolvedworld manifest が正常に解決されたことを示します。
Response body
解決された world manifest です。
References obj+me.virmesh.world.manifest : key-authoritative world の署名対象 core manifest です。
worldIdstringRequiredworld identifier です。形式は medi:world:<scheme>:<publicKey> です。
schemastringRequiredmanifest schema identifier です。v1 では obj+me.virmesh.world.manifest を使います。
versionIdstringRequiredmanifest の immutable version identifier です。
endpointstringRequiredこの manifest を解決する WorldServer の absolute URL です。
WorldServer がこの world の解決または live session hosting を委任されていることを示す署名付き object です。
References obj+me.virmesh.world.hostingDelegation : world identity key が WorldServer に hosting capability を委任した object です。
payload.worldIdstringRequired委任元の world identifier です。形式は medi:world:<scheme>:<publicKey> です。
payload.serverstringRequired委任先 WorldServer の absolute URL です。
payload.capabilitiesstring[]Required委任する capability 一覧です。v1 では resolveManifest と hostLiveSession を定義します。
payload.issuedAtintegerRequireddelegation を発行した epoch second です。
payload.expiresAtintegerOptionaldelegation の任意の期限です。epoch second で表します。省略時は明示的に取り消されるまで有効な long-lived delegation として扱います。
signaturestringRequiredcanonical JSON of payload に対する world identity key の署名です。
worldProtocolsobject[]Requiredクライアントが live session に使える protocol 一覧です。各要素は name, version を持ちます。接続先やポートなどの instance 固有の値は、instance object 側の worldProtocols[].information に載せます。
worldProtocols[].namestringRequiredprotocol identifier です。例: me.virmesh.world.websocket。
worldProtocols[].versionstringRequiredprotocol version です。
assetsobject[]Optionalscene などの asset entry 一覧です。各 entry は kind, contentType, profile, url, hash, size を持ちます。
assets[].kindstringRequiredscene などの asset 種別です。
assets[].contentTypestringRequiredHTTP content type です。
assets[].profilestringRequiredglb, gltf などの実装 profile です。
assets[].urlstringRequiredasset を取得する absolute URL です。
assets[].hashstringRequiredasset body の content hash です。v1 では sha256:<base64url> を使います。
assets[].sizeintegerRequiredasset body の byte size です。
updated_atintegerRequiredmanifest を更新した epoch second です。
signaturestringRequiredcanonical JSON of payload.manifest に対する world identity key の署名です。
payload.modulesobjectOptionalworld module map です。各 entry は { payload, signature } を持ち、module payload ごとに world identity key で署名されます。
Response example
{
"payload": {
"manifest": {
"worldId": "medi:world:ed25519:base64url-world-public-key",
"schema": "obj+me.virmesh.world.manifest",
"versionId": "2026-04-26T00:00:00Z",
"endpoint": "https://worlds.example.com/",
"hostingDelegation": {
"payload": {
"worldId": "medi:world:ed25519:base64url-world-public-key",
"server": "https://worlds.example.com/",
"capabilities": [
"resolveManifest",
"hostLiveSession"
],
"issuedAt": 1770000000
},
"signature": "base64-signature-by-world-key"
},
"worldProtocols": [
{
"name": "me.virmesh.world.websocket",
"version": "1.0.0"
}
],
"updated_at": 1770000100
},
"modules": {
"world+me.virmesh.world.profile": {
"payload": {
"module": "world+me.virmesh.world.profile",
"worldId": "medi:world:ed25519:base64url-world-public-key",
"name": "Example World",
"description": "A small social world.",
"tags": [
"social",
"music"
],
"addresses": [
"example.com/world"
],
"updated_at": 1770000200
},
"signature": "base64-signature-by-world-key-for-profile-module"
}
}
},
"signature": "base64-signature-by-world-key"
}この status は me.virmesh.world.resolveWorld が署名付き world manifest と任意の署名付き world module を返した場合に使います。
400status+me.virmesh.http.invalid_queryquery parameter の組み合わせまたは形式が不正であることを示します。
status+me.virmesh.http.invalid_queryquery parameter の組み合わせまたは形式が不正であることを示します。
この status は route が期待する query parameter の条件を満たしていない場合に返ります。
resolveHandle では id と handle の同時指定、未指定、未知の key を拒否します。
resolveWorld では worldAddress と worldId の同時指定、未指定、未知の 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.world.address_not_found指定された world address が見つからないことを示します。
status+me.virmesh.world.address_not_found指定された world address が見つからないことを示します。
この status は query.worldAddress に対応する world manifest を WorldServer が保持していない場合に返ります。
Status payload
payload.messagestringRequired実装依存の詳細メッセージです。
world address is not found
{
"status": "status+me.virmesh.world.address_not_found",
"payload": {
"message": "No world matched the requested address."
}
}404status+me.virmesh.world.not_found指定された world が見つからないことを示します。
status+me.virmesh.world.not_found指定された world が見つからないことを示します。
この status は query.worldId に対応する world manifest を WorldServer が保持していない場合に返ります。
Status payload
payload.messagestringRequired実装依存の詳細メッセージです。
409status+me.virmesh.world.hash_mismatchrequested hash と world manifest または asset の hash が一致しないことを示します。
status+me.virmesh.world.hash_mismatchrequested hash と world manifest または asset の hash が一致しないことを示します。
この status は query.hash で要求された manifest hash が保存済み manifest と一致しない場合に返ります。
asset body の hash mismatch は通常、asset 取得側で検出します。
Status payload
payload.messagestringRequired実装依存の詳細メッセージです。
422status+me.virmesh.world.invalid_manifest_signatureworld manifest の署名検証に失敗したことを示します。
status+me.virmesh.world.invalid_manifest_signatureworld manifest の署名検証に失敗したことを示します。
この status は WorldServer が保存している manifest 署名を検証できない場合、 hosting delegation の署名検証に失敗した場合、 または world module の署名検証に失敗した場合に返ります。
Status payload
payload.messagestringRequired実装依存の詳細メッセージです。
manifest signature failed
{
"status": "status+me.virmesh.world.invalid_manifest_signature",
"payload": {
"message": "World manifest signature verification failed."
}
}422status+me.virmesh.world.delegation_expiredworld hosting delegation が期限切れであることを示します。
status+me.virmesh.world.delegation_expiredworld hosting delegation が期限切れであることを示します。
この status は hostingDelegation.payload.expiresAt が存在し、その期限を過ぎた manifest を WorldServer が返そうとした場合に使います。
クライアントも expiresAt が存在する場合だけ delegation の期限を検証します。
Status payload
payload.messagestringRequired実装依存の詳細メッセージです。
hosting delegation expired
{
"status": "status+me.virmesh.world.delegation_expired",
"payload": {
"message": "The world hosting delegation has expired."
}
}