Texecom Event Schemas

JSON Schema Documentation

Local Token Revoked Payload

Audit event emitted when identity-service revokes a panel's local-interface tokens by bumping the generation (PLAT-295): every commissioning token for the panel, or every emergency BLE token for one user on the panel. Published on identity.outbox.external from identity-service apps/auth/src/domains/local-tokens/audit.ts, after the DynamoDB bump has landed. Emitted only when the call has an acting account. At-least-once, not transactional with the DynamoDB write.

$idhttps://schemas.texecom-prod.com/v2/events/payload/service/identity/local_token/revoked/v1.0.0.json
$schemahttp://json-schema.org/draft-07/schema

Properties

NameType
serialString
scopeString
generationInteger
actorAccountIdString
subjectAccountIdString

serial

Description Serial number of the panel the token is for.
TypeString
Required Yes
Min Length 1

scope

Description Which local-interface token: 'commissioning' (installer commissioning token, one generation per panel) or 'ble' (emergency BLE token, one generation per panel and user).
TypeString
Required Yes
Enum
  • commissioning
  • ble

generation

Description The new generation after the bump. Tokens minted at any lower generation are no longer accepted.
TypeInteger
Required Yes
Minimum 1

actorAccountId

Description UUID of the account that made the call (identity.accounts.account_id). Also the outbox aggregate.
TypeString
Required Yes
Format uuid

subjectAccountId

Description UUID of the user the emergency BLE token is for. identity-service sets it when, and only when, scope is 'ble'; a commissioning token has no per-user subject. Not enforced by this schema: the API Gateway model subset this repo publishes has no conditional keywords (if/then/else, oneOf).
TypeString
Required No
Format uuid

Schema

{
    "$id": "https://schemas.texecom-prod.com/v2/events/payload/service/identity/local_token/revoked/v1.0.0.json",
    "$schema": "http://json-schema.org/draft-07/schema",
    "title": "Local Token Revoked Payload",
    "description": "Audit event emitted when identity-service revokes a panel's local-interface tokens by bumping the generation (PLAT-295): every commissioning token for the panel, or every emergency BLE token for one user on the panel. Published on identity.outbox.external from identity-service apps/auth/src/domains/local-tokens/audit.ts, after the DynamoDB bump has landed. Emitted only when the call has an acting account. At-least-once, not transactional with the DynamoDB write.",
    "type": "object",
    "properties": {
        "serial": {
            "description": "Serial number of the panel the token is for.",
            "type": "string",
            "minLength": 1
        },
        "scope": {
            "description": "Which local-interface token: 'commissioning' (installer commissioning token, one generation per panel) or 'ble' (emergency BLE token, one generation per panel and user).",
            "type": "string",
            "enum": [
                "commissioning",
                "ble"
            ]
        },
        "generation": {
            "description": "The new generation after the bump. Tokens minted at any lower generation are no longer accepted.",
            "type": "integer",
            "minimum": 1
        },
        "actorAccountId": {
            "description": "UUID of the account that made the call (identity.accounts.account_id). Also the outbox aggregate.",
            "type": "string",
            "format": "uuid"
        },
        "subjectAccountId": {
            "description": "UUID of the user the emergency BLE token is for. identity-service sets it when, and only when, scope is 'ble'; a commissioning token has no per-user subject. Not enforced by this schema: the API Gateway model subset this repo publishes has no conditional keywords (if/then/else, oneOf).",
            "type": "string",
            "format": "uuid"
        }
    },
    "required": [
        "serial",
        "scope",
        "generation",
        "actorAccountId"
    ],
    "additionalProperties": false
}