Download OpenAPI specification:
Welcome to the Optibus Operations API documentation!
Optibus Operations is a cloud-based software solution that enables public transport providers to optimize their operations, planning, and scheduling. Our API provides programmatic access to Optibus Operations' functionality, allowing you to integrate it with your own applications and systems.
The Optibus Operations API requires authentication via a stable API_KEY
sent in the HTTP request Authorization
header in the form of Authorization: API_KEY
.
Additionally requests against our API expect the X-Optibus-Api-Client
header to be set using your ACCOUNT_NAME
.
If you are considering programmatic access the Optibus Operations platform, please contact your Optibus Customer Success Manager who can provide the API_KEY
and ACCOUNT_NAME
above, as well as your account-specific BASE_URL
for the API endpoints documented below.
Example:
CURL -H "Authorization:API_KEY" -H 'X-Optibus-Api-Client: API_USER' https://BASE_URL/driver
We may in the future make changes to the Optibus Operations API described on this page. This could be to fix bugs, enhance the richness of information made available in existing endpoints, or to introduce new API functionality via new endpoints.
The Optibus Operations team treats API changes in the following way:
/v{version}/{endpoint}
. These endpoint specific numbers may lag behind the major version of the overall API, but will never exceed it.In case we do introduce breaking changes to existing endpoints, this will happen in the following way:
{baseURL}/v1/driver
, we would introduce a new endpoint {baseURL}/v2/driver
with adjusted behaviorReturns the configured holidays (as in bank holidays).
This is distinct from individual driver absences.
If startDate
and endDate
are provided, the response will include only holidays within that date range.
If neither is provided, all configured holidays are returned.
startDate
and endDate
must be provided together.YYYY-MM-DD
.[- {
- "groupName": "string",
- "name": "string",
- "timeDefinition": {
- "to": "2019-08-24",
- "from": "2019-08-24"
}
}
]
Returns the configured organizational Regions including the corresponding Units for each Region.
[- {
- "name": "string",
- "isArchived": true,
- "units": [
- {
- "name": "string",
- "isArchived": true,
- "code": "string",
- "uuid": "string"
}
], - "uuid": "string"
}
]
Returns the driver information, with filters.
driversIds | Array of strings (UUID)
|
date | string <date> (StringifyDate)
|
[- {
- "id": "string",
- "archived": true,
- "note": "string",
- "firstName": "string",
- "lastName": "string",
- "uuid": "string",
- "middleName": "string",
- "avatar": "string",
- "employmentPeriods": [
- {
- "endDate": "2019-08-24",
- "startDate": "2019-08-24",
- "employmentPeriodId": "string"
}
], - "mobileNumber": "string",
- "homeNumber": "string",
- "emailAddress": "string",
- "meta": {
- "property1": null,
- "property2": null
}, - "attributes": {
- "property1": [
- 0.1
], - "property2": [
- 0.1
]
}
}
]
Returns the information for driver groups, with filters.
depotsIds | Array of strings (UUID)
|
[- {
- "depot": "string",
- "regionName": "string",
- "regionUuid": "string",
- "meta": {
- "property1": null,
- "property2": null
}, - "name": "string",
- "id": "string"
}
]
Adds or updates a specific driver
driverType | string |
driverUnion | string |
driverGrade | string |
attributes | object |
[- {
- "driverType": "string",
- "driverUnion": "string",
- "driverGrade": "string",
- "attributes": {
- "property1": [
- 0.1
], - "property2": [
- 0.1
]
}
}
]
{ }
Calculate the signing deviations for the drivers in the given date range and region. If driverIds is empty, all drivers will be returned Signing deviations are calculated as the difference between the expected and actual signing times, for each sign on or sign off event. Deviation might be either early or late, calculated according to a defined threshold.
from required | string <date> (StringifyDate) The start of the date range to get the signing deviations from |
to required | string <date> (StringifyDate) The end of the date range to get the signing deviations from |
regionUuid required | string (DepotId) The region to get the signing deviations from |
driverIds | Array of strings (DriverId) The driver IDs for which to get the signing deviations. if empty all drivers will be returned |
{- "property1": {
- "property1": [
- {
- "expectedTime": "2024-06-30T23:30:00+02:00",
- "actualTime": "2024-06-30T23:30:00+02:00",
- "deviation": 0.1,
- "signingType": "signOn",
- "signingDeviationType": "early"
}
], - "property2": [
- {
- "expectedTime": "2024-06-30T23:30:00+02:00",
- "actualTime": "2024-06-30T23:30:00+02:00",
- "deviation": 0.1,
- "signingType": "signOn",
- "signingDeviationType": "early"
}
]
}, - "property2": {
- "property1": [
- {
- "expectedTime": "2024-06-30T23:30:00+02:00",
- "actualTime": "2024-06-30T23:30:00+02:00",
- "deviation": 0.1,
- "signingType": "signOn",
- "signingDeviationType": "early"
}
], - "property2": [
- {
- "expectedTime": "2024-06-30T23:30:00+02:00",
- "actualTime": "2024-06-30T23:30:00+02:00",
- "deviation": 0.1,
- "signingType": "signOn",
- "signingDeviationType": "early"
}
]
}
}
Returns the information about the drivers depot periods by driver ID.
driver | Array of strings (UUID)
|
{- "property1": [
- {
- "opUnitId": "string",
- "endTime": 0,
- "startTime": 0,
- "endDate": "2019-08-24",
- "startDate": "2019-08-24",
- "depotId": "string",
- "type": "MAIN",
- "periodId": "string",
- "groupId": "string",
- "driverUUID": "string"
}
], - "property2": [
- {
- "opUnitId": "string",
- "endTime": 0,
- "startTime": 0,
- "endDate": "2019-08-24",
- "startDate": "2019-08-24",
- "depotId": "string",
- "type": "MAIN",
- "periodId": "string",
- "groupId": "string",
- "driverUUID": "string"
}
]
}
This route is deprecated, please use /v1/drivers/signing-deviations instead
Calculate the signing deviations for the drivers in the given date range and region. If driverIds is empty, all drivers will be returned Signing deviations are calculated as the difference between the expected and actual signing times, for each sign on or sign off event. Deviation might be either early or late, calculated according to a defined threshold.
from required | string <date> (StringifyDate) The start of the date range to get the signing deviations from |
to required | string <date> (StringifyDate) The end of the date range to get the signing deviations from |
regionUuid required | string (DepotId) The region to get the signing deviations from |
driverIds | Array of strings (DriverId) The driver IDs for which to get the signing deviations. if empty all drivers will be returned |
{- "property1": {
- "property1": [
- {
- "expectedTime": "2024-06-30T23:30:00+02:00",
- "actualTime": "2024-06-30T23:30:00+02:00",
- "deviation": 0.1,
- "signingType": "signOn",
- "signingDeviationType": "early"
}
], - "property2": [
- {
- "expectedTime": "2024-06-30T23:30:00+02:00",
- "actualTime": "2024-06-30T23:30:00+02:00",
- "deviation": 0.1,
- "signingType": "signOn",
- "signingDeviationType": "early"
}
]
}, - "property2": {
- "property1": [
- {
- "expectedTime": "2024-06-30T23:30:00+02:00",
- "actualTime": "2024-06-30T23:30:00+02:00",
- "deviation": 0.1,
- "signingType": "signOn",
- "signingDeviationType": "early"
}
], - "property2": [
- {
- "expectedTime": "2024-06-30T23:30:00+02:00",
- "actualTime": "2024-06-30T23:30:00+02:00",
- "deviation": 0.1,
- "signingType": "signOn",
- "signingDeviationType": "early"
}
]
}
}
Returns the driver attributes.
driverIds | Array of strings (DriverId)
|
from | string
|
to | string
|
{- "attributes": {
- "property1": {
- "property1": [
- {
- "value": [
- 0.1
], - "date": "2019-08-24",
- "attributeId": "string"
}
], - "property2": [
- {
- "value": [
- 0.1
], - "date": "2019-08-24",
- "attributeId": "string"
}
]
}, - "property2": {
- "property1": [
- {
- "value": [
- 0.1
], - "date": "2019-08-24",
- "attributeId": "string"
}
], - "property2": [
- {
- "value": [
- 0.1
], - "date": "2019-08-24",
- "attributeId": "string"
}
]
}
}, - "attributeMap": {
- "property1": {
- "id": "string",
- "type": "STRING",
- "displayName": "string"
}, - "property2": {
- "id": "string",
- "type": "STRING",
- "displayName": "string"
}
}
}
Returns absences of drivers.
Driver Groups
Public Holidays
as configured in preferencesdriver | Array of strings (UUID)
|
from | string <date> (StringifyDate)
|
to | string <date> (StringifyDate)
|
{- "property1": [
- {
- "endTimeNextDay": true,
- "startTimeNextDay": true,
- "endTime": 0,
- "endDate": "2019-08-24",
- "startTime": 0,
- "startDate": "2019-08-24",
- "metadata": {
- "property1": null,
- "property2": null
}, - "note": "string",
- "absenceCode": "string",
- "absenceId": "string",
- "driver": "string"
}
], - "property2": [
- {
- "endTimeNextDay": true,
- "startTimeNextDay": true,
- "endTime": 0,
- "endDate": "2019-08-24",
- "startTime": 0,
- "startDate": "2019-08-24",
- "metadata": {
- "property1": null,
- "property2": null
}, - "note": "string",
- "absenceCode": "string",
- "absenceId": "string",
- "driver": "string"
}
]
}
Add the absences from the body into operations. Notice that absenceId need to be unique (in the entire system), this allow modification to existing absences when using the same id
endTimeNextDay | boolean |
startTimeNextDay | boolean for partial absence |
endTime | integer <int32> (MinutesFromMidnightTime) |
endDate | string <date> (StringifyDate) Stringified ISO8601 date in the form of |
startTime | integer <int32> (MinutesFromMidnightTime) |
startDate required | string <date> (StringifyDate) Stringified ISO8601 date in the form of |
metadata | object Additional data about the absence |
note | string The note provided by the user |
absenceCode required | string The absence code provided by the user |
absenceId required | string (UUID) Stringified UUID for a resource. |
driver required | string (UUID) Stringified UUID for a resource. |
[- {
- "endTimeNextDay": true,
- "startTimeNextDay": true,
- "endTime": 0,
- "endDate": "2019-08-24",
- "startTime": 0,
- "startDate": "2019-08-24",
- "metadata": {
- "property1": null,
- "property2": null
}, - "note": "string",
- "absenceCode": "string",
- "absenceId": "string",
- "driver": "string"
}
]
{ }
Returns the information for vehicles, with filters.
vehicleIds | Array of strings (UUID)
|
depotIds | Array of strings (UUID)
|
date | string <date> (StringifyDate)
|
[- {
- "id": "string",
- "licensePlate": "string",
- "depot": "string",
- "opUnitId": "string",
- "description": "string",
- "type": "string",
- "nextDowntime": 0.1,
- "model": "string",
- "archived": true,
- "archivedOn": "string",
- "property1": [
- 0.1
], - "property2": [
- 0.1
]
}
]
Returns the information about the vehicles depot periods by vehicle ID.
vehicleId | Array of strings
|
{- "property1": [
- {
- "opUnitId": "string",
- "endTime": 0,
- "startTime": 0,
- "endDate": "2019-08-24",
- "startDate": "2019-08-24",
- "depotId": "string",
- "type": "MAIN",
- "periodId": "string",
- "vehicleId": "string"
}
], - "property2": [
- {
- "opUnitId": "string",
- "endTime": 0,
- "startTime": 0,
- "endDate": "2019-08-24",
- "startDate": "2019-08-24",
- "depotId": "string",
- "type": "MAIN",
- "periodId": "string",
- "vehicleId": "string"
}
]
}
Returns the vehicle attributes.
vehicleIds | Array of strings (VehicleId)
|
from | string
|
to | string
|
{- "attributes": {
- "property1": {
- "property1": [
- {
- "value": [
- 0.1
], - "date": "2019-08-24",
- "attributeId": "string"
}
], - "property2": [
- {
- "value": [
- 0.1
], - "date": "2019-08-24",
- "attributeId": "string"
}
]
}, - "property2": {
- "property1": [
- {
- "value": [
- 0.1
], - "date": "2019-08-24",
- "attributeId": "string"
}
], - "property2": [
- {
- "value": [
- 0.1
], - "date": "2019-08-24",
- "attributeId": "string"
}
]
}
}, - "attributeMap": {
- "property1": {
- "id": "string",
- "type": "STRING",
- "displayName": "string"
}, - "property2": {
- "id": "string",
- "type": "STRING",
- "displayName": "string"
}
}
}
A roster describes the daily operator runs grouped into packages of (repeating) weekly work assignments.
Returns the roster information by roster ID.
rosterId required | string (UUID)
|
operationalDay | string <date> (StringifyDate)
|
{- "stops": [
- {
- "shortDescription": "string",
- "long": 0.1,
- "lat": 0.1,
- "stopId": "string"
}
], - "assignmentsInfo": [
- {
- "taskId": "string",
- "assignmentType": "Task",
- "dayIndex": 0.1,
- "weekIndex": 0.1,
- "lineId": "string"
}
], - "lineInfo": [
- {
- "order": 0.1,
- "lineDisplayId": "string",
- "lineId": "string"
}
], - "events": [
- {
- "type": "standby",
- "id": "string",
- "eventJsonData": null,
- "endTime": 0,
- "startTime": 0
}
], - "blocks": [
- {
- "blockData": null,
- "summary": {
- "serviceId": "string",
- "timeplanId": "string",
- "scheduleDatasetId": "string",
- "rosterDatasetId": "string",
- "rosterSourceId": "string",
- "type": "string"
}, - "events": [
- "string"
], - "displayId": "string",
- "id": "string"
}
], - "tasks": [
- {
- "type": "Duty",
- "name": "string",
- "id": "string",
- "extraData": null,
- "paidTime": 0,
- "endTime": 0,
- "startTime": 0,
- "summary": {
- "scheduleName": "string",
- "scheduleLink": "string",
- "serviceName": "string",
- "serviceId": "string",
- "timeplanId": "string",
- "scheduleDatasetId": "string",
- "rosterDatasetId": "string",
- "rosterSourceId": "string",
- "splits": [
- {
- "endTime": 0,
- "startTime": 0
}
], - "blockTypes": [
- "string"
], - "blocks": [
- "string"
], - "routes": [
- "string"
], - "paidTime": 0,
- "destinationDepot": "string",
- "destinationStop": "string",
- "originDepot": "string",
- "originStop": "string",
- "spreadTime": 0,
- "workTime": 0,
- "type": "string",
- "endTime": 0,
- "startTime": 0,
- "property1": null,
- "property2": null
}, - "events": [
- "string"
], - "displayId": "string"
}
], - "rosterDataInfo": {
- "importMode": "roster",
- "depotId": "string",
- "createdBy": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "rotating": "Static",
- "daysInWeek": 0,
- "numberOfWeeks": 0,
- "startDay": 1,
- "importName": "string",
- "importId": "string",
- "group": "string",
- "rosterDatasetId": "string",
- "rosterSourceId": "string",
- "id": "string"
}
}
WARNING: This is deprecated - you should use /v2/operational-plan
described below. This API will not be supported beyond 2024-06-30. Returns the daily operational plans for a specified date range and a specific depot.
depotId required | string
|
from required | string <date> (StringifyDate)
|
to required | string <date> (StringifyDate)
|
driversIds | string
|
vehicleIds | string
|
includeStops | string
|
assignedOnly | string
|
includeUnassigned | string
|
fetchPlannedAssignmentsProperties | boolean
|
{- "vehicles": [
- {
- "videoSurveillance": true,
- "passengerCounting": true,
- "bicycles": true,
- "consumptionMeter": true,
- "externalSound": true,
- "internalSound": true,
- "sideDisplay": true,
- "rearDisplay": true,
- "frontDisplay": true,
- "onboardMonitor": true,
- "staticInformation": true,
- "kneeling": true,
- "foldingSystem": true,
- "ramp": true,
- "loweredFloor": true,
- "corridor": true,
- "wheelchair": true,
- "climatization": true,
- "ecological": true,
- "newSeminew": true,
- "emission": 0,
- "propulsion": 0,
- "vclass": 0,
- "typology": 0,
- "registrationDate": "2019-08-24",
- "startDate": "2019-08-24",
- "availableStanding": 0,
- "availableSeats": 0,
- "owner": "string",
- "make": "string",
- "archivedOn": "2019-08-24",
- "archived": true,
- "capacity": 0,
- "branding": "string",
- "model": "string",
- "nextDowntime": 0.1,
- "type": "string",
- "mileage": 0.1,
- "description": "string",
- "opUnitId": "string",
- "depot": "string",
- "licensePlate": "string",
- "id": "string"
}
], - "drivers": [
- {
- "id": "string",
- "archived": true,
- "firstName": "string",
- "lastName": "string",
- "uuid": "string",
- "middleName": "string"
}
], - "assignments": [
- {
- "properties": [
- {
- "taskId": "string",
- "labels": [
- {
- "name": "string",
- "code": "string"
}
], - "attributes": {
- "property1": [
- 0.1
], - "property2": [
- 0.1
]
}, - "disabled": true,
- "cancellationReason": {
- "reasonCode": "string",
- "reason": "string"
}, - "opUnitUuid": "string",
- "assignmentType": "driverAssignment"
}
], - "plannedAssignments": [
- {
- "assignments": [
- "string"
], - "driver": "string"
}
], - "vehicleAssignments": [
- {
- "assignments": [
- "string"
], - "vehicle": "string"
}
], - "driverAssignments": [
- {
- "assignments": [
- "string"
], - "driver": "string"
}
], - "date": "2019-08-24"
}
], - "blocks": [
- {
- "disabled": true,
- "srcBlockId": "string",
- "data": null,
- "summary": {
- "type": "string",
- "property1": null,
- "property2": null
}, - "events": [
- {
- "originRosterId": "string",
- "deleted": true,
- "originalDutyId": "string",
- "dutyId": "string",
- "eventId": "string"
}
], - "type": "block",
- "description": "string",
- "displayId": "string",
- "id": "string",
- "source": "scheduling",
- "wasModifiedInOperations": true,
- "optibusIds": {
- "optibusTimeplanId": "string",
- "optibusScheduleId": "string",
- "optibusRosterDatasetId": "string",
- "optibusRosterId": "string"
}
}
], - "tasks": [
- {
- "id": "string",
- "description": "string",
- "type": "duty",
- "attributes": {
- "property1": [
- 0.1
], - "property2": [
- 0.1
]
}, - "displayId": "string",
- "srcTaskId": "string",
- "data": null,
- "rosterDatasetId": "string",
- "scheduleId": "string",
- "copiedTaskId": "string",
- "summary": {
- "destinationStop": "string",
- "destinationDepot": "string",
- "originStop": "string",
- "originDepot": "string",
- "startTime": 0,
- "serviceName": "string",
- "serviceId": "string",
- "timePlanId": "string",
- "scheduleDatasetId": "string",
- "routes": [
- "string"
], - "rosterSourceId": "string",
- "rosterDatasetId": "string",
- "endTime": 0,
- "originDepotId": "string",
- "originStopId": "string",
- "destinationDepotId": "string",
- "destinationStopId": "string",
- "originDepotName": "string",
- "originStopName": "string",
- "destinationDepotName": "string",
- "destinationStopName": "string",
- "originDepotLabel": "string",
- "originStopLabel": "string",
- "destinationDepotLabel": "string",
- "destinationStopLabel": "string"
}, - "dutyType": "string",
- "source": "scheduling",
- "wasModifiedInOperations": true,
- "optibusIds": {
- "optibusTimeplanId": "string",
- "optibusScheduleId": "string",
- "optibusRosterDatasetId": "string",
- "optibusRosterId": "string"
}, - "events": [
- {
- "eventType": "deadhead",
- "eventId": "string",
- "eventJsonData": {
- "subType": "deadhead",
- "depotId": "string",
- "distance": 0.1,
- "generated": true,
- "generatedUsingGenerator": true,
- "properties": {
- "property1": null,
- "property2": null
}, - "vehicleId": "string",
- "dutyId": "string",
- "passengers": [
- {
- "publicTravelId": "string",
- "dutyId": "string"
}
], - "carId": "string",
- "stops": [
- {
- "time": "string",
- "isTimePoint": true,
- "id": "string",
- "lat": 0.1,
- "long": 0.1,
- "isCustom": true
}
], - "destination": {
- "time": "string",
- "isTimePoint": true,
- "id": "string",
- "lat": 0.1,
- "long": 0.1,
- "isCustom": true
}, - "origin": {
- "time": "string",
- "isTimePoint": true,
- "id": "string",
- "lat": 0.1,
- "long": 0.1,
- "isCustom": true
}, - "signPost": "string",
- "id": "string",
- "subTripIndex": 0.1,
- "isLastSubTrip": true,
- "isFirstSubTrip": true,
- "parentSubTrips": [
- "string"
], - "parentProperties": {
- "property1": null,
- "property2": null
}, - "parentTripId": "string",
- "parentEventId": "string",
- "blockId": "string"
}, - "endTime": 0,
- "startTime": 0,
- "splitTripReference": "string",
- "custom": true,
- "labels": [
- {
- "name": "string",
- "code": "string"
}
], - "driverNoteText": "string",
- "noteText": "string",
- "disabled": true,
- "type": "standby",
- "id": "string"
}
]
}
]
}
WARNING: This is deprecated - you should use /v2/operational-plan
described below. This API will not be supported beyond 2024-06-30. Returns the daily operational plans for a specified date range for every depot.
from required | string <date> (StringifyDate)
|
to required | string <date> (StringifyDate)
|
{- "depots": {
- "property1": {
- "vehicles": [
- {
- "videoSurveillance": true,
- "passengerCounting": true,
- "bicycles": true,
- "consumptionMeter": true,
- "externalSound": true,
- "internalSound": true,
- "sideDisplay": true,
- "rearDisplay": true,
- "frontDisplay": true,
- "onboardMonitor": true,
- "staticInformation": true,
- "kneeling": true,
- "foldingSystem": true,
- "ramp": true,
- "loweredFloor": true,
- "corridor": true,
- "wheelchair": true,
- "climatization": true,
- "ecological": true,
- "newSeminew": true,
- "emission": 0,
- "propulsion": 0,
- "vclass": 0,
- "typology": 0,
- "registrationDate": "2019-08-24",
- "startDate": "2019-08-24",
- "availableStanding": 0,
- "availableSeats": 0,
- "owner": "string",
- "make": "string",
- "archivedOn": "2019-08-24",
- "archived": true,
- "capacity": 0,
- "branding": "string",
- "model": "string",
- "nextDowntime": 0.1,
- "type": "string",
- "mileage": 0.1,
- "description": "string",
- "opUnitId": "string",
- "depot": "string",
- "licensePlate": "string",
- "id": "string"
}
], - "drivers": [
- {
- "id": "string",
- "archived": true,
- "firstName": "string",
- "lastName": "string",
- "uuid": "string",
- "middleName": "string"
}
], - "assignments": [
- {
- "properties": [
- {
- "taskId": "string",
- "labels": [
- {
- "name": "string",
- "code": "string"
}
], - "attributes": {
- "property1": [
- 0.1
], - "property2": [
- 0.1
]
}, - "disabled": true,
- "cancellationReason": {
- "reasonCode": "string",
- "reason": "string"
}, - "opUnitUuid": "string",
- "assignmentType": "driverAssignment"
}
], - "plannedAssignments": [
- {
- "assignments": [
- "string"
], - "driver": "string"
}
], - "vehicleAssignments": [
- {
- "assignments": [
- "string"
], - "vehicle": "string"
}
], - "driverAssignments": [
- {
- "assignments": [
- "string"
], - "driver": "string"
}
], - "date": "2019-08-24"
}
], - "blocks": [
- {
- "disabled": true,
- "srcBlockId": "string",
- "data": null,
- "summary": {
- "type": "string",
- "property1": null,
- "property2": null
}, - "events": [
- {
- "originRosterId": "string",
- "deleted": true,
- "originalDutyId": "string",
- "dutyId": "string",
- "eventId": "string"
}
], - "type": "block",
- "description": "string",
- "displayId": "string",
- "id": "string",
- "source": "scheduling",
- "wasModifiedInOperations": true,
- "optibusIds": {
- "optibusTimeplanId": "string",
- "optibusScheduleId": "string",
- "optibusRosterDatasetId": "string",
- "optibusRosterId": "string"
}
}
], - "tasks": [
- {
- "id": "string",
- "description": "string",
- "type": "duty",
- "attributes": {
- "property1": [
- 0.1
], - "property2": [
- 0.1
]
}, - "displayId": "string",
- "srcTaskId": "string",
- "data": null,
- "rosterDatasetId": "string",
- "scheduleId": "string",
- "copiedTaskId": "string",
- "summary": {
- "destinationStop": "string",
- "destinationDepot": "string",
- "originStop": "string",
- "originDepot": "string",
- "startTime": 0,
- "serviceName": "string",
- "serviceId": "string",
- "timePlanId": "string",
- "scheduleDatasetId": "string",
- "routes": [
- "string"
], - "rosterSourceId": "string",
- "rosterDatasetId": "string",
- "endTime": 0,
- "originDepotId": "string",
- "originStopId": "string",
- "destinationDepotId": "string",
- "destinationStopId": "string",
- "originDepotName": "string",
- "originStopName": "string",
- "destinationDepotName": "string",
- "destinationStopName": "string",
- "originDepotLabel": "string",
- "originStopLabel": "string",
- "destinationDepotLabel": "string",
- "destinationStopLabel": "string"
}, - "dutyType": "string",
- "source": "scheduling",
- "wasModifiedInOperations": true,
- "optibusIds": {
- "optibusTimeplanId": "string",
- "optibusScheduleId": "string",
- "optibusRosterDatasetId": "string",
- "optibusRosterId": "string"
}, - "events": [
- {
- "eventType": "deadhead",
- "eventId": "string",
- "eventJsonData": {
- "subType": "deadhead",
- "depotId": "string",
- "distance": 0.1,
- "generated": true,
- "generatedUsingGenerator": true,
- "properties": {
- "property1": null,
- "property2": null
}, - "vehicleId": "string",
- "dutyId": "string",
- "passengers": [
- {
- "publicTravelId": null,
- "dutyId": null
}
], - "carId": "string",
- "stops": [
- {
- "time": null,
- "isTimePoint": null,
- "id": null,
- "lat": null,
- "long": null,
- "isCustom": null
}
], - "destination": {
- "time": "string",
- "isTimePoint": true,
- "id": "string",
- "lat": 0.1,
- "long": 0.1,
- "isCustom": true
}, - "origin": {
- "time": "string",
- "isTimePoint": true,
- "id": "string",
- "lat": 0.1,
- "long": 0.1,
- "isCustom": true
}, - "signPost": "string",
- "id": "string",
- "subTripIndex": 0.1,
- "isLastSubTrip": true,
- "isFirstSubTrip": true,
- "parentSubTrips": [
- "string"
], - "parentProperties": {
- "property1": null,
- "property2": null
}, - "parentTripId": "string",
- "parentEventId": "string",
- "blockId": "string"
}, - "endTime": 0,
- "startTime": 0,
- "splitTripReference": "string",
- "custom": true,
- "labels": [
- {
- "name": "string",
- "code": "string"
}
], - "driverNoteText": "string",
- "noteText": "string",
- "disabled": true,
- "type": "standby",
- "id": "string"
}
]
}
]
}, - "property2": {
- "vehicles": [
- {
- "videoSurveillance": true,
- "passengerCounting": true,
- "bicycles": true,
- "consumptionMeter": true,
- "externalSound": true,
- "internalSound": true,
- "sideDisplay": true,
- "rearDisplay": true,
- "frontDisplay": true,
- "onboardMonitor": true,
- "staticInformation": true,
- "kneeling": true,
- "foldingSystem": true,
- "ramp": true,
- "loweredFloor": true,
- "corridor": true,
- "wheelchair": true,
- "climatization": true,
- "ecological": true,
- "newSeminew": true,
- "emission": 0,
- "propulsion": 0,
- "vclass": 0,
- "typology": 0,
- "registrationDate": "2019-08-24",
- "startDate": "2019-08-24",
- "availableStanding": 0,
- "availableSeats": 0,
- "owner": "string",
- "make": "string",
- "archivedOn": "2019-08-24",
- "archived": true,
- "capacity": 0,
- "branding": "string",
- "model": "string",
- "nextDowntime": 0.1,
- "type": "string",
- "mileage": 0.1,
- "description": "string",
- "opUnitId": "string",
- "depot": "string",
- "licensePlate": "string",
- "id": "string"
}
], - "drivers": [
- {
- "id": "string",
- "archived": true,
- "firstName": "string",
- "lastName": "string",
- "uuid": "string",
- "middleName": "string"
}
], - "assignments": [
- {
- "properties": [
- {
- "taskId": "string",
- "labels": [
- {
- "name": "string",
- "code": "string"
}
], - "attributes": {
- "property1": [
- 0.1
], - "property2": [
- 0.1
]
}, - "disabled": true,
- "cancellationReason": {
- "reasonCode": "string",
- "reason": "string"
}, - "opUnitUuid": "string",
- "assignmentType": "driverAssignment"
}
], - "plannedAssignments": [
- {
- "assignments": [
- "string"
], - "driver": "string"
}
], - "vehicleAssignments": [
- {
- "assignments": [
- "string"
], - "vehicle": "string"
}
], - "driverAssignments": [
- {
- "assignments": [
- "string"
], - "driver": "string"
}
], - "date": "2019-08-24"
}
], - "blocks": [
- {
- "disabled": true,
- "srcBlockId": "string",
- "data": null,
- "summary": {
- "type": "string",
- "property1": null,
- "property2": null
}, - "events": [
- {
- "originRosterId": "string",
- "deleted": true,
- "originalDutyId": "string",
- "dutyId": "string",
- "eventId": "string"
}
], - "type": "block",
- "description": "string",
- "displayId": "string",
- "id": "string",
- "source": "scheduling",
- "wasModifiedInOperations": true,
- "optibusIds": {
- "optibusTimeplanId": "string",
- "optibusScheduleId": "string",
- "optibusRosterDatasetId": "string",
- "optibusRosterId": "string"
}
}
], - "tasks": [
- {
- "id": "string",
- "description": "string",
- "type": "duty",
- "attributes": {
- "property1": [
- 0.1
], - "property2": [
- 0.1
]
}, - "displayId": "string",
- "srcTaskId": "string",
- "data": null,
- "rosterDatasetId": "string",
- "scheduleId": "string",
- "copiedTaskId": "string",
- "summary": {
- "destinationStop": "string",
- "destinationDepot": "string",
- "originStop": "string",
- "originDepot": "string",
- "startTime": 0,
- "serviceName": "string",
- "serviceId": "string",
- "timePlanId": "string",
- "scheduleDatasetId": "string",
- "routes": [
- "string"
], - "rosterSourceId": "string",
- "rosterDatasetId": "string",
- "endTime": 0,
- "originDepotId": "string",
- "originStopId": "string",
- "destinationDepotId": "string",
- "destinationStopId": "string",
- "originDepotName": "string",
- "originStopName": "string",
- "destinationDepotName": "string",
- "destinationStopName": "string",
- "originDepotLabel": "string",
- "originStopLabel": "string",
- "destinationDepotLabel": "string",
- "destinationStopLabel": "string"
}, - "dutyType": "string",
- "source": "scheduling",
- "wasModifiedInOperations": true,
- "optibusIds": {
- "optibusTimeplanId": "string",
- "optibusScheduleId": "string",
- "optibusRosterDatasetId": "string",
- "optibusRosterId": "string"
}, - "events": [
- {
- "eventType": "deadhead",
- "eventId": "string",
- "eventJsonData": {
- "subType": "deadhead",
- "depotId": "string",
- "distance": 0.1,
- "generated": true,
- "generatedUsingGenerator": true,
- "properties": {
- "property1": null,
- "property2": null
}, - "vehicleId": "string",
- "dutyId": "string",
- "passengers": [
- {
- "publicTravelId": null,
- "dutyId": null
}
], - "carId": "string",
- "stops": [
- {
- "time": null,
- "isTimePoint": null,
- "id": null,
- "lat": null,
- "long": null,
- "isCustom": null
}
], - "destination": {
- "time": "string",
- "isTimePoint": true,
- "id": "string",
- "lat": 0.1,
- "long": 0.1,
- "isCustom": true
}, - "origin": {
- "time": "string",
- "isTimePoint": true,
- "id": "string",
- "lat": 0.1,
- "long": 0.1,
- "isCustom": true
}, - "signPost": "string",
- "id": "string",
- "subTripIndex": 0.1,
- "isLastSubTrip": true,
- "isFirstSubTrip": true,
- "parentSubTrips": [
- "string"
], - "parentProperties": {
- "property1": null,
- "property2": null
}, - "parentTripId": "string",
- "parentEventId": "string",
- "blockId": "string"
}, - "endTime": 0,
- "startTime": 0,
- "splitTripReference": "string",
- "custom": true,
- "labels": [
- {
- "name": "string",
- "code": "string"
}
], - "driverNoteText": "string",
- "noteText": "string",
- "disabled": true,
- "type": "standby",
- "id": "string"
}
]
}
]
}
}
}
This API provides access to the Operational Plan of a public transport organization managed via Optibus Operations for a specified date range. It returns the daily operational plans grouped by depot. Each depot has it's own operational plan. Each item in the response represents one of the requested depots. If no specific depots are requested then all depots are returned.
Brief overview of the returned concepts for the operational plan of a depot:
Vehicles: This entity represents the buses or transportation units within the fleet, equipped with various operational capabilities and passenger amenities. Attributes cover technological features (e.g., videoSurveillance, passengerCounting), accessibility options (e.g. ramp), and ecological considerations (e.g. ecological). Each vehicle is uniquely identified, allowing for precise tracking and operational assignments.
Drivers: Individuals responsible for operating the vehicles. The entity stores personal and operational information, including a unique identifier (id, uuid), name attributes (firstName, lastName, middleName), and an archived status indicating whether the driver is currently active.
Assignments: A complex record of operations for each calendar date. Each assignment links vehicles and drivers with their respective operational blocks and tasks. Where assignments have not been allocated vehicles and/or drivers these fields will be empty - an assignment can be "uncovered" so to say.
Blocks: Blocks represent a sequence of trips or duties assigned to a vehicle, encapsulating its journey from the start to the end of service, including depot movements. Blocks are crucial for organizing daily operations and are characterized by attributes like disabled and type, indicating their status and category.
Tasks: Operational activities detailed within the system, signifying specific duties or responsibilities. Tasks are associated with blocks and assignments, indicating the scheduled activities for vehicles and drivers. Attributes within tasks include type, startTime, endTime, and related operational details, providing a granular view of daily duties.
Notes:
RosterDutyEventReference
is an instance that occurs within the "blocks" section, serving as a pointer to the "tasks" section. Each block comprises an array of events, each with a dutyId
, an eventId
, and an originRosterId
.
Within the "tasks" array, the same event can be identified by examining the Id
field of the task, which will match the dutyId
specified in the block's section.
When referencing the eventId
in the block's array, it directs to the "events" array, where its uuId corresponds to the eventId
previously identified in the block's array. This event contains information such as start time, end time, and other relevant details.
In rare cases, an event may be designated as vehicle-only, such as a recharge event. In these instances, it won't have a dutyId
or eventId
, and instead, the event's information will be directly displayed within the block section itself.OnScheduleEventsTypes.Deadhead
, OtherEventTypes.PullIn
and OtherEventTypes.PullOut
A pull-in signifies the idle trip from the service to the depot, while a pull-out denotes the idle trip from the depot to the service. A standard deadhead represents an idle trip between these two services. Apart from the event type, all other parameters and the amount of data remain consistent.
To distinguish between a pull-in, pull-out, or plain deadhead, it's necessary to inspect the subtype information associated with the event.fromDate required | string <date> (StringifyDate)
|
toDate required | string <date> (StringifyDate)
|
depotUuids | string Example: depotUuids=72999313-c6d3-44a3-9e64-a8cbce779ed7,e09cc074-b949-4d39-97b5-d2fa5eb1cdc5
|
driverUuids | string
|
includeStops | string
|
includeUnassigned | string
|
fetchPlannedAssignmentsProperties | boolean
|
[- {
- "depotName": "(ED) Example Depot",
- "depotUuid": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "opUnits": [
- {
- "uuid": "e23c5e7f-4f24-45ad-8c06-7ea514ab3422",
- "name": "Example Unit",
- "code": "EXU"
}
], - "assignments": [
- {
- "date": "2024-01-18",
- "vehicleAssignments": [
- {
- "assignments": [
- "0730b92a-082e-444c-9642-c5b92ead4d99"
]
}
], - "driverAssignments": [
- {
- "driver": "19380",
- "assignments": [
- "ff7a0520-c35d-49bd-8d55-cbf640ab2b27"
]
}
], - "plannedAssignments": [
- {
- "driver": "19380",
- "assignments": [
- "ff7a0520-c35d-49bd-8d55-cbf640ab2b27"
]
}
], - "properties": [
- {
- "taskId": "ff7a0520-c35d-49bd-8d55-cbf640ab2b27",
- "labels": [
- {
- "name": "DirectExchange",
- "code": "DX"
}
], - "opUnitUuid": "e23c5e7f-4f24-45ad-8c06-7ea514ab3422",
- "attributes": {
- "distance": 123
}, - "assignmentType": "driverAssignment"
}, - {
- "taskId": "ff7a0520-c35d-49bd-8d55-cbf640ab2b27",
- "opUnitUuid": "e23c5e7f-4f24-45ad-8c06-7ea514ab3422",
- "assignmentType": "plannedAssignment"
}
]
}
], - "blocks": [
- {
- "id": "0730b92a-082e-444c-9642-c5b92ead4d99",
- "displayId": "22606",
- "type": "block",
- "summary": {
- "type": "Double Decker",
- "serviceId": "elZ0TTBBclJhZWs9",
- "rosterSourceId": "qF0tdEWiB",
- "rosterDatasetId": "Fme9uj8Xo",
- "scheduleDatasetId": "JuEsdCizGj"
}, - "events": [
- {
- "dutyId": "86650e7e-c036-4fd1-b8e8-ff3e69ad2d15",
- "eventId": "f09ae7f6-18b5-48d4-af80-ee72fe493ce9",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "86650e7e-c036-4fd1-b8e8-ff3e69ad2d15",
- "eventId": "c3903f31-5e8b-4476-b110-2729a280f6ee",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "86650e7e-c036-4fd1-b8e8-ff3e69ad2d15",
- "eventId": "55777353-328a-4ca1-a2d9-5fe37e1af0ba",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "86650e7e-c036-4fd1-b8e8-ff3e69ad2d15",
- "eventId": "8a5cae94-47c6-49ac-88b0-64d5c46cbf52",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "86650e7e-c036-4fd1-b8e8-ff3e69ad2d15",
- "eventId": "51b21adb-ff5d-4208-b733-d9329442a82e",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "86650e7e-c036-4fd1-b8e8-ff3e69ad2d15",
- "eventId": "bababc2a-cdec-4bb4-bdde-90e01f57995e",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "86650e7e-c036-4fd1-b8e8-ff3e69ad2d15",
- "eventId": "28d4ed4c-95a4-4e08-831a-8be5ead1e85e",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "86650e7e-c036-4fd1-b8e8-ff3e69ad2d15",
- "eventId": "c3f98114-84c2-4112-833f-196f5f1d28bd",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "86650e7e-c036-4fd1-b8e8-ff3e69ad2d15",
- "eventId": "6e9ec26f-4b1e-4f5b-bbee-c328b8f0e24b",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "2ee73657-a34f-426e-973d-fcba16f9ddb0",
- "eventId": "b43ed3c4-1d29-4295-8883-b68bea736363",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "2ee73657-a34f-426e-973d-fcba16f9ddb0",
- "eventId": "ecce2515-2f02-42dc-97d4-1b1d084c6fdc",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "2ee73657-a34f-426e-973d-fcba16f9ddb0",
- "eventId": "71f87166-48b3-4c9e-8ca4-8fdb7c1a31f1",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "2ee73657-a34f-426e-973d-fcba16f9ddb0",
- "eventId": "ecf600e2-b21d-498a-9ebf-c7d41bd33bde",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "2ee73657-a34f-426e-973d-fcba16f9ddb0",
- "eventId": "c705dae3-6f18-42aa-ad31-a65977af6de9",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "2ee73657-a34f-426e-973d-fcba16f9ddb0",
- "eventId": "7a58057f-89a7-4c89-8430-7af17f9f3ff5",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "2ee73657-a34f-426e-973d-fcba16f9ddb0",
- "eventId": "3c2cda08-7f74-48ab-a01d-755981683686",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "2ee73657-a34f-426e-973d-fcba16f9ddb0",
- "eventId": "44d4a7c4-da3b-4269-bc79-38dc493e2628",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "2ee73657-a34f-426e-973d-fcba16f9ddb0",
- "eventId": "630e542b-3725-497f-8527-ebba6f7184b4",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "2ee73657-a34f-426e-973d-fcba16f9ddb0",
- "eventId": "409a62bb-ebe4-4a10-8eb3-4125acec2380",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "2ee73657-a34f-426e-973d-fcba16f9ddb0",
- "eventId": "ef33c7c5-082b-4899-a4f2-353fca477255",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "2ee73657-a34f-426e-973d-fcba16f9ddb0",
- "eventId": "7ee6694a-ac6a-4630-b21a-71ff030014d3",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "2ee73657-a34f-426e-973d-fcba16f9ddb0",
- "eventId": "b132ef5a-c4d4-46ba-b1d3-57b4d0f6c5ce",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "2ee73657-a34f-426e-973d-fcba16f9ddb0",
- "eventId": "42a1c8d6-54aa-4d3c-a062-2dd878aaac6e",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "2ee73657-a34f-426e-973d-fcba16f9ddb0",
- "eventId": "a03e3a04-e70c-425d-b389-388234390907",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "2ee73657-a34f-426e-973d-fcba16f9ddb0",
- "eventId": "c2410c65-7a0b-4ebe-b78f-8c42e874f451",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "2ee73657-a34f-426e-973d-fcba16f9ddb0",
- "eventId": "402952a9-3645-49de-872b-59836ef80e80",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "2ee73657-a34f-426e-973d-fcba16f9ddb0",
- "eventId": "2fa57646-c5a7-4244-b749-807f5ba8082e",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "bc996392-974e-4e24-9b6a-237f6529de2e",
- "eventId": "200cb944-d0ae-4a0a-856c-4b5ea8e363d4",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "bc996392-974e-4e24-9b6a-237f6529de2e",
- "eventId": "7e16656c-e365-49e2-8ae8-177f5453798a",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "bc996392-974e-4e24-9b6a-237f6529de2e",
- "eventId": "a9ffa0b7-4ddd-42c4-b9f0-612c0524114f",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "bc996392-974e-4e24-9b6a-237f6529de2e",
- "eventId": "2012cd2e-74c1-445f-ad5a-feeee3943afe",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "bc996392-974e-4e24-9b6a-237f6529de2e",
- "eventId": "56a3d8cb-f446-4da7-aded-32e8635c19a7",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "bc996392-974e-4e24-9b6a-237f6529de2e",
- "eventId": "0d3a05e8-624c-4459-9286-347007fd1e3c",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "bc996392-974e-4e24-9b6a-237f6529de2e",
- "eventId": "24a9d01b-8226-4f96-ab85-34cac9b86585",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "bc996392-974e-4e24-9b6a-237f6529de2e",
- "eventId": "c687db43-580c-4f2b-aca8-f88b76e0c821",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "bc996392-974e-4e24-9b6a-237f6529de2e",
- "eventId": "6ffad840-7597-4620-9f80-089790ec3649",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "bc996392-974e-4e24-9b6a-237f6529de2e",
- "eventId": "2eec623a-1cd5-4a68-8f6c-cea9e00e5fae",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "bc996392-974e-4e24-9b6a-237f6529de2e",
- "eventId": "ea6f68af-f80b-4d40-ab7b-a4fb5f910277",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "bc996392-974e-4e24-9b6a-237f6529de2e",
- "eventId": "3d59860c-a55f-48d2-aace-f8ff0164f74e",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "bc996392-974e-4e24-9b6a-237f6529de2e",
- "eventId": "9c60c6c2-b886-4a98-8bfd-652e95cd3850",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "bc996392-974e-4e24-9b6a-237f6529de2e",
- "eventId": "865052ce-a151-470b-b1cf-e03c20157341",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "bc996392-974e-4e24-9b6a-237f6529de2e",
- "eventId": "f17a09a2-5800-42c1-a7f4-015a81fa207d",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "bc996392-974e-4e24-9b6a-237f6529de2e",
- "eventId": "54a23955-1fa9-480d-8026-984f6d5680ff",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "bc996392-974e-4e24-9b6a-237f6529de2e",
- "eventId": "f2655562-02b8-42d4-a24d-bf171c2cbf6b",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}, - {
- "dutyId": "bc996392-974e-4e24-9b6a-237f6529de2e",
- "eventId": "05f1caf2-7564-42a0-baaf-375773680fa5",
- "originRosterId": "6a461756-8918-4043-9e9a-efb3ac3f691d"
}
], - "disabled": false,
- "optibusIds": {
- "optibusRosterId": "qF0tdEWiB",
- "optibusRosterDatasetId": "Fme9uj8Xo",
- "optibusScheduleId": "JuEsdCizGj",
- "optibusTimeplanId": "XNchdCce-Cy/8297"
}, - "wasModifiedInOperations": false,
- "source": "scheduling"
}
], - "tasks": [
- {
- "displayId": "1004",
- "summary": {
- "routes": [
- "201"
], - "startTime": 291,
- "endTime": 811,
- "rosterSourceId": "qF0tdEWiB",
- "rosterDatasetId": "Fme9uj8Xo",
- "scheduleDatasetId": "JuEsdCizGj",
- "serviceId": "elZ0TTBBclJhZWs9",
- "serviceName": "Mon-Fri",
- "originDepotId": "BT",
- "originDepotLabel": "(ED) Example Depot",
- "originDepotName": "Example Depot",
- "originStopId": "BT",
- "originStopLabel": "(ED) Example Depot",
- "originStopName": "Example Depot",
- "destinationStopId": "615068",
- "destinationStopLabel": "(615068) Blantyre Ind Est E",
- "destinationStopName": "Blantyre Ind Est E"
}, - "events": [
- {
- "endTime": 296,
- "eventType": "sign_on",
- "startTime": 291,
- "id": "3056bc22",
- "dutyId": "1004",
- "origin": {
- "id": "BT",
- "time": "04:51:00"
}, - "destination": {
- "id": "BT",
- "time": "04:56:00"
}, - "uuid": "3c21ad6c-f095-41a4-acf3-76497e110c0a"
}, - {
- "endTime": 301,
- "eventType": "pre_trip",
- "startTime": 296,
- "id": "-f9b8089",
- "dutyId": "1004",
- "origin": {
- "id": "BT",
- "time": "04:56:00"
}, - "vehicleId": "20106",
- "destination": {
- "id": "BT",
- "time": "05:01:00"
}, - "blockId": "20106",
- "uuid": "9ab737ba-5c48-4447-b763-358c8f0fefb9"
}, - {
- "endTime": 326,
- "eventType": "deadhead",
- "startTime": 301,
- "id": "62cb2714",
- "dutyId": "1004",
- "origin": {
- "id": "BT",
- "time": "05:01:00"
}, - "depotId": "BT",
- "subType": "depot_pull_out",
- "distance": 0,
- "generated": false,
- "vehicleId": "20106",
- "destination": {
- "id": "6160946",
- "time": "05:26:00"
}, - "blockId": "20106",
- "uuid": "6cb71fe8-a288-4fe7-8931-43a4ef748e95"
}, - {
- "endTime": 339,
- "eventType": "service_trip",
- "startTime": 326,
- "id": "343_1",
- "sign": "201",
- "dutyId": "1004",
- "origin": {
- "id": "6160946",
- "time": "05:26:00",
- "isTimePoint": true
}, - "pattern": "B",
- "distance": 2.7119999999999997,
- "parentId": "343",
- "parentSubTrips": [
- "343_1",
- "343_2",
- "343_3",
- "343_4"
], - "direction": 2,
- "vehicleId": "20106",
- "destination": {
- "id": "6160744",
- "time": "05:39:00",
- "isTimePoint": true
}, - "subTripIndex": 1,
- "directionName": "INBOUND",
- "parentEventId": "99c50f06-899a-415b-a06f-f063e3992fc4",
- "optibusRouteId": "FGAO201-2-B_1",
- "blockId": "20106",
- "uuid": "6ea5b810-eda6-4cfd-8bb5-c919175067e4"
}, - {
- "endTime": 378,
- "eventType": "service_trip",
- "startTime": 340,
- "id": "343_2",
- "sign": "201",
- "dutyId": "1004",
- "origin": {
- "id": "6160744",
- "time": "05:40:00",
- "isTimePoint": true
}, - "pattern": "B",
- "distance": 10.866,
- "parentId": "343",
- "parentSubTrips": [
- "343_1",
- "343_2",
- "343_3",
- "343_4"
], - "direction": 2,
- "vehicleId": "20106",
- "destination": {
- "id": "61501662",
- "time": "06:18:00",
- "isTimePoint": true
}, - "subTripIndex": 2,
- "directionName": "INBOUND",
- "parentEventId": "99c50f06-899a-415b-a06f-f063e3992fc4",
- "optibusRouteId": "FGAO201-2-B_2",
- "blockId": "20106",
- "uuid": "0ef122f3-7013-48bc-8ca7-252c755a2401"
}, - {
- "endTime": 389,
- "eventType": "service_trip",
- "startTime": 381,
- "id": "343_3",
- "sign": "201",
- "dutyId": "1004",
- "origin": {
- "id": "61501662",
- "time": "06:21:00",
- "isTimePoint": true
}, - "pattern": "B",
- "distance": 2.009,
- "parentId": "343",
- "parentSubTrips": [
- "343_1",
- "343_2",
- "343_3",
- "343_4"
], - "direction": 2,
- "vehicleId": "20106",
- "destination": {
- "id": "615069",
- "time": "06:29:00",
- "isTimePoint": true
}, - "subTripIndex": 3,
- "directionName": "INBOUND",
- "parentEventId": "99c50f06-899a-415b-a06f-f063e3992fc4",
- "optibusRouteId": "FGAO201-2-B_3",
- "blockId": "20106",
- "uuid": "f2dfea4c-02a8-4112-9934-13212d203df4"
}, - {
- "endTime": 422,
- "eventType": "service_trip",
- "startTime": 389,
- "id": "343_4",
- "sign": "201",
- "dutyId": "1004",
- "origin": {
- "id": "615069",
- "time": "06:29:00",
- "isTimePoint": true
}, - "pattern": "B",
- "distance": 9.21,
- "parentId": "343",
- "parentSubTrips": [
- "343_1",
- "343_2",
- "343_3",
- "343_4"
], - "direction": 2,
- "vehicleId": "20106",
- "destination": {
- "id": "6150892",
- "time": "07:02:00",
- "isTimePoint": true
}, - "subTripIndex": 4,
- "directionName": "INBOUND",
- "parentEventId": "99c50f06-899a-415b-a06f-f063e3992fc4",
- "optibusRouteId": "FGAO201-2-B_4",
- "blockId": "20106",
- "uuid": "63757824-e263-4b98-a3b7-78b68e5e7f28"
}, - {
- "endTime": 471,
- "eventType": "service_trip",
- "startTime": 434,
- "id": "344_1",
- "sign": "201",
- "dutyId": "1004",
- "origin": {
- "id": "6150892",
- "time": "07:14:00",
- "isTimePoint": true
}, - "pattern": "A",
- "distance": 8.921999999999999,
- "parentId": "344",
- "parentSubTrips": [
- "344_1",
- "344_2"
], - "direction": 1,
- "vehicleId": "20106",
- "destination": {
- "id": "615068",
- "time": "07:51:00",
- "isTimePoint": true
}, - "subTripIndex": 1,
- "directionName": "OUTBOUND",
- "parentEventId": "5256e566-835d-4712-b281-cc38b55ee597",
- "optibusRouteId": "FGAO201-1-A_1",
- "blockId": "20106",
- "uuid": "fe8f6362-b7c4-4f89-a0a3-21fd6aa11ec0"
}, - {
- "endTime": 481,
- "eventType": "taxi",
- "startTime": 471,
- "id": "-1dd80462",
- "origin": {
- "id": "615068",
- "time": "07:51:00"
}, - "distance": 0.1,
- "passengers": [
- "1004"
], - "destination": {
- "id": "BT",
- "time": "08:01:00"
}, - "isReliefCar": true,
- "uuid": "ae506819-69d6-4bbb-82e9-53de004b658c"
}, - {
- "endTime": 521,
- "eventType": "break",
- "startTime": 481,
- "breakId": "Meal Break Depot",
- "event_id": "1da93417-f146-47f6-becd-f4158a0834f4",
- "paidTime": 40,
- "extraTime": 0,
- "uuid": "1da93417-f146-47f6-becd-f4158a0834f4"
}, - {
- "endTime": 531,
- "eventType": "taxi",
- "startTime": 521,
- "id": "-6b76d95d",
- "origin": {
- "id": "BT",
- "time": "08:41:00"
}, - "distance": 0.1,
- "passengers": [
- "1004"
], - "destination": {
- "id": "615068",
- "time": "08:51:00"
}, - "isReliefCar": true,
- "uuid": "4bc9499d-8b13-4957-99bd-20485694945b"
}, - {
- "endTime": 532,
- "eventType": "attendance",
- "startTime": 531,
- "id": "-5ed6cb27",
- "dutyId": "1004",
- "origin": {
- "id": "615068",
- "time": "08:51:00"
}, - "vehicleId": "20112",
- "destination": {
- "id": "615068",
- "time": "08:52:00"
}, - "blockId": "20112",
- "uuid": "55db950d-409e-410e-939c-ef0a85bb9db5"
}, - {
- "endTime": 620,
- "eventType": "service_trip",
- "startTime": 532,
- "id": "383_2",
- "sign": "201",
- "dutyId": "1004",
- "origin": {
- "id": "615068",
- "time": "08:52:00",
- "isTimePoint": true
}, - "pattern": "A",
- "distance": 17.408,
- "parentId": "383",
- "parentSubTrips": [
- "383_1",
- "383_2"
], - "direction": 1,
- "vehicleId": "20112",
- "destination": {
- "id": "61601733",
- "time": "10:20:00",
- "isTimePoint": true
}, - "subTripIndex": 2,
- "directionName": "OUTBOUND",
- "parentEventId": "ec2b948d-5ba3-4934-bfed-04f9cdab53b4",
- "optibusRouteId": "FGAO201-1-A_2",
- "blockId": "20112",
- "uuid": "9e73b946-d260-4c04-810e-6acdee580873"
}, - {
- "endTime": 663,
- "eventType": "service_trip",
- "startTime": 634,
- "id": "384_1",
- "sign": "201",
- "dutyId": "1004",
- "origin": {
- "id": "61601733",
- "time": "10:34:00",
- "isTimePoint": true
}, - "pattern": "-",
- "distance": 5.387999999999999,
- "parentId": "384",
- "parentSubTrips": [
- "384_1",
- "384_2",
- "384_3",
- "384_4"
], - "direction": 2,
- "vehicleId": "20112",
- "destination": {
- "id": "6160744",
- "time": "11:03:00",
- "isTimePoint": true
}, - "subTripIndex": 1,
- "directionName": "INBOUND",
- "parentEventId": "d487a149-afe7-4aa8-ad41-f26676f10175",
- "optibusRouteId": "FGAO201-2--_1",
- "blockId": "20112",
- "uuid": "00006cf7-486c-4d31-a5b6-120ee37b38b7"
}, - {
- "endTime": 712,
- "eventType": "service_trip",
- "startTime": 665,
- "id": "384_2",
- "sign": "201",
- "dutyId": "1004",
- "origin": {
- "id": "6160744",
- "time": "11:05:00",
- "isTimePoint": true
}, - "pattern": "-",
- "distance": 10.866,
- "parentId": "384",
- "parentSubTrips": [
- "384_1",
- "384_2",
- "384_3",
- "384_4"
], - "direction": 2,
- "vehicleId": "20112",
- "destination": {
- "id": "61501662",
- "time": "11:52:00",
- "isTimePoint": true
}, - "subTripIndex": 2,
- "directionName": "INBOUND",
- "parentEventId": "d487a149-afe7-4aa8-ad41-f26676f10175",
- "optibusRouteId": "FGAO201-2--_2",
- "blockId": "20112",
- "uuid": "f4e114f2-ab5f-4420-91a3-b932bed49e30"
}, - {
- "endTime": 725,
- "eventType": "service_trip",
- "startTime": 715,
- "id": "384_3",
- "sign": "201",
- "dutyId": "1004",
- "origin": {
- "id": "61501662",
- "time": "11:55:00",
- "isTimePoint": true
}, - "pattern": "-",
- "distance": 2.009,
- "parentId": "384",
- "parentSubTrips": [
- "384_1",
- "384_2",
- "384_3",
- "384_4"
], - "direction": 2,
- "vehicleId": "20112",
- "destination": {
- "id": "615069",
- "time": "12:05:00",
- "isTimePoint": true
}, - "subTripIndex": 3,
- "directionName": "INBOUND",
- "parentEventId": "d487a149-afe7-4aa8-ad41-f26676f10175",
- "optibusRouteId": "FGAO201-2--_3",
- "blockId": "20112",
- "uuid": "65ea83de-42f8-4b0d-b881-69d91c8500fc"
}, - {
- "endTime": 760,
- "eventType": "service_trip",
- "startTime": 726,
- "id": "384_4",
- "sign": "201",
- "dutyId": "1004",
- "origin": {
- "id": "615069",
- "time": "12:06:00",
- "isTimePoint": true
}, - "pattern": "-",
- "distance": 9.21,
- "parentId": "384",
- "parentSubTrips": [
- "384_1",
- "384_2",
- "384_3",
- "384_4"
], - "direction": 2,
- "vehicleId": "20112",
- "destination": {
- "id": "6150892",
- "time": "12:40:00",
- "isTimePoint": true
}, - "subTripIndex": 4,
- "directionName": "INBOUND",
- "parentEventId": "d487a149-afe7-4aa8-ad41-f26676f10175",
- "optibusRouteId": "FGAO201-2--_4",
- "blockId": "20112",
- "uuid": "1ce3d503-18df-4cbf-bb2c-3eb1db676cda"
}, - {
- "endTime": 811,
- "eventType": "service_trip",
- "startTime": 774,
- "id": "385_1",
- "sign": "201",
- "dutyId": "1004",
- "origin": {
- "id": "6150892",
- "time": "12:54:00",
- "isTimePoint": true
}, - "pattern": "A",
- "distance": 8.921999999999999,
- "parentId": "385",
- "parentSubTrips": [
- "385_1",
- "385_2"
], - "direction": 1,
- "vehicleId": "20112",
- "destination": {
- "id": "615068",
- "time": "13:31:00",
- "isTimePoint": true
}, - "subTripIndex": 1,
- "directionName": "OUTBOUND",
- "parentEventId": "84b11531-6e1e-4c65-80b6-e82fac41c74f",
- "optibusRouteId": "FGAO201-1-A_1",
- "blockId": "20112",
- "uuid": "9beb28f1-af1c-4fca-bec1-e655bf9599bf"
}
], - "dutyType": "Early",
- "optibusIds": {
- "optibusRosterId": "qF0tdEWiB",
- "optibusRosterDatasetId": "Fme9uj8Xo",
- "optibusScheduleId": "JuEsdCizGj",
- "optibusTimeplanId": "XNchdCce-Cy/8297"
}, - "wasModifiedInOperations": false,
- "source": "scheduling",
- "id": "ff7a0520-c35d-49bd-8d55-cbf640ab2b27",
- "type": "duty",
- "attributes": {
- "distance": 321
}
}
], - "vehicles": [
- {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "type": "A",
- "id": "010",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "type": "A",
- "id": "012590",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "type": "A",
- "id": "0600",
- "archived": false,
- "accessories": [
- "USB",
- "WiFi"
]
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "type": "A",
- "id": "1099",
- "archived": false,
- "doubledecker": false,
- "mileage": 3,
- "typology": 6
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "type": "A",
- "id": "13500",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "type": "A",
- "id": "200",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "type": "A",
- "id": "5500",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz Conecto G",
- "licensePlate": "129",
- "id": "A-001",
- "archived": false,
- "nextservice": "2024-01-31"
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz Conecto G",
- "licensePlate": "219",
- "id": "A-002",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz Conecto G",
- "licensePlate": "220",
- "id": "A-003",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz Conecto G",
- "licensePlate": "221",
- "id": "A-004",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz Conecto G",
- "licensePlate": "222",
- "id": "A-005",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz Conecto G",
- "licensePlate": "223",
- "id": "A-006",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz Conecto G",
- "licensePlate": "224",
- "id": "A-007",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz Conecto G",
- "licensePlate": "225",
- "id": "A-008",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz Conecto G",
- "licensePlate": "226",
- "id": "A-009",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz Conecto G",
- "licensePlate": "227",
- "id": "A-010",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz Conecto G",
- "licensePlate": "228",
- "id": "A-011",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz Conecto G",
- "licensePlate": "130",
- "id": "A-012",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz Conecto G",
- "licensePlate": "229",
- "id": "A-013",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz Conecto G",
- "licensePlate": "230",
- "id": "A-014",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz Conecto G",
- "licensePlate": "231",
- "id": "A-015",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "New Routemaster",
- "licensePlate": "135",
- "id": "DD-001",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "New Routemaster",
- "licensePlate": "136",
- "id": "DD-002",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "New Routemaster",
- "licensePlate": "137",
- "id": "DD-003",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "New Routemaster",
- "licensePlate": "138",
- "id": "DD-004",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "New Routemaster",
- "licensePlate": "139",
- "id": "DD-005",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "140",
- "id": "LF-001",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "141",
- "id": "LF-002",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "142",
- "id": "LF-003",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "143",
- "id": "LF-004",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "144",
- "id": "LF-005",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "145",
- "id": "LF-006",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "146",
- "id": "LF-007",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "147",
- "id": "LF-008",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "148",
- "id": "LF-009",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "149",
- "id": "LF-010",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "150",
- "id": "LF-011",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "151",
- "id": "LF-012",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "152",
- "id": "LF-013",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "153",
- "id": "LF-014",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "154",
- "id": "LF-015",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "155",
- "id": "LF-016",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "156",
- "id": "LF-017",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "157",
- "id": "LF-018",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "158",
- "id": "LF-019",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "123",
- "id": "LF-020",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "159",
- "id": "LF-021",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "160",
- "id": "LF-022",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "161",
- "id": "LF-023",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "162",
- "id": "LF-024",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "163",
- "id": "LF-025",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "164",
- "id": "LF-026",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "165",
- "id": "LF-027",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "166",
- "id": "LF-028",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "167",
- "id": "LF-029",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "168",
- "id": "LF-030",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "124",
- "id": "LF-031",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "169",
- "id": "LF-032",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "170",
- "id": "LF-033",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "171",
- "id": "LF-034",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "172",
- "id": "LF-035",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "173",
- "id": "LF-036",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "174",
- "id": "LF-037",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "175",
- "id": "LF-038",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "176",
- "id": "LF-039",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "177",
- "id": "LF-040",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "178",
- "id": "LF-041",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "125",
- "id": "LF-042",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "179",
- "id": "LF-043",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "180",
- "id": "LF-044",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "181",
- "id": "LF-045",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "182",
- "id": "LF-046",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "183",
- "id": "LF-047",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "184",
- "id": "LF-048",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "185",
- "id": "LF-049",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "186",
- "id": "LF-050",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "187",
- "id": "LF-051",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "188",
- "id": "LF-052",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "126",
- "id": "LF-053",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "189",
- "id": "LF-054",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "190",
- "id": "LF-055",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "191",
- "id": "LF-056",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "192",
- "id": "LF-057",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "193",
- "id": "LF-058",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "194",
- "id": "LF-059",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "195",
- "id": "LF-060",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "196",
- "id": "LF-061",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "197",
- "id": "LF-062",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "198",
- "id": "LF-063",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "127",
- "id": "LF-064",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "199",
- "id": "LF-065",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "200",
- "id": "LF-066",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "201",
- "id": "LF-067",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "202",
- "id": "LF-068",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "203",
- "id": "LF-069",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "204",
- "id": "LF-070",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "205",
- "id": "LF-071",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "206",
- "id": "LF-072",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "207",
- "id": "LF-073",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "208",
- "id": "LF-074",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "128",
- "id": "LF-075",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "209",
- "id": "LF-076",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "210",
- "id": "LF-077",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "211",
- "id": "LF-078",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "212",
- "id": "LF-079",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "213",
- "id": "LF-080",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "214",
- "id": "LF-081",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "215",
- "id": "LF-082",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "216",
- "id": "LF-083",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "217",
- "id": "LF-084",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "218",
- "id": "LF-085",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "232",
- "id": "SD-001",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "233",
- "id": "SD-002",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "234",
- "id": "SD-003",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "235",
- "id": "SD-004",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "236",
- "id": "SD-005",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "237",
- "id": "SD-006",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "238",
- "id": "SD-007",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "131",
- "id": "SD-008",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "239",
- "id": "SD-009",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "133",
- "id": "SD-010",
- "archived": false
}, - {
- "depot": "4ed91508-d43c-4267-958e-65dd61060d2c",
- "description": "some desc",
- "model": "Mercedes-Benz O530 Citaro G",
- "licensePlate": "134",
- "id": "SD-011",
- "archived": false
}
], - "drivers": [
- {
- "uuid": "19380",
- "id": "19380",
- "firstName": "Daniel",
- "lastName": "Doe",
- "middleName": "",
- "archived": false
}
]
}
]
Returns the Daily and Weekly tasks for a specified date range, with filters. Responds with 302 redirect when payload is too big. OriginalDriverId refers to the driver that was assigned to the task in the plan page
depotId required | string (UUID)
|
from required | string <date> (StringifyDate)
|
to required | string <date> (StringifyDate)
|
plan | Array of strings (UUID)
|
group | Array of strings
|
type | Array of strings (TaskType) Items Enum: "duty" "day_off" "standby" "spare" "custom"
|
assignedOnly | boolean
|
includeStops | boolean
|
driversIds | Array of strings (UUID)
|
{- "calendarVehicleAssignments": [
- {
- "tasks": [
- {
- "originalVehicleId": "string",
- "vehicleId": "string",
- "blockId": "string"
}
], - "date": "2019-08-24"
}
], - "blocks": [
- {
- "disabled": true,
- "srcBlockId": "string",
- "data": null,
- "summary": {
- "type": "string",
- "property1": null,
- "property2": null
}, - "events": [
- {
- "originRosterId": "string",
- "deleted": true,
- "originalDutyId": "string",
- "dutyId": "string",
- "eventId": "string"
}
], - "type": "block",
- "description": "string",
- "displayId": "string",
- "id": "string",
- "source": "scheduling",
- "wasModifiedInOperations": true,
- "optibusIds": {
- "optibusTimeplanId": "string",
- "optibusScheduleId": "string",
- "optibusRosterDatasetId": "string",
- "optibusRosterId": "string"
}
}
], - "tasks": [
- {
- "id": "string",
- "description": "string",
- "type": "duty",
- "attributes": {
- "property1": [
- 0.1
], - "property2": [
- 0.1
]
}, - "displayId": "string",
- "srcTaskId": "string",
- "data": null,
- "rosterDatasetId": "string",
- "scheduleId": "string",
- "copiedTaskId": "string",
- "summary": {
- "destinationStop": "string",
- "destinationDepot": "string",
- "originStop": "string",
- "originDepot": "string",
- "startTime": 0,
- "serviceName": "string",
- "serviceId": "string",
- "timePlanId": "string",
- "scheduleDatasetId": "string",
- "routes": [
- "string"
], - "rosterSourceId": "string",
- "rosterDatasetId": "string",
- "endTime": 0
}, - "dutyType": "string",
- "source": "scheduling",
- "wasModifiedInOperations": true,
- "optibusIds": {
- "optibusTimeplanId": "string",
- "optibusScheduleId": "string",
- "optibusRosterDatasetId": "string",
- "optibusRosterId": "string"
}, - "events": [
- {
- "eventType": "deadhead",
- "eventId": "string",
- "eventJsonData": {
- "subType": "deadhead",
- "depotId": "string",
- "distance": 0.1,
- "generated": true,
- "generatedUsingGenerator": true,
- "properties": {
- "property1": null,
- "property2": null
}, - "vehicleId": "string",
- "dutyId": "string",
- "passengers": [
- {
- "publicTravelId": "string",
- "dutyId": "string"
}
], - "carId": "string",
- "stops": [
- {
- "time": "string",
- "isTimePoint": true,
- "id": "string",
- "lat": 0.1,
- "long": 0.1,
- "isCustom": true
}
], - "destination": {
- "time": "string",
- "isTimePoint": true,
- "id": "string",
- "lat": 0.1,
- "long": 0.1,
- "isCustom": true
}, - "origin": {
- "time": "string",
- "isTimePoint": true,
- "id": "string",
- "lat": 0.1,
- "long": 0.1,
- "isCustom": true
}, - "signPost": "string",
- "id": "string",
- "subTripIndex": 0.1,
- "isLastSubTrip": true,
- "isFirstSubTrip": true,
- "parentSubTrips": [
- "string"
], - "parentProperties": {
- "property1": null,
- "property2": null
}, - "parentTripId": "string",
- "parentEventId": "string",
- "blockId": "string"
}, - "endTime": 0,
- "startTime": 0,
- "splitTripReference": "string",
- "custom": true,
- "labels": [
- {
- "name": "string",
- "code": "string"
}
], - "driverNoteText": "string",
- "noteText": "string",
- "disabled": true,
- "type": "standby",
- "id": "string"
}
]
}
], - "DailyTasks": [
- {
- "tasks": [
- {
- "opUnitUuid": "string",
- "cancellationReason": {
- "reasonCode": "string",
- "reason": "string"
}, - "disabled": true,
- "driverId": "string",
- "taskId": "string",
- "attributes": {
- "property1": [
- 0.1
], - "property2": [
- 0.1
]
}, - "labels": [
- {
- "name": "string",
- "code": "string"
}
], - "vehicleId": "string",
- "originalDriverId": "string"
}
], - "date": "2019-08-24"
}
], - "deployedPlans": [
- {
- "deployDateRange": {
- "to": "2019-08-24",
- "from": "2019-08-24"
}, - "group": "string",
- "rosterId": "string",
- "plan": "string"
}
], - "depotId": "string"
}
Retrieves workEntities values for depots within a specified date range and for specified driver IDs or by depotId. There is a limit of 204k work-entities calculation per request to avoid timeouts. This limit enables, for example, a calculation of 100 drivers for 30 days with 100 daily work-entities defined. In case the limit is exceeded, a 413 error code will be returned, together with the allowed amount of drivers for the existing configuration.
depotId | string (DepotId)
|
driverIds | Array of strings (DriverUuid)
|
startDate | string <date> (StringifyDate)
|
endDate | string <date> (StringifyDate)
|
exportAllEntities | boolean
|
[- {
- "timeType": {
- "type": "day"
}, - "result": {
- "value": true,
- "type": "Boolean"
}, - "entityId": "string",
- "occurrenceDates": {
- "endDate": "2019-08-24",
- "startDate": "2019-08-24"
}, - "workingDriver": {
- "driverExternalId": "string",
- "driverUuid": "string"
}, - "depotId": "string"
}
]
Fetches the maximum number of drivers allowed per API request of payroll or work-entities for the given dates for a particular client. To prevent timeouts, there is a cap of 204000 work-entity calculations per request. This cap allows, for instance, the calculation of 100 drivers over a 30-day period with 100 daily work-entities specified.
startDate | string <date> (StringifyDate)
|
endDate | string <date> (StringifyDate)
|
{- "limit": 0.1
}
Retrieves payroll values for depots within a specified date range and for specified driver IDs or by depotId. There is a limit of 204k work-entities calculation per request to avoid timeouts. This limit enables, for example, a calculation of 100 drivers for 30 days with 100 daily work-entities defined. In case the limit is exceeded, a 413 error code will be returned, together with the allowed amount of drivers for the existing configuration.
This endpoint is only available if the Use Payroll V2
feature flag is enabled and work-entity as well as payroll rules have been properly setup.
depotId | string
|
driverIds | Array of strings
|
startDate | string <date> (StringifyDate)
|
endDate | string <date> (StringifyDate)
|
paycodes | Array of strings (CodeId)
|
[- {
- "occurrenceDates": {
- "endDate": "2019-08-24",
- "startDate": "2019-08-24"
}, - "result": {
- "timeIntervals": [
- {
- "end": "2019-08-24",
- "start": "2019-08-24"
}
], - "value": 0.1,
- "rate": 0.1,
- "unit": "Minutes"
}, - "periodType": "weekly",
- "workEntityIdReference": "string",
- "codeId": "string",
- "workingDriver": {
- "driverExternalId": "string",
- "driverUuid": "string"
}, - "depotId": "string"
}
]
This endpoint operates on eventual consistency. This means the private hire order is validated and enqueued for processing which is confirmed by a http 202 status response.
The actual processing happens asynchronously and typically takes a few seconds. To verify the order was successfully added, use the GetPrivateHireOrder
endpoint below specifying the the orderId
you used in this request.
Private hire orders and trips should be unique by orderId
and taskId
respectively in the system.
Once the order is created, resources to fulfill the trips, such as drivers and vehicles, can be only assigned through the Optibus OPS platform.
An order can be created directly with a status 'confirmed' or the status of an order can be updated using the endpoint PATCH /private_hires/order/{orderId}
.
By default on creation, if there's no status being set, the order is being consider virtually as pending
.
Multi-day trips must be divided into individual trips per operational day. Trips can commence as early as 00:00
and extend up to a maximum of 36:00
local time, meaning trips can conclude as late as 12:00
noon the following day.
Use cases that require trips to start and finish in different time zones are currently not supported.
orderStatus | string Value: "confirmed" | ||||||||||||||||||||||||||||||||
orderId required | string (OrderIdString) [ 1 .. 255 ] characters External identifier of a private hire order that should be unique within the system | ||||||||||||||||||||||||||||||||
required | Array of objects (PrivateHireTask) Representation of trips within a private hire order | ||||||||||||||||||||||||||||||||
Array
|
{- "orderStatus": "confirmed",
- "orderId": "string",
- "privateHires": [
- {
- "noVehicleNeeded": true,
- "note": "string",
- "labelCodes": [
- "string"
], - "events": [
- {
- "distance": 0.1,
- "note": "string",
- "labelCodes": [
- "string"
], - "endLocation": {
- "lng": 0.1,
- "lat": 0.1,
- "address": "string",
- "name": "string"
}, - "startLocation": {
- "lng": 0.1,
- "lat": 0.1,
- "address": "string",
- "name": "string"
}, - "endTime": "2024-06-30T23:30:00+02:00",
- "startTime": "2024-06-30T23:30:00+02:00",
- "type": "private_hire"
}
], - "date": "string",
- "depotName": "string",
- "taskId": "string"
}
]
}
null
As details of a private hire order and its trips can be modified in the OPS platform, external parties can use this endpoint to get the current state and details of a specific order, its trips, as well as the vehicle and driver resources associated.
Currently there's no support of a pushing mechanism in order to notify API consumers when something changes in resources that belong to a private hire order. As an alternative, until the push mechanism is implemented, this endpoint can be used following a polling strategy in order to identify changes that happen in a private hire order and the trips that belong to it.
orderId required | string External identifier of a private hire order that should be unique within the system |
{- "privateHires": [
- {
- "taskId": "string",
- "depotName": "string",
- "date": "string",
- "note": "string",
- "labels": [
- {
- "name": "string",
- "code": "string"
}
], - "vehicles": [
- {
- "id": "string",
- "eventIds": [
- "string"
], - "attributes": {
- "availableSeats": 0.1,
- "licensePlate": "string",
- "type": "string",
- "model": "string"
}
}
], - "driver": {
- "id": "string",
- "firstName": "string",
- "lastName": "string"
}, - "lockedAt": "2019-08-24",
- "events": [
- {
- "note": "string",
- "endLocation": {
- "lng": 0.1,
- "lat": 0.1,
- "address": "string",
- "name": "string"
}, - "startLocation": {
- "lng": 0.1,
- "lat": 0.1,
- "address": "string",
- "name": "string"
}, - "endTime": "2024-06-30T23:30:00+02:00",
- "startTime": "2024-06-30T23:30:00+02:00",
- "distance": 0.1,
- "type": "standby",
- "eventId": "string"
}
], - "depotCode": "string",
- "regionName": "string"
}
], - "cancelledAt": "2019-08-24",
- "confirmedAt": "2019-08-24",
- "orderId": "string"
}
confirmed
: status to determine that the order has been paid by the hiring entity.
In the OPS Optibus platform, when a trip has any driver or vehicle associated to a confirmed order, a warning message will be displayed to inform the dispatchers about this fact.cancelled
: status to cancel the order, freeing up resources associated to trips belonging to the order, such as drivers and vehicles.orderId required | string External identifier of a private hire order that should be unique within the system |
orderStatus required | string (SupportedOrderStatus) Enum: "confirmed" "cancelled" Private hire order status.
|
{- "orderStatus": "confirmed"
}
{- "errors": [
- {
- "type": "orderAlreadyConfirmed",
- "message": "Private hire order has been already confirmed",
- "details": {
- "orderId": "123"
}
}
]
}
One or more private hire tasks can be updated/cancelled in the same request. Only send the private hire tasks that are meant to be updated or cancel, if tasks don't need to be modified, refrain to include them in the request. Updates for a subset of private hire tasks won't be supported, the request should be successful for all the intended private hire trips included in the request.
The private hire attribute taskId
is what's being used to find the private hire trip to be updated or cancelled.
Dispatchers can split/cut these trips (a.k.a. driver duties), creating 2 trips or more. This action causes as a side effect, the renaming of the original value for the attribute taskId
.
As an example, if an original private hire trip had the attribute taskId
as the value task-display-id
, after a dispatcher splits the trip in the OPS Optibus platform,
it will create 2 trips whose taskIds
values will be task-display-id (1/2)
and task-display-id (2/2)
.
startTime
or/and endTime
in an event (sub-trip)date
Note: At this moment, all the supported modifications will free up all the vehicles and drivers associated to the private hire trip, if there were any, given that it will cause a risk to violate regulation compliance rules, which are currently computed in the Optibus OPS web application.
If there's a modification that's not supported, the response status code returned will be a 400 malformed request, with an informative error that will point out that the change is not supported.
orderId required | string External identifier of a private hire order that should be unique within the system |
required | Array of PrivateHireTask (object) or PatchPrivateHireCancellation (object) | ||||||||||||||||||||||||||||||||
Array Any of
|
{- "privateHires": [
- {
- "noVehicleNeeded": true,
- "note": "string",
- "labelCodes": [
- "string"
], - "events": [
- {
- "distance": 0.1,
- "note": "string",
- "labelCodes": [
- "string"
], - "endLocation": {
- "lng": 0.1,
- "lat": 0.1,
- "address": "string",
- "name": "string"
}, - "startLocation": {
- "lng": 0.1,
- "lat": 0.1,
- "address": "string",
- "name": "string"
}, - "endTime": "2024-06-30T23:30:00+02:00",
- "startTime": "2024-06-30T23:30:00+02:00",
- "type": "private_hire"
}
], - "date": "string",
- "depotName": "string",
- "taskId": "string"
}
]
}
null
Returns the public key that can be used to verify the payloads attached to URLs opened via a custom action attached to a notification received in the Optibus Driver App.
No authentication is required to access this endpoint.
{- "publicKeyType": "string",
- "publicKey": "string"
}
The Optibus OPS real-time stream delivers changes in entities triggered by user in the OPS platform to subscribers via webhook requests.
Actions supported will be sent in requests to the subscribers, containing all the entities that were changed,
such as runs
, run_assignments
, run_events
, blocks
and block_assignments
with a format that has been inspired by ODS,
following the same terminology for the name of attributes and entities, despite there's additional information to enrich the data streamed.
The subscriber will need to provide a URL, the days previous and next days they want to subscribe to receive these events and the operations.
The subscriber will receive a secret token that will be used to validate the request comes from Optibus as a trusted source.
Before sending the webhook, we generate an HMAC signature using the same secret key for the request body, then include the result in a header X-HMAC-SIGNATURE
.
The subscriber will need to validates the request by generating the signature following the same process on their side and then comparing it to the X-HMAC-SIGNATURE
header.
If there's a match, the request should be accepted; otherwise, it should be rejected as it might come from an unauthorized source.
To generate a signature is a simple as:
import crypto from "crypto";
return crypto
.createHmac("sha256", subscriber.secret)
.update(Buffer.from(JSON.stringify(realTimeOperation)).toString("base64"))
.digest("base64");
It's important that real-time operations that belong to an aggregate_id
, value that's always included in every request payload,
are sequentially processed by the consumers in order to guarantee correctness, given that operations could depend on each and if not
processed chronologically in the order they were triggered, it could lead to data inconsistencies.
aggregate_id
represents a funnel for all actions in a specific operational region and parallelism across different aggregate_id
should be
considered by the subscribers.
In case the subscriber fails to process the request or the server where the endpoint to receive these events is down, not returning a 2XX code, the request will be sent again,
following an exponential backoff mechanism.
Real-time operations for an aggregate_id
will have to be executed sequentially and therefore, if a request fails to be processed, until is either successful or stops retrying,
no new operations will be streamed for that aggregate_id
.
required | Array of objects (OperationalAction) List of operational actions triggered by a user in OPS platform. A single action triggered by a user has the potential of creating multiple operational actions. A user action could cause multiple operational action types for an operational day, such as [example] or actions for multiple operational days, such as adding a driver absence that could unassign the driver along multiple days. | ||||||||||||||||||
Array
| |||||||||||||||||||
customer required | string The customer or agency the operation applies to | ||||||||||||||||||
aggregate_id required | string Aggregate identifier, typically to group related operations Sequentiality in processing real-time events for an aggregateId should be guaranteed by the provider. Parallelism in the processing of events could be performed across events belonging to different aggregateId. | ||||||||||||||||||
region_id required | string Identifier of the region the operation pertains to | ||||||||||||||||||
created_at required | string Timestamp of the operation | ||||||||||||||||||
id required | string UUID for the real-time operation |
{- "id": "90cb367f-3680-48c2-93a2-b162cb11ce9a",
- "customer": "superbus",
- "created_at": "2024-10-09T16:19:01.300Z",
- "aggregate_id": "operational-calendar-0d277b74-ab79-493f-8f1d-ec307420868d",
- "region_id": "0d277b74-ab79-493f-8f1d-ec307420868d",
- "operational_actions": [
- {
- "action_type": "unassign_duty",
- "operational_date": "2024-10-09",
- "entities_changes": [
- {
- "blocks": [ ],
- "block_assignments": [ ],
- "runs": [ ],
- "run_assignments": [
- {
- "run_id": "b045c6f4-f827-4e82-833a-1c5e713ad0b2",
- "date": "2024-10-09",
- "driver_id": null,
- "run_display_id": "VU1002",
- "service_id": "etf0C81iX7",
- "entity_operation": "update"
}
], - "run_events": [ ]
}
]
}
]
}
Below, we use the following icons to indicate the type of changes:
version
prefix such as /v2/endpointName
to /v3/endpointName
. See section Versioning.POST /v1/drivers
: add support for custom attributes/v1/preferences/holidays
endpoint added/v1/regions
(was incorrectly specified as /region
in v2.3.4)/v1/regions
/group
endpoint now returns regionUuid
field, which is an alias of deprecated depot
field/group
endpoint now returns additional regionName
fieldπ Added the optibusTimeplanId field to the optibus Ids object within tasks and blocks
Op Units in assignments - we are introducing the op unit in the operational plan. in V1 and V2, the naming of depots remains unchanged although for some customers this would be considered a region. Within these customers, the lower level division is called an operational unit (opUnit). In future versions, "depots" would be renamed to "region", and units would be renamed to "depot".
Introducing support for private hire endpoints
POST /private_hires/order
: Creation of the private hire order and trips associated to it.GET /private_hires/order/{orderId}/info
: Retrieval of the private hire order, the trips associated and the driver/vehicle assignments, besides other useful information.PATCH /private_hires/order/{orderId}
: Modification of private hire order status.PATCH /private_hires/order/{orderId}/trips
: Modification of trips associated to a private hire order.Adjustment to operational-plan endpoints. Additional properties were added, and some additional aliases introduced for a more coherent naming structure. This is intended to ease a transition from the deprecated end point v1/operational-plan
to v2/operational-plan
(OPS-8538). While there are breaking changes in v2/operational-plan
, there are no active users at this endpoint currently yet, so we are treating it as a minor version upgrade from 2.1.0
to 2.2.0
v1/operational-plan
. On each event:eventId
has been added as an alias for the existing id
propertyeventType
has been added as an alias for the existing type
propertynoteText
has been addedreinforcedTripReference
has been added to reinforcement eventssplitTripReference
has been added the parts of trips that were spliteventJsonData
, these vary per eventType
.blockId
has been added as an alias for the existing vehicleId
v2/operational-plan
. On each event:type
has been removed and replaced by eventType
id
has been removed and replaced by uuid
eventJsonData
has been removed and all properties that were inside this object are now on the event levelIn v1/operational-plan
and v2/operational-plan
Additional source ids for tasks and blocks added Optibus IDs to tasks and blocks (OPS-8855)
optibusIds
on each task and block as follows
export type OptibusIds = { optibusRosterId: string; optibusRosterDatasetId: string; optibusScheduleId: string; };
It is important to document that tasks and blocks and days off that have been created inside Ops will NOT have these IDs. Therefore, we are adding additional properties called: source
and wasModifiedInOperations
source
is βschedulingβ:optibusIds
will existwasModifiedInOperations
will exist. True, if the task has been modified in anyway (excluding cancellations) else, False.source
is βoperationsβ:optibusIds
will NOT existwasModifiedInOperations
will NOT exist.Adding dutyType to certain tasks added dutyType to the task, where dutyType is a property that comes from Rosters/Schedules imported into Optibus Operations from Optibus Planning/Scheduling/Rostering (OPS-8877)
Changes in this release do not contain breaking changes to existing endpoints, but we are deprecating endpoint v1/operational-plan
by 2024-06-30 in favor of v2/operational-plan
, therefore marking this as a major release, increasing overall API version from 1.3.0
to 2.0.0
:
v2/operational-plan
endpoint. (OPS-6125) which contains a number of breaking changes if switching from v1/operational-plan
. Note that v1/operational-plan
is still available, but will be deprecated by 2024-06-30:assignedOnly
, vehicleIds
depotId
is no longer a path parameter, it has been replaced by query param depotUuids
which is now a listdriverIds
query parameter is now called driverUuids
from
query parameter is now called fromDate
to
query parameter is now called toDate
depotUuid
and depotName
alongside the previous operational plan properties.v2/operational-plan/{depotId}
) has been removed. Instead their is only the v2/operational-plan
endpoint and specific depots can be requested using a depotUuids
query parameter on the request.summary
is removed in v2 (OPS-8757). Therefore:destination.originStop
and destination.originDepot
are completely removed in v2/operational-plan
originStopName
, originStopId
, originStopLabel
, originDepotName
, originDepotId
and originDepotLabel
(and the equivalent for destination) are moved up to the task/block level.v1/operational-plan/{depotId}
(and v2/operational-plan
), added originStopName
, originStopId
, originStopLabel
, originDepotName
, originDepotId
and originDepotLabel
to the duty and block summary
(and the equivalent for destination) (OPS-8539)