Events
These events are emitted by the Inventory API (btrz-api-inventory) when manifest or schedule change requests are created or updated.
| Action | Event name |
|---|---|
| Creating a manifest's change request with pending status (POST /change-requests/manifests) | changeRequests.manifests.created |
| Editing a manifest's change request (PUT /change-requests/:id/manifests) | changeRequests.manifests.updated |
| Creating a schedule's change request with pending status (POST /change-requests/schedules) | changeRequests.schedules.created |
| Editing a schedule's change request (PUT /change-requests/:id/schedules) | changeRequests.schedules.updated |
Blocked change requests: When POST /change-requests/manifests or POST /change-requests/schedules fails validation, the API still returns 200 and persists a change request with status: "blocked" and a blockedReason. Blocked records do not emit changeRequests.manifests.created or changeRequests.schedules.created. Only change requests saved with status: "pending" trigger the corresponding created event.
Field descriptions — data (all events)
The data object in each payload contains the change request document. Common fields:
| Field | Type | Description |
|---|---|---|
| _id | string | Change request id (24 hex characters). |
| accountId | string | Account (provider) id. |
| type | string | "manifest" or "schedule". |
| status | string | pending, approved, rejected, or blocked. On changeRequests.manifests.created and changeRequests.schedules.created, this is always pending. |
| name | string | Friendly name (e.g. schedule display name and date/time). |
| operationId | string | Groups related change requests created together. |
| operationType | string | cancellation, change, or cut (manifest); or change (schedule). |
| request | object | The requested change (manifest or schedule payload). Structure depends on operationType. |
| audit | array | Audit trail of status updates (currentStatus, previousStatus, createdAt, createdBy). |
| blockedReason | string | Reason when status is blocked (e.g. "ERROR_CODE|message"). Empty on created-event payloads. |
| manifestId | string | Manifest id (manifest change requests only). |
| routeId | string | Route id. |
| scheduleId | string | Schedule id (UUID). |
| date | string | Date for the change (yyyy-mm-dd) (manifest only). |
| createdBy | string | User id that created the change request. |
| updatedBy | string | User id that last updated the change request. |
| createdAt | object | BzDate: creation time. |
| updatedAt | object | BzDate: last update time. |
For manifest change requests, request may contain status.newValue, legs (for change/cut), or operationType. For schedule change requests, request contains schedule fields (legs, dow, fromDateYYYYMMDD, toDateYYYYMMDD, time, displayName, etc.). See payload examples below for shapes.
Payload example manifest's change request created
These examples show changeRequests.manifests.created payloads. The change request status is always pending; blocked manifest change requests do not emit this event.
Cancellation operation
{
"attemptId": "2131877c-e4e2-421e-b4e1-2544ab990f67",
"created": 1770063742,
"data": {
"_id": "69810753364208071f15606b",
"accountId": "6601f1d64f95b505b8eb42e2",
"audit": [],
"blockedReason": "",
"createdAt": {
"offset": 0,
"value": "2026-02-02T20:21:39.253Z"
},
"createdBy": "68e3c6d55a958106e34b4f37",
"date": "2026-02-03",
"manifestId": "698106686407480628078729",
"name": "ACA-CHG - 2026-02-03 - 08:00",
"operationId": "johndoe@gmail.com-2026-02-02T20:21:39.135Z",
"operationType": "cancellation",
"request": {
"status": {
"newValue": "canceled"
}
},
"routeId": "6645004a2fc750051802d0ae",
"scheduleId": "579d3c05-9145-4a77-a25b-92a7f472295e",
"status": "pending",
"type": "manifest",
"updatedAt": {
"offset": 0,
"value": "2026-02-02T20:21:39.253Z"
},
"updatedBy": "68e3c6d55a958106e34b4f37"
},
"event": "changeRequests.manifests.created",
"id": "6de7da21-ab0e-4996-8eac-de31c03eaa15",
"livemode": false
}
Change operation
{
"attemptId": "df13a77d-07ae-4d61-bae4-69f53bc26073",
"created": 1770063514,
"data": {
"_id": "69810668f02f1e07253515f9",
"accountId": "6601f1d64f95b505b8eb42e2",
"audit": [],
"blockedReason": "",
"createdAt": {
"offset": 0,
"value": "2026-02-02T20:17:44.522Z"
},
"createdBy": "68e3c6d55a958106e34b4f37",
"date": "2026-02-03",
"manifestId": "698106686407480628078729",
"name": "ACA-CHG - 2026-02-03 - 08:00",
"operationId": "johndoe@gmail.com-2026-02-02T20:17:44.404Z",
"operationType": "change",
"request": {
"legs": [
{
"arrival": "08:10",
"departure": "08:00",
"fromId": "661017a80294430529380813",
"requiresCheckIn": false,
"toId": "66101ce5d04e3e05235fd326",
"waitTime": 0,
"travelRouteId": "5a721438608b5db92bed2684", // if provided
},
{
"arrival": "10:00",
"departure": "08:30",
"fromId": "66101ce5d04e3e05235fd326",
"requiresCheckIn": false,
"toId": "66101aabd04e3e05235fd31e",
"waitTime": 20
}
],
"operationType": "change"
},
"routeId": "6645004a2fc750051802d0ae",
"scheduleId": "579d3c05-9145-4a77-a25b-92a7f472295e",
"status": "pending",
"type": "manifest",
"updatedAt": {
"offset": 0,
"value": "2026-02-02T20:17:44.522Z"
},
"updatedBy": "68e3c6d55a958106e34b4f37"
},
"event": "changeRequests.manifests.created",
"id": "07b06f2c-4c5e-48bd-8983-59e77e266706",
"livemode": false
}
Cut operation
{
"attemptId": "a0c5f0fd-3dde-40e6-b216-062a52743372",
"created": 1770063918,
"data": {
"_id": "6981082af02f1e07253515fa",
"accountId": "6601f1d64f95b505b8eb42e2",
"audit": [],
"blockedReason": "",
"createdAt": {
"offset": 0,
"value": "2026-02-02T20:25:14.923Z"
},
"createdBy": "68e3c6d55a958106e34b4f37",
"date": "2026-02-03",
"manifestId": "698106686407480628078729",
"name": "ACA-CHG - 2026-02-03 - 08:00",
"operationId": "johndoe@gmail.com-2026-02-02T20:25:14.807Z",
"operationType": "cut",
"request": {
"legs": [
{
"arrival": "08:20",
"departure": "08:00",
"fromId": "661017a80294430529380813",
"requiresCheckIn": false,
"toId": "66101ce5d04e3e05235fd326",
"waitTime": 0
}
],
"operationType": "cut"
},
"routeId": "6645004a2fc750051802d0ae",
"scheduleId": "579d3c05-9145-4a77-a25b-92a7f472295e",
"status": "pending",
"type": "manifest",
"updatedAt": {
"offset": 0,
"value": "2026-02-02T20:25:14.923Z"
},
"updatedBy": "68e3c6d55a958106e34b4f37"
},
"event": "changeRequests.manifests.created",
"id": "49a1dc2d-765e-4c1d-b587-625287064ef7",
"livemode": false
}
Payload example manifest's change request updated
Example of event from updating the example of change operation above.
{
"attemptId": "f21f838f-7418-48a0-8a38-4fed9c1bb84b",
"created": 1770064302,
"data": {
"_id": "69810668f02f1e07253515f9",
"accountId": "6601f1d64f95b505b8eb42e2",
"audit": [
{
"createdAt": "2026-02-02T20:31:31.294Z",
"createdBy": "68e3c6d55a958106e34b4f37",
"currentStatus": "approved",
"previousStatus": "pending"
}
],
"blockedReason": "",
"createdAt": {
"offset": 0,
"value": "2026-02-02T20:17:44.522Z"
},
"createdBy": "68e3c6d55a958106e34b4f37",
"date": "2026-02-03",
"manifestId": "698106686407480628078729",
"name": "ACA-CHG - 2026-02-03 - 08:00",
"operationId": "johndoe@gmail.com-2026-02-02T20:17:44.404Z",
"operationType": "change",
"request": {
"legs": [
{
"arrival": "08:10",
"departure": "08:00",
"fromId": "661017a80294430529380813",
"requiresCheckIn": false,
"toId": "66101ce5d04e3e05235fd326",
"waitTime": 0,
"travelRouteId": "5a721438608b5db92bed2684",
},
{
"arrival": "10:00",
"departure": "08:30",
"fromId": "66101ce5d04e3e05235fd326",
"requiresCheckIn": false,
"toId": "66101aabd04e3e05235fd31e",
"waitTime": 20
}
],
"operationType": "change"
},
"routeId": "6645004a2fc750051802d0ae",
"scheduleId": "579d3c05-9145-4a77-a25b-92a7f472295e",
"status": "approved",
"type": "manifest",
"updatedAt": {
"offset": 0,
"value": "2026-02-02T20:31:31.294Z"
},
"updatedBy": "68e3c6d55a958106e34b4f37"
},
"event": "changeRequests.manifests.updated",
"id": "ef04f735-8d59-473e-9a14-660c5dbaa649",
"livemode": false
}
Payload example schedule's change request created
This example shows a changeRequests.schedules.created payload. The change request status is always pending; blocked schedule change requests do not emit this event.
{
"attemptId": "8b62f96a-9a4c-4329-8a9d-f91800c00add",
"created": 1770064736,
"data": {
"_id": "69810b4df02f1e07253515fc",
"accountId": "6601f1d64f95b505b8eb42e2",
"audit": [],
"blockedReason": "",
"createdAt": {
"offset": 0,
"value": "2026-02-02T20:38:37.024Z"
},
"createdBy": "68e3c6d55a958106e34b4f37",
"name": "MEX-ACA EJE",
"operationId": "johndoe@gmail.com-2026-02-02T20:38:36.934Z",
"operationType": "change",
"request": {
"scheduleIdForRms": "",
"controlClassId": "",
"legs": [
{
"arrival": "14:39",
"collapsed": true,
"departure": "10:59",
"from": "MEXICO TAXQUENA",
"fromId": "661026d0029443052938083e",
"requiresCheckIn": false,
"to": "CHILPANCINGO GRO",
"toId": "66101aabd04e3e05235fd31e",
"travelRouteId": "681cc8b79a2282051b35d7ae",
"waitTime": 0
},
{
"arrival": "16:10",
"collapsed": true,
"departure": "14:49",
"distance": 0,
"duration": 81,
"from": "CHILPANCINGO GRO",
"fromId": "66101aabd04e3e05235fd31e",
"fromMarkerLabel": 2,
"hideWhenPrintingManifest": false,
"legord": 1,
"requiresCheckIn": false,
"to": "ACAPULCO COSTERA",
"toId": "661017a80294430529380813",
"toMarkerLabel": 3,
"waitTime": 10
}
],
"duration": 311,
"routeId": "663e5e212fd0c20546dd5e44",
"toId": "661017a80294430529380813",
"dow": {
"friday": "Y",
"holiday": "N",
"holidaysIncluded": "Y",
"holidaysOnly": "N",
"monday": "Y",
"saturday": "Y",
"sunday": "Y",
"thursday": "Y",
"tuesday": "Y",
"wednesday": "Y"
},
"inventoryId": "661db99ef7bf0f0515eb2ac5",
"isExtraRun": false,
"autoBouncingChanges": {
"currentSchedule": {
"routeId": "663e5e212fd0c20546dd5e44",
"scheduleId": "119dfc1d-db46-4d05-af09-d6efde4d2dc2"
},
"newDepartureTime": "0:0",
"newParentSchedule": null,
"toRemove": null
},
"to": "ACAPULCO COSTERA",
"operatingCompanyId": "661595e438a6280519caf7b9",
"taxExempt": false,
"toDateYYYYMMDD": "2026-02-06",
"fromDateYYYYMMDD": "2026-02-05",
"from": "MEXICO TAXQUENA",
"distance": 0,
"defaultManifestStatus": "published",
"requiresCheckIn": false,
"scheduleGroupId": "",
"capacity": 36,
"labelIds": [],
"amenityGroupId": "661db7a3f7bf0f0515eb2ac4",
"useTimeZoneOfFirstStation": false,
"travelRouteId": "",
"standingPassengerCapacity": 0,
"displayName": "MEX-ACA EJE",
"passengerLimits": [],
"time": "10:59",
"externalId": "",
"seatMapId": "661dbc18f7bf0f0515eb2ac7",
"brandId": "661595307d3295051fdc1f1b",
"fromId": "661026d0029443052938083e",
"copyFromScheduleId": "8346a662-5583-4502-8c88-b6e2fef6ff22", // if created based on another schedule
"copyFromManifestDate": "2026-02-05" // if created based on a manifest
},
"routeId": "663e5e212fd0c20546dd5e44",
"scheduleId": "119dfc1d-db46-4d05-af09-d6efde4d2dc2",
"status": "pending",
"type": "schedule",
"updatedAt": {
"offset": 0,
"value": "2026-02-02T20:38:37.024Z"
},
"updatedBy": "68e3c6d55a958106e34b4f37"
},
"event": "changeRequests.schedules.created",
"id": "8afb11a8-9376-4024-9389-d5696ec5607b",
"livemode": false
}
Payload example schedule's change request updated
Example of an update rejecting the above change request.
{
"attemptId": "01afde68-d315-4cfd-9f61-a0eda3af8120",
"created": 1770065246,
"data": {
"_id": "69810b4df02f1e07253515fc",
"accountId": "6601f1d64f95b505b8eb42e2",
"audit": [
{
"createdAt": "2026-02-02T20:46:11.135Z",
"createdBy": "68e3c6d55a958106e34b4f37",
"currentStatus": "rejected",
"previousStatus": "pending"
}
],
"blockedReason": "",
"createdAt": {
"offset": 0,
"value": "2026-02-02T20:38:37.024Z"
},
"createdBy": "68e3c6d55a958106e34b4f37",
"name": "MEX-ACA EJE",
"operationId": "johndoe@gmail.com-2026-02-02T20:38:36.934Z",
"operationType": "change",
"request": {
"scheduleIdForRms": "",
"controlClassId": "",
"legs": [
{
"arrival": "14:39",
"collapsed": true,
"departure": "10:59",
"from": "MEXICO TAXQUENA",
"fromId": "661026d0029443052938083e",
"requiresCheckIn": false,
"to": "CHILPANCINGO GRO",
"toId": "66101aabd04e3e05235fd31e",
"travelRouteId": "681cc8b79a2282051b35d7ae",
"waitTime": 0
},
{
"arrival": "16:10",
"collapsed": true,
"departure": "14:49",
"distance": 0,
"duration": 81,
"from": "CHILPANCINGO GRO",
"fromId": "66101aabd04e3e05235fd31e",
"fromMarkerLabel": 2,
"hideWhenPrintingManifest": false,
"legord": 1,
"requiresCheckIn": false,
"to": "ACAPULCO COSTERA",
"toId": "661017a80294430529380813",
"toMarkerLabel": 3,
"waitTime": 10
}
],
"duration": 311,
"routeId": "663e5e212fd0c20546dd5e44",
"toId": "661017a80294430529380813",
"dow": {
"friday": "Y",
"holiday": "N",
"holidaysIncluded": "Y",
"holidaysOnly": "N",
"monday": "Y",
"saturday": "Y",
"sunday": "Y",
"thursday": "Y",
"tuesday": "Y",
"wednesday": "Y"
},
"inventoryId": "661db99ef7bf0f0515eb2ac5",
"isExtraRun": false,
"autoBouncingChanges": {
"currentSchedule": {
"routeId": "663e5e212fd0c20546dd5e44",
"scheduleId": "119dfc1d-db46-4d05-af09-d6efde4d2dc2"
},
"newDepartureTime": "0:0",
"newParentSchedule": null,
"toRemove": null
},
"to": "ACAPULCO COSTERA",
"operatingCompanyId": "661595e438a6280519caf7b9",
"taxExempt": false,
"toDateYYYYMMDD": "2026-02-06",
"fromDateYYYYMMDD": "2026-02-05",
"from": "MEXICO TAXQUENA",
"distance": 0,
"defaultManifestStatus": "published",
"requiresCheckIn": false,
"scheduleGroupId": "",
"capacity": 36,
"labelIds": [],
"amenityGroupId": "661db7a3f7bf0f0515eb2ac4",
"useTimeZoneOfFirstStation": false,
"travelRouteId": "",
"standingPassengerCapacity": 0,
"displayName": "MEX-ACA EJE",
"passengerLimits": [],
"time": "10:59",
"externalId": "",
"seatMapId": "661dbc18f7bf0f0515eb2ac7",
"brandId": "661595307d3295051fdc1f1b",
"fromId": "661026d0029443052938083e",
"copyFromScheduleId": "8346a662-5583-4502-8c88-b6e2fef6ff22", // if created based on another schedule
"copyFromManifestDate": "2026-02-05" // if created based on a manifest
},
"routeId": "663e5e212fd0c20546dd5e44",
"scheduleId": "119dfc1d-db46-4d05-af09-d6efde4d2dc2",
"status": "rejected",
"type": "schedule",
"updatedAt": {
"offset": 0,
"value": "2026-02-02T20:46:11.135Z"
},
"updatedBy": "68e3c6d55a958106e34b4f37"
},
"event": "changeRequests.schedules.updated",
"id": "a2ed1f4b-aa89-45cb-8667-9422cd0a5aa3",
"livemode": false
}