games.cavu.clientFrame
Frames a client sends up the games.cavu.subscribeSession socket (DAG-CBOR event-stream framing: header {op:1, t:'#join'|'#intent'|'#ping'} + body).
Details · object
| Kind | object |
|---|---|
| Authority | cavu.games |
| Indexed |
Checks
Valid Lint pass{
"$type": "com.atproto.lexicon.schema",
"defs": {
"intent": {
"description": "A game intent. The host stamps `viewer` and `serverTime` before the game's reduce() sees it; any client-sent values for those are overwritten.",
"properties": {
"intent": {
"description": "Typed by the game: games.cavu.<game>.defs#intent.",
"type": "unknown"
},
"seq": {
"description": "Client sequence number; echoed back as `ack` in snapshots so the client can drop confirmed predictions.",
"minimum": 1,
"type": "integer"
}
},
"required": [
"seq",
"intent"
],
"type": "object"
},
"join": {
"description": "Enter a game room. Rooms are chosen by the server for games that declare them (e.g. one room per UTC day).",
"properties": {
"game": {
"description": "Pack id, e.g. 'haiku-day'.",
"maxLength": 64,
"type": "string"
},
"room": {
"maxLength": 128,
"type": "string"
},
"viewer": {
"description": "Guest id. Superseded by the authenticated DID once atproto OAuth lands.",
"maxLength": 256,
"type": "string"
}
},
"required": [
"game",
"viewer"
],
"type": "object"
},
"main": {
"description": "Frames a client sends up the games.cavu.subscribeSession socket (DAG-CBOR event-stream framing: header {op:1, t:'#join'|'#intent'|'#ping'} + body).",
"properties": {
"frame": {
"refs": [
"#join",
"#intent",
"#ping"
],
"type": "union"
}
},
"required": [
"frame"
],
"type": "object"
},
"ping": {
"properties": {},
"type": "object"
}
},
"id": "games.cavu.clientFrame",
"lexicon": 1
}