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