{
"$type": "com.atproto.lexicon.schema",
"defs": {
"gradedLine": {
"properties": {
"tiles": {
"items": {
"ref": "#gradedTile",
"type": "ref"
},
"type": "array"
}
},
"required": [
"tiles"
],
"type": "object"
},
"gradedTile": {
"properties": {
"correct": {
"type": "boolean"
},
"id": {
"maxLength": 32,
"type": "string"
}
},
"required": [
"id",
"correct"
],
"type": "object"
},
"intent": {
"refs": [
"#place",
"#submit"
],
"type": "union"
},
"place": {
"description": "Move a tile. 0 = the bank, 1-3 = poem lines. The missing word ('missing') may be placed once per line.",
"properties": {
"from": {
"maximum": 3,
"minimum": 0,
"type": "integer"
},
"index": {
"description": "1-based insert position in the target line after removal from the source; default end.",
"minimum": 1,
"type": "integer"
},
"item": {
"maxLength": 32,
"type": "string"
},
"to": {
"maximum": 3,
"minimum": 0,
"type": "integer"
},
"type": {
"const": "place",
"type": "string"
}
},
"required": [
"type",
"item",
"from",
"to"
],
"type": "object"
},
"result": {
"description": "Present only after this viewer submits. Reveals the solution.",
"properties": {
"decoy": {
"maxLength": 64,
"type": "string"
},
"lines": {
"items": {
"ref": "#gradedLine",
"type": "ref"
},
"type": "array"
},
"max_score": {
"minimum": 0,
"type": "integer"
},
"missing": {
"ref": "#word",
"type": "ref"
},
"score": {
"minimum": 0,
"type": "integer"
},
"solution": {
"items": {
"ref": "#solutionLine",
"type": "ref"
},
"type": "array"
}
},
"required": [
"score",
"max_score",
"lines",
"missing",
"solution",
"decoy"
],
"type": "object"
},
"scoreDetails": {
"description": "games.cavu.score `details` for Haiku Day: the puzzle number and which tiles were right, per line.",
"properties": {
"lines": {
"items": {
"ref": "#scoreLine",
"type": "ref"
},
"maxLength": 3,
"minLength": 3,
"type": "array"
},
"number": {
"minimum": 1,
"type": "integer"
}
},
"required": [
"number",
"lines"
],
"type": "object"
},
"scoreLine": {
"properties": {
"correct": {
"items": {
"type": "boolean"
},
"maxLength": 32,
"type": "array"
}
},
"required": [
"correct"
],
"type": "object"
},
"solutionLine": {
"properties": {
"words": {
"items": {
"ref": "#word",
"type": "ref"
},
"type": "array"
}
},
"required": [
"words"
],
"type": "object"
},
"submit": {
"description": "Grade the current lines. One try per day.",
"properties": {
"type": {
"const": "submit",
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
},
"tile": {
"properties": {
"id": {
"maxLength": 32,
"type": "string"
},
"syllables": {
"minimum": 1,
"type": "integer"
},
"text": {
"maxLength": 64,
"type": "string"
}
},
"required": [
"id",
"text",
"syllables"
],
"type": "object"
},
"view": {
"description": "project(state, viewer). `none` when no puzzle is scheduled for the day.",
"properties": {
"date": {
"maxLength": 10,
"type": "string"
},
"lines": {
"items": {
"items": {
"maxLength": 32,
"type": "string"
},
"type": "array"
},
"maxLength": 3,
"minLength": 3,
"type": "array"
},
"max_score": {
"minimum": 0,
"type": "integer"
},
"missing_id": {
"maxLength": 32,
"type": "string"
},
"next_at": {
"description": "Next puzzle, ms since epoch (UTC midnight).",
"type": "integer"
},
"none": {
"type": "boolean"
},
"number": {
"minimum": 1,
"type": "integer"
},
"result": {
"ref": "#result",
"type": "ref"
},
"tiles": {
"items": {
"ref": "#tile",
"type": "ref"
},
"type": "array"
}
},
"required": [
"date"
],
"type": "object"
},
"word": {
"properties": {
"syllables": {
"minimum": 1,
"type": "integer"
},
"text": {
"maxLength": 64,
"type": "string"
}
},
"required": [
"text",
"syllables"
],
"type": "object"
}
},
"description": "Haiku Day's types: scoreDetails ($type of a games.cavu.score record's details for game haiku-day) and the intents and views it exchanges over games.cavu.subscribeSession.",
"id": "games.cavu.haikuDay",
"lexicon": 1
}