gamification.battle-pass.progressed
Version 1 of the gamification.battle-pass.progressed webhook event.
A player earned battle-pass XP toward the active season through the single funnel every source shares: a mission's battlePassXP slot, a chest drop, or the flat amount the season declares for an ingested event. sourceKey is the ledger identity the award was deduplicated on, so a replayed source publishes nothing new. tierUp states whether this award reached a new tier; the tier is monotonic and never moves backwards.
| Event type | gamification.battle-pass.progressed |
| Schema version | 1 |
| Routing key | event.gamification.battle-pass.progressed.v1 |
| Produced by | Gamification |
| Schema | urn:defendr:contract:gamification:battle-pass-progressed:1 |
data fields
| Field | Type | Required | Description |
|---|---|---|---|
accountId | string | yes | |
playerId | string | yes | |
seasonId | string | yes | |
seasonNumber | integer | yes | |
amount | integer | yes | |
source | "mission", "chest", "event" | yes | |
sourceKey | string | yes | |
currentExperience | integer | yes | |
previousTier | integer | yes | |
currentTier | integer | yes | |
tierUp | boolean | yes | |
progressedAt | 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-000000000014
webhook-timestamp: 1800000000
webhook-signature: v1,yny4N7+L7by7zhy3dh53R1IuH6jNslC5ViY7PrEPQXk=
tanitar-event-type: gamification.battle-pass.progressed
tanitar-schema-version: 1
tanitar-delivery-attempt: 1
{"messageId":"evt_00000000-0000-4000-8000-000000000014","kind":"event","type":"gamification.battle-pass.progressed","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-000000000014","data":{"accountId":"acct_demo","playerId":"player_demo","seasonId":"66e0a1b2c3d4e5f6a7b8c9d1","seasonNumber":1,"amount":156,"source":"chest","sourceKey":"66e0a1b2c3d4e5f6a7b8c9d0:0","currentExperience":256,"previousTier":1,"currentTier":2,"tierUp":true,"progressedAt":"2026-09-11T00:00:00.000Z"}}The same body, formatted:
{
"messageId": "evt_00000000-0000-4000-8000-000000000014",
"kind": "event",
"type": "gamification.battle-pass.progressed",
"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-000000000014",
"data": {
"accountId": "acct_demo",
"playerId": "player_demo",
"seasonId": "66e0a1b2c3d4e5f6a7b8c9d1",
"seasonNumber": 1,
"amount": 156,
"source": "chest",
"sourceKey": "66e0a1b2c3d4e5f6a7b8c9d0:0",
"currentExperience": 256,
"previousTier": 1,
"currentTier": 2,
"tierUp": true,
"progressedAt": "2026-09-11T00:00:00.000Z"
}
}JSON Schema
urn:defendr:contract:gamification:battle-pass-progressed:1
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:defendr:contract:gamification:battle-pass-progressed:1",
"title": "Gamification battle pass progressed event payload",
"description": "A player earned battle-pass XP toward the active season through the single funnel every source shares: a mission's `battlePassXP` slot, a chest drop, or the flat amount the season declares for an ingested event. `sourceKey` is the ledger identity the award was deduplicated on, so a replayed source publishes nothing new. `tierUp` states whether this award reached a new tier; the tier is monotonic and never moves backwards.",
"type": "object",
"additionalProperties": false,
"required": [
"accountId",
"playerId",
"seasonId",
"seasonNumber",
"amount",
"source",
"sourceKey",
"currentExperience",
"previousTier",
"currentTier",
"tierUp",
"progressedAt"
],
"properties": {
"accountId": {
"type": "string",
"minLength": 1
},
"playerId": {
"type": "string",
"minLength": 1
},
"seasonId": {
"type": "string",
"minLength": 1
},
"seasonNumber": {
"type": "integer",
"minimum": 1
},
"amount": {
"type": "integer",
"minimum": 1
},
"source": {
"enum": [
"mission",
"chest",
"event"
]
},
"sourceKey": {
"type": "string",
"minLength": 1
},
"currentExperience": {
"type": "integer",
"minimum": 0
},
"previousTier": {
"type": "integer",
"minimum": 0
},
"currentTier": {
"type": "integer",
"minimum": 0
},
"tierUp": {
"type": "boolean"
},
"progressedAt": {
"type": "string",
"format": "date-time"
}
}
}