gamification.battle-pass.tier-claimed
Version 1 of the gamification.battle-pass.tier-claimed webhook event.
A player claimed a tier reward on one track of the active season. Published once the reward settled: xp and chest settle inside the claim transaction, a badge through the badge intent, and a currency reward when Reward Management applied (settled) or refused (rejected) its grant — a rejected or timed-out claim releases the tier, and the next claim is a new attempt with its own grant identity. (seasonId, playerId, tier, track, attempt) is the claim identity.
| Event type | gamification.battle-pass.tier-claimed |
| Schema version | 1 |
| Routing key | event.gamification.battle-pass.tier-claimed.v1 |
| Produced by | Gamification |
| Schema | urn:defendr:contract:gamification:battle-pass-tier-claimed:1 |
data fields
| Field | Type | Required | Description |
|---|---|---|---|
accountId | string | yes | |
playerId | string | yes | |
seasonId | string | yes | |
tier | integer | yes | |
track | "free", "premium" | yes | |
attempt | integer | yes | |
reward | object | yes | |
reward.rewardType | "xp", "currency", "chest", "badge" | yes | |
reward.amount | integer or null | yes | |
reward.key | string or null | yes | |
reward.settlement | "settled", "rejected" | yes | |
claimedAt | string (date-time) | yes |
Some fields are required only in particular states. The JSON Schema below is authoritative.
Example delivery
Signed with the example secret whsec_placeholder_example_webhooks_signing_secret, so you can check your verifier against it. See Verifying signatures.
POST /your/webhook/endpoint HTTP/1.1
content-type: application/json
webhook-id: whd_00000000-0000-4000-8000-000000000015
webhook-timestamp: 1800000000
webhook-signature: v1,AegN1UT9tRnHnlte4v9EvMZrCdQwsAPHTtFDpOKzCx0=
tanitar-event-type: gamification.battle-pass.tier-claimed
tanitar-schema-version: 1
tanitar-delivery-attempt: 1
{"messageId":"evt_00000000-0000-4000-8000-000000000015","kind":"event","type":"gamification.battle-pass.tier-claimed","schemaVersion":1,"occurredAt":"2027-01-15T10:00:00.000Z","producer":"gamification-service","accountId":"acc_11111111-1111-4111-8111-111111111111","correlationId":"corr_00000000-0000-4000-8000-000000000015","data":{"accountId":"acct_demo","playerId":"player_demo","seasonId":"66e0a1b2c3d4e5f6a7b8c9d1","tier":2,"track":"free","attempt":1,"reward":{"rewardType":"currency","amount":50,"key":"red","settlement":"settled"},"claimedAt":"2026-09-11T00:00:00.000Z"}}The same body, formatted:
{
"messageId": "evt_00000000-0000-4000-8000-000000000015",
"kind": "event",
"type": "gamification.battle-pass.tier-claimed",
"schemaVersion": 1,
"occurredAt": "2027-01-15T10:00:00.000Z",
"producer": "gamification-service",
"accountId": "acc_11111111-1111-4111-8111-111111111111",
"correlationId": "corr_00000000-0000-4000-8000-000000000015",
"data": {
"accountId": "acct_demo",
"playerId": "player_demo",
"seasonId": "66e0a1b2c3d4e5f6a7b8c9d1",
"tier": 2,
"track": "free",
"attempt": 1,
"reward": {
"rewardType": "currency",
"amount": 50,
"key": "red",
"settlement": "settled"
},
"claimedAt": "2026-09-11T00:00:00.000Z"
}
}JSON Schema
urn:defendr:contract:gamification:battle-pass-tier-claimed:1
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:defendr:contract:gamification:battle-pass-tier-claimed:1",
"title": "Gamification battle pass tier claimed event payload",
"description": "A player claimed a tier reward on one track of the active season. Published once the reward settled: `xp` and `chest` settle inside the claim transaction, a `badge` through the badge intent, and a `currency` reward when Reward Management applied (`settled`) or refused (`rejected`) its grant — a rejected or timed-out claim releases the tier, and the next claim is a new `attempt` with its own grant identity. `(seasonId, playerId, tier, track, attempt)` is the claim identity.",
"type": "object",
"additionalProperties": false,
"required": [
"accountId",
"playerId",
"seasonId",
"tier",
"track",
"attempt",
"reward",
"claimedAt"
],
"properties": {
"accountId": {
"type": "string",
"minLength": 1
},
"playerId": {
"type": "string",
"minLength": 1
},
"seasonId": {
"type": "string",
"minLength": 1
},
"tier": {
"type": "integer",
"minimum": 1
},
"track": {
"enum": [
"free",
"premium"
]
},
"attempt": {
"type": "integer",
"minimum": 1
},
"reward": {
"type": "object",
"additionalProperties": false,
"required": [
"rewardType",
"amount",
"key",
"settlement"
],
"properties": {
"rewardType": {
"enum": [
"xp",
"currency",
"chest",
"badge"
]
},
"amount": {
"type": [
"integer",
"null"
],
"minimum": 1
},
"key": {
"type": [
"string",
"null"
],
"minLength": 1
},
"settlement": {
"enum": [
"settled",
"rejected"
]
}
}
},
"claimedAt": {
"type": "string",
"format": "date-time"
}
}
}