{ "paths": { "/api/v1/public/clans": { "get": { "tags": [ "Public · Example Game" ], "summary": "Every clan the game has reported", "description": "The clans this deployment knows about, in the game’s own vocabulary. Core calls these Teams and serves its own view of them at `/public/teams`; this route adds what core has no schema for. Answers with an empty list rather than failing when the game is unreachable — the list is a page, not a sync.", "responses": { "200": { "description": "The clans", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExamplegameClanList" } } } }, "500": { "description": "Internal Server Error" } } } }, "/api/v1/public/clans/{externalId}": { "get": { "tags": [ "Public · Example Game" ], "summary": "One clan and its roster", "description": "A clan by the game’s own id, with the roster as the game reported it. This is the module’s unprojected view of its OWN data and it deliberately withholds the member key and any linked account id — the roster core serves at `/public/teams/{slug}/roster` is the one that runs through `projectRoster`, and a module route that published more than core’s would route around its own visibility rules.", "parameters": [ { "name": "externalId", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "The clan", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExamplegameClan" } } } }, "404": { "description": "No such clan", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "500": { "description": "Internal Server Error" } } } }, "/api/v1/public/world/status": { "get": { "tags": [ "Public · Example Game" ], "summary": "The game world’s current status", "description": "What the game server last reported: whether it is up, how many players are on, and when that was. Answers with `online: false` and `stale: true` rather than failing when the game or its sidecar is unreachable — the site’s availability does not depend on the game’s.", "responses": { "200": { "description": "The world’s status", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExamplegameWorldStatus" } } } }, "500": { "description": "Internal Server Error" } } } } }, "tags": [ { "name": "Public · Example Game", "description": "Live world data and the game’s clans, as last reported by the game server" } ], "components": { "schemas": { "ExamplegameWorldStatus": { "type": "object", "properties": { "type": { "type": "string", "example": "object" }, "description": { "type": "string", "example": "The game world’s status (GET /public/world/status)." }, "properties": { "type": "object", "properties": { "online": { "type": "object", "properties": { "type": { "type": "string", "example": "boolean" }, "example": { "type": "boolean", "example": true } } }, "players": { "type": "object", "properties": { "type": { "type": "string", "example": "integer" }, "example": { "type": "number", "example": 12 } } }, "worldName": { "type": "object", "properties": { "type": { "type": "string", "example": "string" }, "nullable": { "type": "boolean", "example": true }, "example": { "type": "string", "example": "Example World" } } }, "updatedAt": { "type": "object", "properties": { "type": { "type": "string", "example": "string" }, "format": { "type": "string", "example": "date-time" }, "nullable": { "type": "boolean", "example": true } } }, "stale": { "type": "object", "properties": { "type": { "type": "string", "example": "boolean" }, "description": { "type": "string", "example": "Has nothing reported in longer than the freshness window? A stale row is reported offline." }, "example": { "type": "boolean", "example": false } } } } } } }, "ExamplegameClanList": { "type": "object", "properties": { "type": { "type": "string", "example": "object" }, "description": { "type": "string", "example": "Every clan the game has reported (GET /public/clans)." }, "properties": { "type": "object", "properties": { "stale": { "type": "object", "properties": { "type": { "type": "string", "example": "boolean" }, "example": { "type": "boolean", "example": false } } }, "clans": { "type": "object", "properties": { "type": { "type": "string", "example": "array" }, "items": { "$ref": "#/components/schemas/ExamplegameClanSummary" } } } } } } }, "ExamplegameClanSummary": { "type": "object", "properties": { "type": { "type": "string", "example": "object" }, "properties": { "type": "object", "properties": { "externalId": { "type": "object", "properties": { "type": { "type": "string", "example": "string" }, "example": { "type": "string", "example": "clan-1" } } }, "name": { "type": "object", "properties": { "type": { "type": "string", "example": "string" }, "example": { "type": "string", "example": "The Gilded Company" } } }, "abbr": { "type": "object", "properties": { "type": { "type": "string", "example": "string" }, "nullable": { "type": "boolean", "example": true }, "example": { "type": "string", "example": "GC" } } }, "memberCount": { "type": "object", "properties": { "type": { "type": "string", "example": "integer" }, "example": { "type": "number", "example": 3 } } } } } } }, "ExamplegameClan": { "type": "object", "properties": { "type": { "type": "string", "example": "object" }, "description": { "type": "string", "example": "One clan and the roster this viewer may see (GET /public/clans/{externalId})." }, "properties": { "type": "object", "properties": { "externalId": { "type": "object", "properties": { "type": { "type": "string", "example": "string" }, "example": { "type": "string", "example": "clan-1" } } }, "name": { "type": "object", "properties": { "type": { "type": "string", "example": "string" }, "example": { "type": "string", "example": "The Gilded Company" } } }, "abbr": { "type": "object", "properties": { "type": { "type": "string", "example": "string" }, "nullable": { "type": "boolean", "example": true }, "example": { "type": "string", "example": "GC" } } }, "memberCount": { "type": "object", "properties": { "type": { "type": "string", "example": "integer" }, "example": { "type": "number", "example": 3 } } }, "projected": { "type": "object", "properties": { "type": { "type": "string", "example": "boolean" }, "description": { "type": "string", "example": "Was the audience rule answered? False means the roster was withheld because the question could not be resolved — which is a different thing from a clan with no members." }, "example": { "type": "boolean", "example": true } } }, "members": { "type": "object", "properties": { "type": { "type": "string", "example": "array" }, "description": { "type": "string", "example": "Deliberately carries no member key and no linked account id. Both exist and both go to core on the Team provider’s envelope; neither belongs on a public page." }, "items": { "$ref": "#/components/schemas/ExamplegameClanMember" } } } } } } }, "ExamplegameClanMember": { "type": "object", "properties": { "type": { "type": "string", "example": "object" }, "properties": { "type": "object", "properties": { "displayName": { "type": "object", "properties": { "type": { "type": "string", "example": "string" }, "nullable": { "type": "boolean", "example": true }, "example": { "type": "string", "example": "Aldric" } } }, "rankLabel": { "type": "object", "properties": { "type": { "type": "string", "example": "string" }, "nullable": { "type": "boolean", "example": true }, "example": { "type": "string", "example": "Warlord" } } }, "leader": { "type": "object", "properties": { "type": { "type": "string", "example": "boolean" }, "example": { "type": "boolean", "example": true } } }, "online": { "type": "object", "properties": { "type": { "type": "string", "example": "boolean" }, "example": { "type": "boolean", "example": true } } } } } } } } } }