Skip to content

me.virmesh.worldInstance.getInstance

instance id から world instance を取得します。

WorldServer が管理する 1 つの instance を取得する public action です。 クライアントはライブセッションに接続する直前にこの action で state, playerCount, worldProtocols を更新できます。

draft

Endpoint

Method
GET
Path
/public/me.virmesh.worldInstance.getInstance
Auth
none
Host
VirMesh.WorldServer

Request schema

query.worldIdstringRequired

対象 instance が属する world identifier です。

query.instanceIdstringRequired

WorldServer が割り当てた instance identifier です。

Request example

{
  "query": {
    "worldId": "medi:world:ed25519:base64url-world-public-key",
    "instanceId": "inst_01HZY8K7N2Q4Y6Z8A0B1C2D3E4"
  }
}

Responses

200
status+me.virmesh.success.worldInstanceResolved

world instance が正常に解決されたことを示します。

Response body

payload.instanceworldInstanceRequired

解決された instance です。

References obj+me.virmesh.worldInstance.instance : WorldServer 上で稼働している world instance を表す object です。

idstringRequired

WorldServer が割り当てる instance identifier です。不透明な文字列として扱います。

worldIdstringRequired

この instance が属する world identifier です。形式は medi:world:<scheme>:<publicKey> です。

endpointstringRequired

この instance を管理する WorldServer の absolute URL です。

namestringOptional

表示用の instance 名です。

statestringRequired

open, full, closed のいずれかです。

playerCountintegerRequired

現在参加している player 数です。

capacityintegerRequired

参加可能な最大 player 数です。

joinPolicystringRequired

public, invite, private のいずれかです。

createdAtintegerRequired

instance を作成した epoch second です。

updated_atintegerRequired

instance metadata を更新した epoch second です。

worldProtocolsobject[]Required

この instance に接続するための protocol 一覧です。各要素は name, version, information を持ちます。

worldProtocols[].namestringRequired

protocol identifier です。例: me.virmesh.world.websocket

worldProtocols[].versionstringRequired

protocol version です。

worldProtocols[].informationobjectRequired

当該プロトコルがこの instance への接続に必要とするパラメータです。キー・型・意味は worldProtocols[].name で識別されるプロトコル仕様が定義します。

Response example

{
  "payload": {
    "instance": {
      "id": "inst_01HZY8K7N2Q4Y6Z8A0B1C2D3E4",
      "worldId": "medi:world:ed25519:base64url-world-public-key",
      "endpoint": "https://worlds.example.com/",
      "name": "Main",
      "state": "open",
      "playerCount": 12,
      "capacity": 32,
      "joinPolicy": "public",
      "createdAt": 1770000000,
      "updated_at": 1770000100,
      "worldProtocols": [
        {
          "name": "me.virmesh.world.websocket",
          "version": "1.0.0",
          "information": {
            "uri": "wss://worlds.example.com/instances/inst_01HZY8K7N2Q4Y6Z8A0B1C2D3E4/session"
          }
        }
      ]
    }
  }
}

me.virmesh.worldInstance.getInstance が正常終了し、指定された instance を返したことを示します。

400
status+me.virmesh.http.invalid_query

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

この status は route が期待する query parameter の条件を満たしていない場合に返ります。 resolveHandle では idhandle の同時指定、未指定、未知の key を拒否します。 resolveWorld では worldAddressworldId の同時指定、未指定、未知の 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.world.not_found

指定された world が見つからないことを示します。

この status は query.worldId に対応する world manifest を WorldServer が保持していない場合に返ります。

Status payload

payload.messagestringRequired

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

404
status+me.virmesh.worldInstance.not_found

指定された world instance が見つからないことを示します。

この status は query.instanceId に対応する instance を WorldServer が保持していない場合に返ります。

Status payload

payload.messagestringRequired

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