TANITARDevelopers
WebhooksEvent catalogGamification

gamification.mission.completed

Version 1 of the gamification.mission.completed webhook event.

The gamification.mission.completed event.

Event typegamification.mission.completed
Schema version1
Routing keyevent.gamification.mission.completed.v1
Produced byGamification
Schemaurn:defendr:contract:gamification:mission-completed:1

data fields

FieldTypeRequiredDescription
accountIdstringyes
playerIdstringyes
missionKeystringyes
missionRevisionintegeryes
occurrenceintegeryes
periodStartstring or null (date-time)yes
completedAtstring (date-time)yes
rewardsarray of objectyes
rewards[].rewardType"xp", "battlePassXP", "chest", "currency", "badge"yes
rewards[].amountinteger or nullno
rewards[].keystring or nullno
rewards[].settlement"settled", "deferred", "rejected"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-000000000017
webhook-timestamp: 1800000000
webhook-signature: v1,kL7l8MR7rhOzAZ14dKOulqpa3ta5QJvK9rw67r9NfXk=
tanitar-event-type: gamification.mission.completed
tanitar-schema-version: 1
tanitar-delivery-attempt: 1

{"messageId":"evt_00000000-0000-4000-8000-000000000017","kind":"event","type":"gamification.mission.completed","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-000000000017","data":{"accountId":"acct_demo","playerId":"player_demo","missionKey":"core-win-valorant","missionRevision":1,"occurrence":1,"periodStart":null,"completedAt":"2026-09-08T00:00:00.000Z","rewards":[{"rewardType":"xp","amount":300,"key":null,"settlement":"settled"},{"rewardType":"battlePassXP","amount":75,"key":null,"settlement":"deferred"}]}}

The same body, formatted:

{
  "messageId": "evt_00000000-0000-4000-8000-000000000017",
  "kind": "event",
  "type": "gamification.mission.completed",
  "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-000000000017",
  "data": {
    "accountId": "acct_demo",
    "playerId": "player_demo",
    "missionKey": "core-win-valorant",
    "missionRevision": 1,
    "occurrence": 1,
    "periodStart": null,
    "completedAt": "2026-09-08T00:00:00.000Z",
    "rewards": [
      {
        "rewardType": "xp",
        "amount": 300,
        "key": null,
        "settlement": "settled"
      },
      {
        "rewardType": "battlePassXP",
        "amount": 75,
        "key": null,
        "settlement": "deferred"
      }
    ]
  }
}

JSON Schema

urn:defendr:contract:gamification:mission-completed:1
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:defendr:contract:gamification:mission-completed:1",
  "title": "Gamification mission completed event payload",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "accountId",
    "playerId",
    "missionKey",
    "missionRevision",
    "occurrence",
    "periodStart",
    "completedAt",
    "rewards"
  ],
  "properties": {
    "accountId": {
      "type": "string",
      "minLength": 1
    },
    "playerId": {
      "type": "string",
      "minLength": 1
    },
    "missionKey": {
      "type": "string",
      "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
    },
    "missionRevision": {
      "type": "integer",
      "minimum": 1
    },
    "occurrence": {
      "type": "integer",
      "minimum": 1
    },
    "periodStart": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time"
    },
    "completedAt": {
      "type": "string",
      "format": "date-time"
    },
    "rewards": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "rewardType",
          "settlement"
        ],
        "properties": {
          "rewardType": {
            "enum": [
              "xp",
              "battlePassXP",
              "chest",
              "currency",
              "badge"
            ]
          },
          "amount": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 1
          },
          "key": {
            "type": [
              "string",
              "null"
            ],
            "minLength": 1
          },
          "settlement": {
            "enum": [
              "settled",
              "deferred",
              "rejected"
            ]
          }
        }
      }
    }
  }
}

On this page