TANITARDevelopers
WebhooksEvent catalogGamification

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 typegamification.battle-pass.progressed
Schema version1
Routing keyevent.gamification.battle-pass.progressed.v1
Produced byGamification
Schemaurn:defendr:contract:gamification:battle-pass-progressed:1

data fields

FieldTypeRequiredDescription
accountIdstringyes
playerIdstringyes
seasonIdstringyes
seasonNumberintegeryes
amountintegeryes
source"mission", "chest", "event"yes
sourceKeystringyes
currentExperienceintegeryes
previousTierintegeryes
currentTierintegeryes
tierUpbooleanyes
progressedAtstring (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"
    }
  }
}

On this page