TAŇBA-OOH Developers

Compliance event opened

Webhook city_event.opened

Sent to the organisation that the event belongs to when a rule finds a deviation, for example a silent screen or a wrong structure.

Headers we send

NameInTypeRequiredDescriptionExample
X-Tanba-Deliveryheaderstring (uuid)yesIdentifier of the delivery. It is the same on every retry; use it to ignore duplicates.9b2e4c60-1f7a-4d83-a5c6-3e8d0b7f2a11
X-Tanba-EventheaderstringyesThe event name.approval.issued
X-Tanba-Signatureheaderstringyest=<unix seconds>,v1=<hex HMAC-SHA256 of t + "." + the raw body, keyed with the webhook secret>. See the guide on webhook signatures.t=1790000000,v1=5f2d9c1a0b7e4d63a8c15e90f4b2d7a3c6e81f0594ab2d3c7e6f1a08b9d4c5e2

Body we send

application/json

NameTypeRequiredDescriptionExample
eventconstyesThe event name, the same as in the X-Tanba-Event header."city_event.opened"
occurred_atstring (date-time)yesWhen the event was stored."2026-10-07T09:00:04+05:00"
dataobjectyesThe event.
data.idstring (uuid)yesIdentifier of the event."2d6b8f10-3c9a-4f6e-b1d2-77a0e5c4b8a9"
data.rulestringyesThe rule that found the deviation."silent_screen"
data.severitystringyesHow quickly the event has to be answered. low, medium, high, critical
data.structurestringyesCode of the structure."ALM-0012"
data.approval_numberstringyesNumber of the approval concerned; empty when no approval is involved."TNB-2026-000123"
data.window_startstring (date-time)yesStart of the period the event covers."2026-10-06T00:00:00+05:00"
data.window_endstring (date-time)yesEnd of the period the event covers."2026-10-07T00:00:00+05:00"

Example

{
  "event": "city_event.opened",
  "occurred_at": "2026-10-07T09:00:04+05:00",
  "data": {
    "id": "2d6b8f10-3c9a-4f6e-b1d2-77a0e5c4b8a9",
    "rule": "silent_screen",
    "severity": "low",
    "structure": "ALM-0012",
    "approval_number": "TNB-2026-000123",
    "window_start": "2026-10-06T00:00:00+05:00",
    "window_end": "2026-10-07T00:00:00+05:00"
  }
}

Responses

200 The delivery is accepted. Any 2xx status counts; the body is ignored.

No body.

410 Any other status, or no answer within 10 seconds, counts as a failure and the delivery is retried.

No body.