# Gate Webhooks Gate webhooks are triggered by events related to warehouse gates. ## Overview For gate webhooks: - `category`: `GATE` - `triggerName`: One of the available gate events (see below) - `payload`: Contains the Gate object as returned by the Integration API For complete webhook structure and field descriptions, see [Webhooks](/webhooks/webhooks). ## Available Events - `GATE_STATUS_CHANGE` - Fired when status changes between AVAILABLE, LOADING, OUT_OF_SERVICE - `GATE_UNAUTHORIZED_LOADING_ADDED` - Fired when unauthorized loading is added to the gate - `GATE_UNAUTHORIZED_LOADING_RESOLVED` - Fired when unauthorized loading is resolved (suppressed when resolution is due to status change to LOADING) ## Event Details ### 1. Gate Status Change Event **Trigger**: `GATE_STATUS_CHANGE` Fired when gate status changes between AVAILABLE, LOADING, and OUT_OF_SERVICE states. ```json { "category": "GATE", "webhookUuid": "92e1b4b0-2f7d-4cbd-8c0b-efc1a1b3f001", "eventIdentifier": "evt-6c1d9f2a-7b04-4e51-9f3a-2a1c0b7d5e10", "triggerName": "GATE_STATUS_CHANGE", "triggerTime": 1756124061881, "entityExternalId": "GATE-12A", "entityUuid": "f1f6b1a7-4bde-4e7a-9c0c-0fcbab12d001", "payload": { "uuid": "ea1a1775-e9a4-4211-ae8d-1b3a6511de2a", "createDate": 1749649124552, "updateDate": 1756289187591, "externalIdentifier": "GATE-12A", "name": "Gate 12A", "status": "LOADING", "unauthorizedLoadings": [], "unauthorizedLoadingsTruncated": false, "totalUnauthorizedLoadingsCount": 0 } } ``` ### 2. Gate Unauthorized Loading Added Event **Trigger**: `GATE_UNAUTHORIZED_LOADING_ADDED` Fired when unauthorized loading is added to a gate with status `AVAILABLE`. This occurs when warehouse operators load items without an active manifest, creating a discrepancy between expected and actual loading operations. ```json { "category": "GATE", "webhookUuid": "e6a6fbe3-1ec5-4db1-9a42-7e7b1a0c9002", "eventIdentifier": "evt-a29f7c14-3d8b-4c62-8e05-9b1f6a2d4c33", "triggerName": "GATE_UNAUTHORIZED_LOADING_ADDED", "triggerTime": 1756124099999, "entityExternalId": "GATE-12A", "entityUuid": "f1f6b1a7-4bde-4e7a-9c0c-0fcbab12d001", "payload": { "uuid": "ea1a1775-e9a4-4211-ae8d-1b3a6511de2a", "createDate": 1749649124552, "updateDate": 1756289187591, "externalIdentifier": "GATE-12A", "name": "Gate 12A", "status": "AVAILABLE", "unauthorizedLoadings": [ { "uuid": "f907c4a7-0a57-4340-8ee8-6a4343284746", "createDate": 1756289223562, "updateDate": 1756289223562, "track": { "uuid": "39a64455-9ea9-4f74-8ef0-971ee16d35eb", "trackCode": "000-130", "wmsId": "local-33121364151", "status": "ACTIVE" }, "trackIdentifier": "local-33121364151", "markerValue": "33121434156", "loadedDate": 1756289223031, "loadingStatus": "UNAUTHORIZED_LOADED" } ], "unauthorizedLoadingsTruncated": false, "totalUnauthorizedLoadingsCount": 1 } } ``` ### 3. Gate Unauthorized Loading Resolved Event **Trigger**: `GATE_UNAUTHORIZED_LOADING_RESOLVED` Fired when unauthorized loading is resolved. **Note**: Suppressed when resolution is due to status change to LOADING. In that case, only `GATE_STATUS_CHANGE` is emitted to prevent duplicate events. ## Payload Structure For webhook header fields (category, eventIdentifier, triggerName, triggerTime, entityExternalId, entityUuid), see [Webhooks](/webhooks/webhooks). ### Gate Payload Fields | Field | Type | Description | | --- | --- | --- | | `uuid` | String | Gate UUID | | `createDate` | Long | Unix timestamp when gate was created | | `updateDate` | Long | Unix timestamp when gate was last updated | | `externalIdentifier` | String | Gate external identifier | | `name` | String | Gate display name | | `status` | String | Gate status (AVAILABLE, LOADING, OUT_OF_SERVICE) | | `unauthorizedLoadings` | Array | Unauthorized loading events (descending by loadedDate, max 50 items) | | `unauthorizedLoadingsTruncated` | Boolean | Whether the list is truncated due to 50-item limit | | `totalUnauthorizedLoadingsCount` | Number | Total count of active unauthorized loadings (always present; use when the array is truncated) | ### Unauthorized Loading Object | Field | Type | Description | | --- | --- | --- | | `uuid` | String | Unauthorized loading UUID | | `createDate` | Long | Unix timestamp when loading was created | | `updateDate` | Long | Unix timestamp when loading was last updated | | `track` | Object | Track object with loading information | | `trackIdentifier` | String | Unique identifier for the track | | `markerValue` | String | Marker identifier for tracking | | `loadedDate` | Number | Unix timestamp when loaded | | `loadingStatus` | String | Current loading status (UNAUTHORIZED_LOADED, etc.) | ### Track Object | Field | Type | Description | | --- | --- | --- | | `uuid` | String | Track UUID | | `trackCode` | String | Track code identifier | | `wmsId` | String | WMS system identifier | | `status` | String | Track status (ACTIVE, INACTIVE, etc.) | ## Event Suppression Rules When resolving unauthorized items due to status change to LOADING: - **Do NOT emit** `GATE_UNAUTHORIZED_LOADING_RESOLVED` - **Emit only** `GATE_STATUS_CHANGE` This prevents duplicate events and provides complete state change information. ## Payload Limits - `unauthorizedLoadings` array is capped at 50 items - When `unauthorizedLoadingsTruncated: true`, use `totalUnauthorizedLoadingsCount` for full scope - Use additional API calls if you need access to all unauthorized loadings