{
"$type": "com.atproto.lexicon.schema",
"defs": {
"main": {
"description": "A record of a harvest minigame round played by a user",
"key": "tid",
"record": {
"properties": {
"clientVersion": {
"description": "Version of the Anisota client",
"type": "string"
},
"createdAt": {
"description": "When the record was created",
"format": "datetime",
"type": "string"
},
"earlyHarvests": {
"description": "Number of shapes harvested early (during growth phase)",
"minimum": 0,
"type": "integer"
},
"efficiencyBonus": {
"description": "Bonus points awarded for harvest efficiency (percentage of shapes collected)",
"minimum": 0,
"type": "integer"
},
"finalScore": {
"description": "Final score achieved in the round",
"minimum": 0,
"type": "integer"
},
"gameContext": {
"description": "Where the game was played: dedicated minigame page or harvest loading screen",
"enum": [
"dedicated",
"loading"
],
"type": "string"
},
"lateHarvests": {
"description": "Number of shapes harvested late (during decay phase)",
"minimum": 0,
"type": "integer"
},
"peakHarvestRate": {
"description": "Percentage indicating how close on average the user harvested at peak timing (scaled by 100, so 9550 = 95.50%)",
"maximum": 10000,
"minimum": 0,
"type": "integer"
},
"peakRateBonus": {
"description": "Bonus points awarded for achieving high peak harvest rate",
"minimum": 0,
"type": "integer"
},
"perfectHarvests": {
"description": "Number of shapes harvested at perfect (peak) timing",
"minimum": 0,
"type": "integer"
},
"playedAt": {
"description": "When the game round was played (ISO 8601)",
"format": "datetime",
"type": "string"
},
"pointsPerSecond": {
"description": "Average rate of points scored per second (scaled by 100, so 123 = 1.23 points/second)",
"minimum": 0,
"type": "integer"
},
"rarityBreakdown": {
"ref": "#rarityBreakdown",
"type": "ref"
},
"roundDuration": {
"description": "Duration of the round in seconds",
"minimum": 0,
"type": "integer"
},
"shapesCollected": {
"description": "Total number of shapes collected/harvested",
"minimum": 0,
"type": "integer"
},
"shapesMissed": {
"description": "Total number of shapes that expired without being harvested",
"minimum": 0,
"type": "integer"
},
"totalShapesSpawned": {
"description": "Total number of shapes spawned during the round (collected + missed)",
"minimum": 0,
"type": "integer"
}
},
"required": [
"playedAt",
"roundDuration",
"gameContext",
"finalScore",
"shapesCollected"
],
"type": "object"
},
"type": "record"
},
"rarityBreakdown": {
"description": "Count of each rarity level collected",
"properties": {
"common": {
"description": "Number of common (triangle) shapes collected",
"minimum": 0,
"type": "integer"
},
"rare": {
"description": "Number of rare (star) shapes collected",
"minimum": 0,
"type": "integer"
},
"uncommon": {
"description": "Number of uncommon (diamond) shapes collected",
"minimum": 0,
"type": "integer"
},
"veryCommon": {
"description": "Number of very common (circle) shapes collected",
"minimum": 0,
"type": "integer"
},
"veryRare": {
"description": "Number of very rare (sparkle) shapes collected",
"minimum": 0,
"type": "integer"
}
},
"type": "object"
}
},
"id": "net.anisota.harvest.minigame",
"lexicon": 1
}