{
"id": "org.swappulse.challenge",
"defs": {
"main": {
"key": "tid",
"type": "record",
"record": {
"type": "object",
"required": [
"challengeType",
"title",
"status",
"createdAt"
],
"properties": {
"goal": {
"type": "object",
"properties": {
"metric": {
"type": "string"
},
"target": {
"type": "integer"
},
"filters": {
"type": "object"
}
}
},
"mode": {
"type": "string",
"knownValues": [
"collective",
"guild",
"competitive"
]
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"maxLength": 10
},
"rules": {
"type": "string",
"maxLength": 2000
},
"scope": {
"type": "string",
"knownValues": [
"global",
"circle"
]
},
"title": {
"type": "string",
"maxLength": 100
},
"endsAt": {
"type": "string",
"format": "datetime"
},
"reward": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"shared": {
"type": "boolean"
},
"badgeId": {
"type": "string"
},
"themeId": {
"type": "string"
}
}
},
"status": {
"type": "string",
"knownValues": [
"upcoming",
"active",
"voting",
"completed",
"cancelled"
]
},
"category": {
"type": "string",
"knownValues": [
"helpful-trader",
"accuracy-champion",
"community-builder",
"set-completer",
"shiny-hunter",
"journal-writer",
"meetup-organiser"
]
},
"imageUrl": {
"type": "string",
"format": "uri"
},
"startsAt": {
"type": "string",
"format": "datetime"
},
"circleRef": {
"type": "string",
"format": "at-uri"
},
"createdAt": {
"type": "string",
"format": "datetime"
},
"creatorDid": {
"type": "string",
"format": "did"
},
"winnerDids": {
"type": "array",
"items": {
"type": "string",
"format": "did"
}
},
"budgetLimit": {
"type": "number"
},
"description": {
"type": "string",
"maxLength": 2000
},
"rewardBadge": {
"type": "string",
"maxLength": 50
},
"votingEndsAt": {
"type": "string",
"format": "datetime"
},
"challengeType": {
"type": "string",
"knownValues": [
"set_sprint",
"budget_deck",
"pull_of_week",
"community_goal"
]
},
"guildApproved": {
"type": "boolean"
},
"publisherName": {
"type": "string"
},
"targetSetCode": {
"type": "string"
},
"leaderboardConfig": {
"type": "object"
}
}
},
"description": "A community challenge."
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1,
"revision": 1,
"description": "A community challenge definition, mirrored to AT Protocol so challenges are discoverable across instances. Participation model is set by mode: collective, competitive, or guild."
}