Download OpenAPI specification:
Logistics operations API for the 4klyft platform.
This API provides comprehensive endpoints for managing:
All API endpoints (except /api/docs and /api/v1/iam/auth/*) require JWT Bearer token authentication.
Include the token in the Authorization header:
Authorization: Bearer <your-jwt-token>
API requests are rate-limited to ensure fair usage. Standard limits are:
A depot — a first-class fleet base (hub, yard, cross-dock, parking site)
where fleet units are stationed and dispatched from. Optionally linked to a
co-located warehouse via the bare warehouseId.
Headline KPIs for the morning triage dashboard: fleet availability, units in maintenance, overdue/upcoming preventive maintenance, open work orders, utilization. Fields with no data source yet (docs-expiring, cost-per-km) are returned as null.
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "fleetAvailabilityPercent": 0,
- "unitsTotal": 0,
- "unitsInMaintenance": 0,
- "unitsAvailable": 0,
- "overduePmCount": 0,
- "upcomingPmCount": 0,
- "openWorkOrderCount": 0,
- "docsExpiringSoonCount": 0,
- "costPerKm": 0,
- "utilizationPercent": 0
}Detailed rows behind the dashboard overdue/upcoming PM counts: each active preventive-maintenance plan that is overdue or due within 30 days (calendar) or already over its odometer interval, joined to its fleet unit. Ranked overdue-first then soonest-due, capped at the top 50.
| page | integer Default: 1 The collection page number |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "planId": "",
- "fleetUnitId": "string",
- "unitRegistration": "string",
- "unitKind": "string",
- "serviceType": "",
- "planType": "",
- "overdue": false,
- "dueByDate": "string",
- "dueByMeterKm": 0,
- "dueInDays": 0,
- "dueInKm": 0
}
]
}Per-unit trip activity over the last 30 days: trip count, total distance, total drive time, distinct active days and the resulting utilization percentage, joined to each operational fleet unit (retired and disposed excluded). Units with no logged trips appear as zero rows flagged idle. Ranked idle-first then lowest-utilization, capped at the top 50.
| page | integer Default: 1 The collection page number |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "fleetUnitId": "",
- "unitRegistration": "",
- "unitKind": "",
- "tripCount": 0,
- "totalDistanceKm": 0,
- "totalDriveTimeMinutes": 0,
- "activeDays": 0,
- "utilizationPercent": 0,
- "idle": false
}
]
}Returns the required-document-types for Driver and Vehicle onboarding for the authenticated tenant. When no per-tenant row has been written, the response is seeded from platform defaults — never a 404.
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "tenantId": "string",
- "driverRequiredDocumentTypes": [
- "string"
], - "vehicleRequiredDocumentTypes": [
- "string"
], - "createdAt": "string",
- "updatedAt": "string"
}Overwrites the tenant's required-document-types. Both lists are required (full replace, not a partial patch). Empty lists are allowed (means "no documents required").
The updated TenantFleetOnboardingConfig resource
| driverRequiredDocumentTypes | Array of strings unique |
| vehicleRequiredDocumentTypes | Array of strings unique |
{- "driverRequiredDocumentTypes": [
- "string"
], - "vehicleRequiredDocumentTypes": [
- "string"
]
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "tenantId": "string",
- "driverRequiredDocumentTypes": [
- "string"
], - "vehicleRequiredDocumentTypes": [
- "string"
], - "createdAt": "string",
- "updatedAt": "string"
}Paginated list of fleet units. Filter by kind, status, team, or capability.
| kind | string Enum: "power_unit" "load_carrier" "rigid_vehicle" Filter by kind |
| status | string Enum: "available" "in_use" "maintenance" "retired" "disposed" Filter by status |
| crewId | string <uuid> Filter by team UUID |
| capability | string Filter by a single provided capability |
| page | integer >= 1 Default: 1 Page number |
| itemsPerPage | integer [ 1 .. 100 ] Default: 30 Items per page |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "kind": "power_unit",
- "carrierType": "string",
- "registrationNumber": "",
- "status": "available",
- "resourceKind": "string",
- "maxWeightKg": 0,
- "maxVolumeM3": 0,
- "maxPallets": 0,
- "usableLengthMm": 0,
- "usableWidthMm": 0,
- "usableHeightMm": 0,
- "capabilities": [
- "string"
], - "crewId": "string",
- "teamName": "string",
- "currentLatitude": 0,
- "currentLongitude": 0,
- "lastLocationUpdate": "string",
- "currentOdometerKm": 0,
- "createdAt": "",
- "updatedAt": ""
}
]
}Register a fleet unit
The new FleetUnit resource
| kind required | string Enum: "power_unit" "load_carrier" "rigid_vehicle" |
| carrierType | string or null Enum: "trailer" "container" |
| registrationNumber required | string <= 64 characters |
| maxWeightKg | number or null >= 0 |
| maxVolumeM3 | number or null >= 0 |
| maxPallets | integer or null >= 0 |
| usableLengthMm | integer or null >= 0 |
| usableWidthMm | integer or null >= 0 |
| usableHeightMm | integer or null >= 0 |
| capabilities | Array of strings |
| crewId | string or null <ulid> |
| registerAsAsset | boolean Default: false Opt in to also recording this unit in the Asset ownership register. |
{- "kind": "power_unit",
- "carrierType": "trailer",
- "registrationNumber": "string",
- "maxWeightKg": 0,
- "maxVolumeM3": 0,
- "maxPallets": 0,
- "usableLengthMm": 0,
- "usableWidthMm": 0,
- "usableHeightMm": 0,
- "capabilities": [
- "string"
], - "crewId": "string",
- "registerAsAsset": false
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "kind": "power_unit",
- "carrierType": "string",
- "registrationNumber": "",
- "status": "available",
- "resourceKind": "string",
- "maxWeightKg": 0,
- "maxVolumeM3": 0,
- "maxPallets": 0,
- "usableLengthMm": 0,
- "usableWidthMm": 0,
- "usableHeightMm": 0,
- "capabilities": [
- "string"
], - "crewId": "string",
- "teamName": "string",
- "currentLatitude": 0,
- "currentLongitude": 0,
- "lastLocationUpdate": "string",
- "currentOdometerKm": 0,
- "createdAt": "",
- "updatedAt": ""
}Get a fleet unit
| id required | string FleetUnit identifier |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "kind": "power_unit",
- "carrierType": "string",
- "registrationNumber": "",
- "status": "available",
- "resourceKind": "string",
- "maxWeightKg": 0,
- "maxVolumeM3": 0,
- "maxPallets": 0,
- "usableLengthMm": 0,
- "usableWidthMm": 0,
- "usableHeightMm": 0,
- "capabilities": [
- "string"
], - "crewId": "string",
- "teamName": "string",
- "currentLatitude": 0,
- "currentLongitude": 0,
- "lastLocationUpdate": "string",
- "currentOdometerKm": 0,
- "createdAt": "",
- "updatedAt": ""
}Retire a fleet unit
| id required | string FleetUnit identifier |
{- "type": "/errors/validation-error",
- "title": "Validation Error",
- "status": 400,
- "detail": "The provided input is invalid",
- "violations": [
- {
- "propertyPath": "code",
- "message": "This value should not be blank."
}
], - "instance": "string"
}Update a fleet unit
| id required | string FleetUnit identifier |
The updated FleetUnit resource
| registrationNumber | string or null <= 64 characters |
| maxWeightKg | number or null >= 0 |
| maxVolumeM3 | number or null >= 0 |
| maxPallets | integer or null >= 0 |
| usableLengthMm | integer or null >= 0 |
| usableWidthMm | integer or null >= 0 |
| usableHeightMm | integer or null >= 0 |
| capabilities | Array of strings |
| status | string or null Enum: "available" "in_use" "maintenance" "retired" "disposed" |
{- "registrationNumber": "string",
- "maxWeightKg": 0,
- "maxVolumeM3": 0,
- "maxPallets": 0,
- "usableLengthMm": 0,
- "usableWidthMm": 0,
- "usableHeightMm": 0,
- "capabilities": [
- "string"
], - "status": "available"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "kind": "power_unit",
- "carrierType": "string",
- "registrationNumber": "",
- "status": "available",
- "resourceKind": "string",
- "maxWeightKg": 0,
- "maxVolumeM3": 0,
- "maxPallets": 0,
- "usableLengthMm": 0,
- "usableWidthMm": 0,
- "usableHeightMm": 0,
- "capabilities": [
- "string"
], - "crewId": "string",
- "teamName": "string",
- "currentLatitude": 0,
- "currentLongitude": 0,
- "lastLocationUpdate": "string",
- "currentOdometerKm": 0,
- "createdAt": "",
- "updatedAt": ""
}Dispose a fleet unit
| id required | string FleetUnit identifier |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "kind": "power_unit",
- "carrierType": "string",
- "registrationNumber": "",
- "status": "available",
- "resourceKind": "string",
- "maxWeightKg": 0,
- "maxVolumeM3": 0,
- "maxPallets": 0,
- "usableLengthMm": 0,
- "usableWidthMm": 0,
- "usableHeightMm": 0,
- "capabilities": [
- "string"
], - "crewId": "string",
- "teamName": "string",
- "currentLatitude": 0,
- "currentLongitude": 0,
- "lastLocationUpdate": "string",
- "currentOdometerKm": 0,
- "createdAt": "",
- "updatedAt": ""
}Retrieve a paginated list of vehicles with optional filters. Supports filtering by status, type, and team.
| status | string Enum: "available" "in_use" "maintenance" "decommissioned" Example: status=available Filter by vehicle status |
| type | string Enum: "van" "truck" "bike" "car" Example: type=van Filter by vehicle type |
| crewId | string <uuid> Example: crewId=01912345-6789-7abc-def0-123456789abc Filter by team UUID |
| page | integer >= 1 Default: 1 Example: page=1 Page number for pagination |
| itemsPerPage | integer [ 1 .. 100 ] Default: 30 Example: itemsPerPage=30 Number of items per page |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01912345-6789-7abc-def0-123456789abc",
- "registrationNumber": "ABC-1234",
- "type": "van",
- "make": "Mercedes-Benz",
- "model": "Sprinter",
- "year": 2023,
- "status": "available",
- "crewId": "01912345-6789-7abc-def0-123456789abc",
- "teamName": "Express Logistics",
- "maxWeightKg": 1500,
- "maxVolumeCubicMeters": 12.5,
- "maxPallets": 8,
- "currentLatitude": 40.7128,
- "currentLongitude": -74.006,
- "lastLocationUpdate": "2024-06-15T14:30:00+00:00",
- "currentOdometerKm": 125000,
- "createdAt": "2024-01-15T10:00:00+00:00",
- "updatedAt": "2024-06-15T14:30:00+00:00"
}
]
}Register a new vehicle in the fleet. The vehicle will be available for assignment after registration.
Vehicle registration data
| registrationNumber required | string <= 20 characters Vehicle registration/license plate number |
| type required | string Enum: "van" "truck" "bike" "car" Type of vehicle |
| make | string or null <= 100 characters Vehicle manufacturer |
| model | string or null <= 100 characters Vehicle model |
| year | integer or null >= 1990 Manufacturing year |
| crewId | string or null <uuid> Team UUID to assign the vehicle to |
| maxWeightKg | number or null >= 0 Maximum weight capacity in kilograms |
| maxVolumeCubicMeters | number or null >= 0 Maximum volume capacity in cubic meters |
{- "registrationNumber": "ABC-1234",
- "type": "van",
- "make": "Mercedes-Benz",
- "model": "Sprinter",
- "year": 2023,
- "crewId": "01912345-6789-7abc-def0-123456789abc",
- "maxWeightKg": 1500,
- "maxVolumeCubicMeters": 12.5
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01912345-6789-7abc-def0-123456789abc",
- "registrationNumber": "ABC-1234",
- "type": "van",
- "make": "Mercedes-Benz",
- "model": "Sprinter",
- "year": 2023,
- "status": "available",
- "crewId": "01912345-6789-7abc-def0-123456789abc",
- "teamName": "Express Logistics",
- "maxWeightKg": 1500,
- "maxVolumeCubicMeters": 12.5,
- "maxPallets": 8,
- "currentLatitude": 40.7128,
- "currentLongitude": -74.006,
- "lastLocationUpdate": "2024-06-15T14:30:00+00:00",
- "currentOdometerKm": 125000,
- "createdAt": "2024-01-15T10:00:00+00:00",
- "updatedAt": "2024-06-15T14:30:00+00:00"
}Retrieve a single vehicle by its UUID. Returns full vehicle details including capacity and location.
| id required | string <uuid> Example: 01912345-6789-7abc-def0-123456789abc Vehicle UUID |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01912345-6789-7abc-def0-123456789abc",
- "registrationNumber": "ABC-1234",
- "type": "van",
- "make": "Mercedes-Benz",
- "model": "Sprinter",
- "year": 2023,
- "status": "available",
- "crewId": "01912345-6789-7abc-def0-123456789abc",
- "teamName": "Express Logistics",
- "maxWeightKg": 1500,
- "maxVolumeCubicMeters": 12.5,
- "maxPallets": 8,
- "currentLatitude": 40.7128,
- "currentLongitude": -74.006,
- "lastLocationUpdate": "2024-06-15T14:30:00+00:00",
- "currentOdometerKm": 125000,
- "createdAt": "2024-01-15T10:00:00+00:00",
- "updatedAt": "2024-06-15T14:30:00+00:00"
}Update vehicle details. Only provided fields will be updated.
| id required | string <uuid> Example: 01912345-6789-7abc-def0-123456789abc Vehicle UUID |
The updated Vehicle resource
| registrationNumber | string or null <= 20 characters |
| make | string or null <= 100 characters |
| model | string or null <= 100 characters |
| type | string or null Enum: "van" "truck" "bike" "car" |
| capacityWeight | number or null >= 0 |
| capacityVolume | number or null >= 0 |
| fuelType | string or null Enum: "petrol" "diesel" "electric" "hybrid" "lpg" |
| status | string or null Enum: "available" "in_use" "maintenance" "decommissioned" |
| crewId | string or null <ulid> |
{- "registrationNumber": "string",
- "make": "string",
- "model": "string",
- "type": "van",
- "capacityWeight": 0,
- "capacityVolume": 0,
- "fuelType": "petrol",
- "status": "available",
- "crewId": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01912345-6789-7abc-def0-123456789abc",
- "registrationNumber": "ABC-1234",
- "type": "van",
- "make": "Mercedes-Benz",
- "model": "Sprinter",
- "year": 2023,
- "status": "available",
- "crewId": "01912345-6789-7abc-def0-123456789abc",
- "teamName": "Express Logistics",
- "maxWeightKg": 1500,
- "maxVolumeCubicMeters": 12.5,
- "maxPallets": 8,
- "currentLatitude": 40.7128,
- "currentLongitude": -74.006,
- "lastLocationUpdate": "2024-06-15T14:30:00+00:00",
- "currentOdometerKm": 125000,
- "createdAt": "2024-01-15T10:00:00+00:00",
- "updatedAt": "2024-06-15T14:30:00+00:00"
}Persist the latest odometer reading for a vehicle. Drives odometer-based maintenance plan evaluation.
| id required | string <uuid> Example: 01912345-6789-7abc-def0-123456789abc Vehicle UUID |
Odometer reading payload
| currentOdometerKm required | integer >= 0 Current odometer reading in kilometers |
| recordedAt | string or null <date-time> When the reading was taken (defaults to now) |
{- "currentOdometerKm": 125000,
- "recordedAt": "2026-05-29T08:00:00+00:00"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "01912345-6789-7abc-def0-123456789abc",
- "registrationNumber": "ABC-1234",
- "type": "van",
- "make": "Mercedes-Benz",
- "model": "Sprinter",
- "year": 2023,
- "status": "available",
- "crewId": "01912345-6789-7abc-def0-123456789abc",
- "teamName": "Express Logistics",
- "maxWeightKg": 1500,
- "maxVolumeCubicMeters": 12.5,
- "maxPallets": 8,
- "currentLatitude": 40.7128,
- "currentLongitude": -74.006,
- "lastLocationUpdate": "2024-06-15T14:30:00+00:00",
- "currentOdometerKm": 125000,
- "createdAt": "2024-01-15T10:00:00+00:00",
- "updatedAt": "2024-06-15T14:30:00+00:00"
}Read-only tenant view of the vehicle variant catalogue.
Tenant users may only browse the catalogue. All write operations (create/update/delete) are exposed exclusively under the admin route prefix and require platform-admin authentication.
List vehicle makes
| page | integer Default: 1 The collection page number |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "name": "",
- "slug": "",
- "logoUrl": "string",
- "countryOfOrigin": "string",
- "createdAt": "",
- "updatedAt": ""
}
]
}Get a vehicle make
| id required | string CatalogueMake identifier |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "name": "",
- "slug": "",
- "logoUrl": "string",
- "countryOfOrigin": "string",
- "createdAt": "",
- "updatedAt": ""
}List vehicle models
| page | integer Default: 1 The collection page number |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "makeId": "",
- "makeName": "",
- "name": "",
- "slug": "",
- "vehicleType": "",
- "productionStartYear": 0,
- "productionEndYear": 0,
- "createdAt": "",
- "updatedAt": ""
}
]
}Get a vehicle model
| id required | string CatalogueModel identifier |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "makeId": "",
- "makeName": "",
- "name": "",
- "slug": "",
- "vehicleType": "",
- "productionStartYear": 0,
- "productionEndYear": 0,
- "createdAt": "",
- "updatedAt": ""
}List vehicle variants
| page | integer Default: 1 The collection page number |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "modelId": "",
- "modelName": "",
- "makeName": "",
- "name": "",
- "slug": "",
- "vehicleType": "",
- "defaultFuelType": "",
- "defaultMaxWeightKg": 0,
- "defaultMaxVolumeM3": 0,
- "defaultMaxPallets": 0,
- "gvwClass": "string",
- "axleCount": 0,
- "bodyType": "string",
- "yearFrom": 0,
- "yearTo": 0,
- "createdAt": "",
- "updatedAt": ""
}
]
}Get a vehicle variant
| id required | string CatalogueVariant identifier |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "modelId": "",
- "modelName": "",
- "makeName": "",
- "name": "",
- "slug": "",
- "vehicleType": "",
- "defaultFuelType": "",
- "defaultMaxWeightKg": 0,
- "defaultMaxVolumeM3": 0,
- "defaultMaxPallets": 0,
- "gvwClass": "string",
- "axleCount": 0,
- "bodyType": "string",
- "yearFrom": 0,
- "yearTo": 0,
- "createdAt": "",
- "updatedAt": ""
}API representation of one document type a fleet unit requires, derived from the static per-kind requirement registry. The collection endpoint resolves the unit's kind and returns its required document types so the unit's Documents tab can render required-vs-present.
No #[ApiProperty(identifier: true)] member declares an item operation —
this resource is collection-only, keyed by the parent unit id.
Returns document type definitions for vehicles and drivers.
| resourceType | string Enum: "vehicle" "driver" Example: resourceType=vehicle Filter by resource type |
| page | integer Default: 1 The collection page number |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "type": "",
- "label": "",
- "description": "",
- "hasExpiry": false,
- "slots": [
- {
- "property1": [
- "string"
], - "property2": [
- "string"
]
}
], - "metadataSchema": [
- {
- "property1": "string",
- "property2": "string"
}
]
}
]
}Get a fleet document type
| type required | string FleetDocumentType identifier |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "type": "",
- "label": "",
- "description": "",
- "hasExpiry": false,
- "slots": [
- {
- "property1": [
- "string"
], - "property2": [
- "string"
]
}
], - "metadataSchema": [
- {
- "property1": "string",
- "property2": "string"
}
]
}Returns the document types required for the unit, derived from its kind.
| id required | string <ulid> Example: 01912345-6789-7abc-def0-123456789abc Fleet unit ULID |
| page | integer Default: 1 The collection page number |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "documentTypeKey": "",
- "label": "",
- "required": false
}
]
}List maintenance plans
| page | integer Default: 1 The collection page number |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "fleetUnitId": "string",
- "fleetUnitNumber": "string",
- "planType": "",
- "intervalDays": 0,
- "intervalKm": 0,
- "intervalHours": 0,
- "serviceType": "",
- "estimatedCostCents": 0,
- "active": true,
- "lastTriggeredAt": "string",
- "lastTriggeredAtOdometerKm": 0,
- "lastTriggeredAtEngineHours": 0,
- "createdBy": "",
- "createdAt": "",
- "updatedAt": ""
}
]
}Create a maintenance plan
The new MaintenancePlan resource
| fleetUnitId | string or null <ulid> |
| planType required | string Default: "interval" Enum: "interval" "odometer" "hours" |
| intervalDays | integer or null >= 0 |
| intervalKm | integer or null >= 0 |
| intervalHours | integer or null >= 0 |
| serviceType required | string Default: "" |
| estimatedCostCents | integer or null >= 0 |
{- "fleetUnitId": "string",
- "planType": "interval",
- "intervalDays": 0,
- "intervalKm": 0,
- "intervalHours": 0,
- "serviceType": "",
- "estimatedCostCents": 0
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "fleetUnitId": "string",
- "fleetUnitNumber": "string",
- "planType": "",
- "intervalDays": 0,
- "intervalKm": 0,
- "intervalHours": 0,
- "serviceType": "",
- "estimatedCostCents": 0,
- "active": true,
- "lastTriggeredAt": "string",
- "lastTriggeredAtOdometerKm": 0,
- "lastTriggeredAtEngineHours": 0,
- "createdBy": "",
- "createdAt": "",
- "updatedAt": ""
}Get a maintenance plan
| id required | string MaintenancePlan identifier |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "fleetUnitId": "string",
- "fleetUnitNumber": "string",
- "planType": "",
- "intervalDays": 0,
- "intervalKm": 0,
- "intervalHours": 0,
- "serviceType": "",
- "estimatedCostCents": 0,
- "active": true,
- "lastTriggeredAt": "string",
- "lastTriggeredAtOdometerKm": 0,
- "lastTriggeredAtEngineHours": 0,
- "createdBy": "",
- "createdAt": "",
- "updatedAt": ""
}Soft-delete a maintenance plan
| id required | string MaintenancePlan identifier |
{- "type": "/errors/validation-error",
- "title": "Validation Error",
- "status": 400,
- "detail": "The provided input is invalid",
- "violations": [
- {
- "propertyPath": "code",
- "message": "This value should not be blank."
}
], - "instance": "string"
}Update plan intervals or estimated cost
| id required | string MaintenancePlan identifier |
The updated MaintenancePlan resource
| intervalDays | integer or null >= 0 |
| intervalKm | integer or null >= 0 |
| intervalHours | integer or null >= 0 |
| estimatedCostCents | integer or null >= 0 |
{- "intervalDays": 0,
- "intervalKm": 0,
- "intervalHours": 0,
- "estimatedCostCents": 0
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "fleetUnitId": "string",
- "fleetUnitNumber": "string",
- "planType": "",
- "intervalDays": 0,
- "intervalKm": 0,
- "intervalHours": 0,
- "serviceType": "",
- "estimatedCostCents": 0,
- "active": true,
- "lastTriggeredAt": "string",
- "lastTriggeredAtOdometerKm": 0,
- "lastTriggeredAtEngineHours": 0,
- "createdBy": "",
- "createdAt": "",
- "updatedAt": ""
}Activate a maintenance plan
| id required | string MaintenancePlan identifier |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "fleetUnitId": "string",
- "fleetUnitNumber": "string",
- "planType": "",
- "intervalDays": 0,
- "intervalKm": 0,
- "intervalHours": 0,
- "serviceType": "",
- "estimatedCostCents": 0,
- "active": true,
- "lastTriggeredAt": "string",
- "lastTriggeredAtOdometerKm": 0,
- "lastTriggeredAtEngineHours": 0,
- "createdBy": "",
- "createdAt": "",
- "updatedAt": ""
}Deactivate a maintenance plan
| id required | string MaintenancePlan identifier |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "fleetUnitId": "string",
- "fleetUnitNumber": "string",
- "planType": "",
- "intervalDays": 0,
- "intervalKm": 0,
- "intervalHours": 0,
- "serviceType": "",
- "estimatedCostCents": 0,
- "active": true,
- "lastTriggeredAt": "string",
- "lastTriggeredAtOdometerKm": 0,
- "lastTriggeredAtEngineHours": 0,
- "createdBy": "",
- "createdAt": "",
- "updatedAt": ""
}List warranty claims
| page | integer Default: 1 The collection page number |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "fleetUnitId": "",
- "fleetUnitNumber": "string",
- "workOrderId": "string",
- "supplier": "",
- "claimedCents": 0,
- "recoveredCents": 0,
- "status": "",
- "submittedAt": "",
- "resolvedAt": "string",
- "notes": "string",
- "createdAt": "",
- "updatedAt": ""
}
]
}Submit a warranty claim
The new WarrantyClaim resource
| fleetUnitId required | string <ulid> Default: "" |
| workOrderId | string or null <ulid> |
| supplier required | string Default: "" |
| claimedCents | integer > 0 Default: 0 |
| notes | string or null |
| submittedAt | string or null |
{- "fleetUnitId": "",
- "workOrderId": "string",
- "supplier": "",
- "claimedCents": 0,
- "notes": "string",
- "submittedAt": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "fleetUnitId": "",
- "fleetUnitNumber": "string",
- "workOrderId": "string",
- "supplier": "",
- "claimedCents": 0,
- "recoveredCents": 0,
- "status": "",
- "submittedAt": "",
- "resolvedAt": "string",
- "notes": "string",
- "createdAt": "",
- "updatedAt": ""
}Get a warranty claim
| id required | string WarrantyClaim identifier |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "fleetUnitId": "",
- "fleetUnitNumber": "string",
- "workOrderId": "string",
- "supplier": "",
- "claimedCents": 0,
- "recoveredCents": 0,
- "status": "",
- "submittedAt": "",
- "resolvedAt": "string",
- "notes": "string",
- "createdAt": "",
- "updatedAt": ""
}Approve a warranty claim
| id required | string WarrantyClaim identifier |
The new WarrantyClaim resource
| approvedCents required | integer > 0 Default: 0 |
{- "approvedCents": 0
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "fleetUnitId": "",
- "fleetUnitNumber": "string",
- "workOrderId": "string",
- "supplier": "",
- "claimedCents": 0,
- "recoveredCents": 0,
- "status": "",
- "submittedAt": "",
- "resolvedAt": "string",
- "notes": "string",
- "createdAt": "",
- "updatedAt": ""
}Mark an approved warranty claim as paid
| id required | string WarrantyClaim identifier |
The new WarrantyClaim resource
| recoveredCents required | integer >= 0 Default: 0 |
| paidAt | string or null ISO 8601 datetime. Defaults to now when omitted. |
{- "recoveredCents": 0,
- "paidAt": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "fleetUnitId": "",
- "fleetUnitNumber": "string",
- "workOrderId": "string",
- "supplier": "",
- "claimedCents": 0,
- "recoveredCents": 0,
- "status": "",
- "submittedAt": "",
- "resolvedAt": "string",
- "notes": "string",
- "createdAt": "",
- "updatedAt": ""
}Reject a warranty claim
| id required | string WarrantyClaim identifier |
The new WarrantyClaim resource
| reason | string or null |
{- "reason": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "fleetUnitId": "",
- "fleetUnitNumber": "string",
- "workOrderId": "string",
- "supplier": "",
- "claimedCents": 0,
- "recoveredCents": 0,
- "status": "",
- "submittedAt": "",
- "resolvedAt": "string",
- "notes": "string",
- "createdAt": "",
- "updatedAt": ""
}List maintenance work orders
| page | integer Default: 1 The collection page number |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "fleetUnitId": "",
- "fleetUnitNumber": "string",
- "planId": "string",
- "serviceType": "",
- "scheduledFor": "",
- "startedAt": "string",
- "completedAt": "string",
- "odometerKmAtService": 0,
- "estimatedCostCents": 0,
- "actualCostCents": 0,
- "notes": "string",
- "status": "",
- "createdAt": "",
- "updatedAt": ""
}
]
}Schedule a maintenance work order
The new MaintenanceWorkOrder resource
| fleetUnitId required | string <ulid> Default: "" |
| planId | string or null <ulid> |
| serviceType required | string Default: "" |
| scheduledFor required | string Default: "" |
| estimatedCostCents | integer or null >= 0 |
| notes | string or null |
| vendorPartnerId | string or null <ulid> Optional third-party vendor (Partner) that will perform the maintenance. |
{- "fleetUnitId": "",
- "planId": "string",
- "serviceType": "",
- "scheduledFor": "",
- "estimatedCostCents": 0,
- "notes": "string",
- "vendorPartnerId": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "fleetUnitId": "",
- "fleetUnitNumber": "string",
- "planId": "string",
- "serviceType": "",
- "scheduledFor": "",
- "startedAt": "string",
- "completedAt": "string",
- "odometerKmAtService": 0,
- "estimatedCostCents": 0,
- "actualCostCents": 0,
- "notes": "string",
- "status": "",
- "createdAt": "",
- "updatedAt": ""
}Get a maintenance work order
| id required | string MaintenanceWorkOrder identifier |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "fleetUnitId": "",
- "fleetUnitNumber": "string",
- "planId": "string",
- "serviceType": "",
- "scheduledFor": "",
- "startedAt": "string",
- "completedAt": "string",
- "odometerKmAtService": 0,
- "estimatedCostCents": 0,
- "actualCostCents": 0,
- "notes": "string",
- "status": "",
- "createdAt": "",
- "updatedAt": ""
}Cancel a work order
| id required | string MaintenanceWorkOrder identifier |
The new MaintenanceWorkOrder resource
| reason | string or null |
{- "reason": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "fleetUnitId": "",
- "fleetUnitNumber": "string",
- "planId": "string",
- "serviceType": "",
- "scheduledFor": "",
- "startedAt": "string",
- "completedAt": "string",
- "odometerKmAtService": 0,
- "estimatedCostCents": 0,
- "actualCostCents": 0,
- "notes": "string",
- "status": "",
- "createdAt": "",
- "updatedAt": ""
}Complete a work order
| id required | string MaintenanceWorkOrder identifier |
The new MaintenanceWorkOrder resource
| completedAt | string or null ISO 8601 datetime. Defaults to now when omitted. |
| odometerKmAtService | integer or null >= 0 |
| actualCostCents | integer or null >= 0 |
| notes | string or null |
{- "completedAt": "string",
- "odometerKmAtService": 0,
- "actualCostCents": 0,
- "notes": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "fleetUnitId": "",
- "fleetUnitNumber": "string",
- "planId": "string",
- "serviceType": "",
- "scheduledFor": "",
- "startedAt": "string",
- "completedAt": "string",
- "odometerKmAtService": 0,
- "estimatedCostCents": 0,
- "actualCostCents": 0,
- "notes": "string",
- "status": "",
- "createdAt": "",
- "updatedAt": ""
}Start a scheduled work order
| id required | string MaintenanceWorkOrder identifier |
The new MaintenanceWorkOrder resource
| startedAt | string or null ISO 8601 datetime. Defaults to now when omitted. |
{- "startedAt": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "fleetUnitId": "",
- "fleetUnitNumber": "string",
- "planId": "string",
- "serviceType": "",
- "scheduledFor": "",
- "startedAt": "string",
- "completedAt": "string",
- "odometerKmAtService": 0,
- "estimatedCostCents": 0,
- "actualCostCents": 0,
- "notes": "string",
- "status": "",
- "createdAt": "",
- "updatedAt": ""
}List scheduling assignments
| fleetUnitId | string <uuid> |
| driverId | string <uuid> |
| status | string Enum: "active" "suspended" "ended" |
| page | integer >= 1 Default: 1 |
| itemsPerPage | integer [ 1 .. 100 ] Default: 30 |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "fleetUnitId": "",
- "primaryDriverId": "string",
- "recurrenceKind": "",
- "oneOffStartAt": "string",
- "oneOffEndAt": "string",
- "recurringDaysOfWeek": [
- 0
], - "recurringStartTime": "string",
- "recurringEndTime": "string",
- "effectiveFrom": "",
- "effectiveTo": "string",
- "status": "",
- "shiftTemplateId": "string",
- "notes": "string",
- "teamDriving": false,
- "createdBy": "",
- "createdAt": "",
- "updatedAt": "",
- "endedAt": "string",
- "coDrivers": [
- {
- "id": "string",
- "driverId": "string",
- "addedAt": "string",
- "addedBy": "string"
}
], - "breaks": [
- {
- "id": "string",
- "scope": "string",
- "scopeId": "string",
- "startTime": "string",
- "startAt": "string",
- "durationMinutes": 0,
- "paid": true,
- "label": "string"
}
]
}
]
}Create a one-off or recurring assignment of a vehicle (and optional driver).
The new SchedulingAssignment resource
| fleetUnitId required | string <ulid> |
| primaryDriverId | string or null <ulid> |
| recurrenceKind | string Default: "one_off" Enum: "one_off" "recurring" 'one_off' | 'recurring'. |
| startAt | string or null |
| endAt | string or null |
| daysOfWeek | Array of integers For recurring: list of day-of-week 1..7 (Mon=1). |
| startTime | string or null |
| endTime | string or null |
| effectiveFrom | string or null |
| effectiveTo | string or null |
| shiftTemplateId | string or null <ulid> |
| notes | string or null |
| coDriverIds | Array of strings Initial co-driver roster (team driving). Each entry is a driver ULID. |
{- "fleetUnitId": "string",
- "primaryDriverId": "string",
- "recurrenceKind": "one_off",
- "startAt": "string",
- "endAt": "string",
- "daysOfWeek": [
- 0
], - "startTime": "string",
- "endTime": "string",
- "effectiveFrom": "string",
- "effectiveTo": "string",
- "shiftTemplateId": "string",
- "notes": "string",
- "coDriverIds": [
- "string"
]
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "fleetUnitId": "",
- "primaryDriverId": "string",
- "recurrenceKind": "",
- "oneOffStartAt": "string",
- "oneOffEndAt": "string",
- "recurringDaysOfWeek": [
- 0
], - "recurringStartTime": "string",
- "recurringEndTime": "string",
- "effectiveFrom": "",
- "effectiveTo": "string",
- "status": "",
- "shiftTemplateId": "string",
- "notes": "string",
- "teamDriving": false,
- "createdBy": "",
- "createdAt": "",
- "updatedAt": "",
- "endedAt": "string",
- "coDrivers": [
- {
- "id": "string",
- "driverId": "string",
- "addedAt": "string",
- "addedBy": "string"
}
], - "breaks": [
- {
- "id": "string",
- "scope": "string",
- "scopeId": "string",
- "startTime": "string",
- "startAt": "string",
- "durationMinutes": 0,
- "paid": true,
- "label": "string"
}
]
}Get a scheduling assignment
| id required | string SchedulingAssignment identifier |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "fleetUnitId": "",
- "primaryDriverId": "string",
- "recurrenceKind": "",
- "oneOffStartAt": "string",
- "oneOffEndAt": "string",
- "recurringDaysOfWeek": [
- 0
], - "recurringStartTime": "string",
- "recurringEndTime": "string",
- "effectiveFrom": "",
- "effectiveTo": "string",
- "status": "",
- "shiftTemplateId": "string",
- "notes": "string",
- "teamDriving": false,
- "createdBy": "",
- "createdAt": "",
- "updatedAt": "",
- "endedAt": "string",
- "coDrivers": [
- {
- "id": "string",
- "driverId": "string",
- "addedAt": "string",
- "addedBy": "string"
}
], - "breaks": [
- {
- "id": "string",
- "scope": "string",
- "scopeId": "string",
- "startTime": "string",
- "startAt": "string",
- "durationMinutes": 0,
- "paid": true,
- "label": "string"
}
]
}End (cancel) a scheduling assignment
| id required | string SchedulingAssignment identifier |
The new SchedulingAssignment resource
| reason | string or null |
{- "reason": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "fleetUnitId": "",
- "primaryDriverId": "string",
- "recurrenceKind": "",
- "oneOffStartAt": "string",
- "oneOffEndAt": "string",
- "recurringDaysOfWeek": [
- 0
], - "recurringStartTime": "string",
- "recurringEndTime": "string",
- "effectiveFrom": "",
- "effectiveTo": "string",
- "status": "",
- "shiftTemplateId": "string",
- "notes": "string",
- "teamDriving": false,
- "createdBy": "",
- "createdAt": "",
- "updatedAt": "",
- "endedAt": "string",
- "coDrivers": [
- {
- "id": "string",
- "driverId": "string",
- "addedAt": "string",
- "addedBy": "string"
}
], - "breaks": [
- {
- "id": "string",
- "scope": "string",
- "scopeId": "string",
- "startTime": "string",
- "startAt": "string",
- "durationMinutes": 0,
- "paid": true,
- "label": "string"
}
]
}Update assignment notes
| id required | string SchedulingAssignment identifier |
The updated SchedulingAssignment resource
| notes | string or null |
{- "notes": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "fleetUnitId": "",
- "primaryDriverId": "string",
- "recurrenceKind": "",
- "oneOffStartAt": "string",
- "oneOffEndAt": "string",
- "recurringDaysOfWeek": [
- 0
], - "recurringStartTime": "string",
- "recurringEndTime": "string",
- "effectiveFrom": "",
- "effectiveTo": "string",
- "status": "",
- "shiftTemplateId": "string",
- "notes": "string",
- "teamDriving": false,
- "createdBy": "",
- "createdAt": "",
- "updatedAt": "",
- "endedAt": "string",
- "coDrivers": [
- {
- "id": "string",
- "driverId": "string",
- "addedAt": "string",
- "addedBy": "string"
}
], - "breaks": [
- {
- "id": "string",
- "scope": "string",
- "scopeId": "string",
- "startTime": "string",
- "startAt": "string",
- "durationMinutes": 0,
- "paid": true,
- "label": "string"
}
]
}Resume a scheduling assignment
| id required | string SchedulingAssignment identifier |
The new SchedulingAssignment resource
| id | string Default: "" |
| fleetUnitId | string Default: "" |
| primaryDriverId | string or null |
| recurrenceKind | string Default: "" 'one_off' or 'recurring'. |
| oneOffStartAt | string or null |
| oneOffEndAt | string or null |
| recurringDaysOfWeek | Array of integers |
| recurringStartTime | string or null |
| recurringEndTime | string or null |
| effectiveFrom | string Default: "" |
| effectiveTo | string or null |
| status | string Default: "" |
| shiftTemplateId | string or null |
| notes | string or null |
| teamDriving | boolean Default: false Derived: true when the assignment carries at least one co-driver. |
| createdBy | string Default: "" |
| createdAt | string Default: "" |
| updatedAt | string Default: "" |
| endedAt | string or null |
Array of objects (SchedulingAssignmentCoDriver) | |
Array of objects (AssignmentBreak) |
{- "id": "",
- "fleetUnitId": "",
- "primaryDriverId": "string",
- "recurrenceKind": "",
- "oneOffStartAt": "string",
- "oneOffEndAt": "string",
- "recurringDaysOfWeek": [
- 0
], - "recurringStartTime": "string",
- "recurringEndTime": "string",
- "effectiveFrom": "",
- "effectiveTo": "string",
- "status": "",
- "shiftTemplateId": "string",
- "notes": "string",
- "teamDriving": false,
- "createdBy": "",
- "createdAt": "",
- "updatedAt": "",
- "endedAt": "string",
- "coDrivers": [
- {
- "id": "string",
- "driverId": "string",
- "addedAt": "string",
- "addedBy": "string"
}
], - "breaks": [
- {
- "id": "string",
- "scope": "string",
- "scopeId": "string",
- "startTime": "string",
- "startAt": "string",
- "durationMinutes": 0,
- "paid": true,
- "label": "string"
}
]
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "fleetUnitId": "",
- "primaryDriverId": "string",
- "recurrenceKind": "",
- "oneOffStartAt": "string",
- "oneOffEndAt": "string",
- "recurringDaysOfWeek": [
- 0
], - "recurringStartTime": "string",
- "recurringEndTime": "string",
- "effectiveFrom": "",
- "effectiveTo": "string",
- "status": "",
- "shiftTemplateId": "string",
- "notes": "string",
- "teamDriving": false,
- "createdBy": "",
- "createdAt": "",
- "updatedAt": "",
- "endedAt": "string",
- "coDrivers": [
- {
- "id": "string",
- "driverId": "string",
- "addedAt": "string",
- "addedBy": "string"
}
], - "breaks": [
- {
- "id": "string",
- "scope": "string",
- "scopeId": "string",
- "startTime": "string",
- "startAt": "string",
- "durationMinutes": 0,
- "paid": true,
- "label": "string"
}
]
}Suspend a scheduling assignment
| id required | string SchedulingAssignment identifier |
The new SchedulingAssignment resource
| reason | string or null |
{- "reason": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "fleetUnitId": "",
- "primaryDriverId": "string",
- "recurrenceKind": "",
- "oneOffStartAt": "string",
- "oneOffEndAt": "string",
- "recurringDaysOfWeek": [
- 0
], - "recurringStartTime": "string",
- "recurringEndTime": "string",
- "effectiveFrom": "",
- "effectiveTo": "string",
- "status": "",
- "shiftTemplateId": "string",
- "notes": "string",
- "teamDriving": false,
- "createdBy": "",
- "createdAt": "",
- "updatedAt": "",
- "endedAt": "string",
- "coDrivers": [
- {
- "id": "string",
- "driverId": "string",
- "addedAt": "string",
- "addedBy": "string"
}
], - "breaks": [
- {
- "id": "string",
- "scope": "string",
- "scopeId": "string",
- "startTime": "string",
- "startAt": "string",
- "durationMinutes": 0,
- "paid": true,
- "label": "string"
}
]
}Returns the effective-capacity calendar (occupancy + breaks + maintenance, override-refined) for a single vehicle or driver over [from, to]. Each window carries its kind, source reference, human reason, and whether it is a firm occupancy claim that blocks dispatch.
| resourceKind required | string Enum: "vehicle" "driver" |
| resourceId required | string <uuid> |
| from required | string <date-time> |
| to required | string <date-time> |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "startsAt": "2026-06-26T08:00:00+00:00",
- "endsAt": "2026-06-26T12:00:00+00:00",
- "kind": "assignment",
- "reason": "Assigned to shift 01J...",
- "sourceRef": "glacia:///fleet/scheduling/assignments/01J...",
- "firm": true
}
]
}Returns the ids (with display names) of vehicles or drivers that hold no firm occupancy claim overlapping [from, to] for the current tenant — the candidate set for assignment.
| resourceKind required | string Enum: "vehicle" "driver" |
| from required | string <date-time> |
| to required | string <date-time> |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "resourceKind": "vehicle",
- "name": "ABC-1234"
}
]
}List breaks
| scope | string Enum: "assignment" "instance" |
| scopeId | string <uuid> |
| includeRemoved | boolean Default: false |
| page | integer >= 1 Default: 1 |
| itemsPerPage | integer [ 1 .. 100 ] Default: 30 |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "scope": "",
- "scopeId": "",
- "startTime": "string",
- "startAt": "string",
- "durationMinutes": 0,
- "paid": false,
- "label": "string",
- "removed": false,
- "addedBy": "",
- "addedAt": "",
- "removedAt": "string"
}
]
}Assignment-scope breaks recur every occurrence (use startTime HH:MM). Instance-scope breaks attach to a single ShiftInstance (use startAt ISO datetime).
The new Break resource
| scope | string Default: "assignment" Enum: "assignment" "instance" |
| scopeId required | string <ulid> |
| startTime | string or null |
| startAt | string or null |
| durationMinutes | integer > 0 Default: 30 |
| paid | boolean Default: false |
| label | string or null |
{- "scope": "assignment",
- "scopeId": "string",
- "startTime": "string",
- "startAt": "string",
- "durationMinutes": 30,
- "paid": false,
- "label": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "scope": "",
- "scopeId": "",
- "startTime": "string",
- "startAt": "string",
- "durationMinutes": 0,
- "paid": false,
- "label": "string",
- "removed": false,
- "addedBy": "",
- "addedAt": "",
- "removedAt": "string"
}Get a break
| id required | string Break identifier |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "scope": "",
- "scopeId": "",
- "startTime": "string",
- "startAt": "string",
- "durationMinutes": 0,
- "paid": false,
- "label": "string",
- "removed": false,
- "addedBy": "",
- "addedAt": "",
- "removedAt": "string"
}List assignment exceptions
| assignmentId | string <uuid> |
| occurrenceDate | string <date> |
| includeRevoked | boolean Default: false |
| page | integer >= 1 Default: 1 |
| itemsPerPage | integer [ 1 .. 100 ] Default: 30 |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "assignmentId": "",
- "occurrenceDate": "",
- "kind": "",
- "overrideStartAt": "string",
- "overrideEndAt": "string",
- "overrideDriverId": "string",
- "reason": "string",
- "revoked": false,
- "recordedBy": "",
- "recordedAt": "",
- "revokedAt": "string",
- "coDrivingOverride": true
}
]
}Skip or override a single occurrence of a recurring assignment.
The new AssignmentException resource
| assignmentId required | string <ulid> |
| occurrenceDate required | string^(\d{4}-\d{2}-\d{2})$ |
| kind | string Default: "skip" Enum: "skip" "override" |
| overrideStartAt | string or null |
| overrideEndAt | string or null |
| overrideDriverId | string or null <ulid> |
| reason | string or null |
{- "assignmentId": "string",
- "occurrenceDate": "string",
- "kind": "skip",
- "overrideStartAt": "string",
- "overrideEndAt": "string",
- "overrideDriverId": "string",
- "reason": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "assignmentId": "",
- "occurrenceDate": "",
- "kind": "",
- "overrideStartAt": "string",
- "overrideEndAt": "string",
- "overrideDriverId": "string",
- "reason": "string",
- "revoked": false,
- "recordedBy": "",
- "recordedAt": "",
- "revokedAt": "string",
- "coDrivingOverride": true
}Get an assignment exception
| id required | string AssignmentException identifier |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "assignmentId": "",
- "occurrenceDate": "",
- "kind": "",
- "overrideStartAt": "string",
- "overrideEndAt": "string",
- "overrideDriverId": "string",
- "reason": "string",
- "revoked": false,
- "recordedBy": "",
- "recordedAt": "",
- "revokedAt": "string",
- "coDrivingOverride": true
}Body: {coDriving: bool | null}. null clears the override (inherit parent assignment).
| id required | string AssignmentException identifier |
The updated AssignmentException resource
| coDriving | boolean or null null = inherit parent assignment's flag; true/false = override for this single occurrence. |
{- "coDriving": true
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "assignmentId": "",
- "occurrenceDate": "",
- "kind": "",
- "overrideStartAt": "string",
- "overrideEndAt": "string",
- "overrideDriverId": "string",
- "reason": "string",
- "revoked": false,
- "recordedBy": "",
- "recordedAt": "",
- "revokedAt": "string",
- "coDrivingOverride": true
}Expands active assignments over the [from, to] window. Returns shifts and any warnings (e.g. driver overlaps).
| from required | string <date-time> |
| to required | string <date-time> |
| fleetUnitId | string <uuid> |
| driverId | string <uuid> |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "schedule",
- "from": "",
- "to": "",
- "shifts": [
- {
- "property1": "string",
- "property2": "string"
}
], - "warnings": [
- {
- "property1": "string",
- "property2": "string"
}
], - "breaks": [
- {
- "property1": "string",
- "property2": "string"
}
]
}
]
}List materialized shift instances
| assignmentId | string <uuid> |
| occurrenceDate | string <date> |
| status | string Enum: "planned" "in_progress" "completed" "cancelled" |
| page | integer >= 1 Default: 1 |
| itemsPerPage | integer [ 1 .. 100 ] Default: 30 |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "assignmentId": "",
- "occurrenceDate": "",
- "plannedStartAt": "",
- "plannedEndAt": "",
- "actualStartAt": "string",
- "actualEndAt": "string",
- "driverId": "string",
- "status": "",
- "notes": "string",
- "createdAt": "",
- "updatedAt": ""
}
]
}Persist a single occurrence of an assignment so it can carry actuals, notes, or be cancelled.
The new ShiftInstance resource
| assignmentId required | string <ulid> |
| occurrenceDate required | string^(\d{4}-\d{2}-\d{2})$ |
| plannedStartAt required | string |
| plannedEndAt required | string |
| driverId | string or null <ulid> |
{- "assignmentId": "string",
- "occurrenceDate": "string",
- "plannedStartAt": "string",
- "plannedEndAt": "string",
- "driverId": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "assignmentId": "",
- "occurrenceDate": "",
- "plannedStartAt": "",
- "plannedEndAt": "",
- "actualStartAt": "string",
- "actualEndAt": "string",
- "driverId": "string",
- "status": "",
- "notes": "string",
- "createdAt": "",
- "updatedAt": ""
}Get a shift instance
| id required | string ShiftInstance identifier |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "assignmentId": "",
- "occurrenceDate": "",
- "plannedStartAt": "",
- "plannedEndAt": "",
- "actualStartAt": "string",
- "actualEndAt": "string",
- "driverId": "string",
- "status": "",
- "notes": "string",
- "createdAt": "",
- "updatedAt": ""
}Cancel a shift instance
| id required | string ShiftInstance identifier |
The new ShiftInstance resource
| reason | string or null |
{- "reason": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "assignmentId": "",
- "occurrenceDate": "",
- "plannedStartAt": "",
- "plannedEndAt": "",
- "actualStartAt": "string",
- "actualEndAt": "string",
- "driverId": "string",
- "status": "",
- "notes": "string",
- "createdAt": "",
- "updatedAt": ""
}Mark a shift instance as completed
| id required | string ShiftInstance identifier |
The new ShiftInstance resource
| actualEndAt required | string |
{- "actualEndAt": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "assignmentId": "",
- "occurrenceDate": "",
- "plannedStartAt": "",
- "plannedEndAt": "",
- "actualStartAt": "string",
- "actualEndAt": "string",
- "driverId": "string",
- "status": "",
- "notes": "string",
- "createdAt": "",
- "updatedAt": ""
}Update shift instance notes
| id required | string ShiftInstance identifier |
The updated ShiftInstance resource
| notes | string or null |
{- "notes": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "assignmentId": "",
- "occurrenceDate": "",
- "plannedStartAt": "",
- "plannedEndAt": "",
- "actualStartAt": "string",
- "actualEndAt": "string",
- "driverId": "string",
- "status": "",
- "notes": "string",
- "createdAt": "",
- "updatedAt": ""
}Mark a shift instance as started
| id required | string ShiftInstance identifier |
The new ShiftInstance resource
| actualStartAt required | string |
{- "actualStartAt": "string"
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "assignmentId": "",
- "occurrenceDate": "",
- "plannedStartAt": "",
- "plannedEndAt": "",
- "actualStartAt": "string",
- "actualEndAt": "string",
- "driverId": "string",
- "status": "",
- "notes": "string",
- "createdAt": "",
- "updatedAt": ""
}List shift templates
| active | boolean |
| page | integer >= 1 Default: 1 |
| itemsPerPage | integer [ 1 .. 100 ] Default: 30 |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "name": "",
- "defaultStartTime": "",
- "defaultEndTime": "",
- "color": "",
- "active": true,
- "createdBy": "",
- "createdAt": "",
- "updatedAt": ""
}
]
}Create a shift template
The new SchedulingShiftTemplate resource
| name required | string <= 80 characters Default: "" |
| defaultStartTime required | string^(.*(^([01]\d|2[0-3]):[0-5]\d$).*)$ Default: "" |
| defaultEndTime required | string^(.*(^([01]\d|2[0-3]):[0-5]\d$).*)$ Default: "" |
| color required | string <= 16 characters Default: "" |
{- "name": "",
- "defaultStartTime": "",
- "defaultEndTime": "",
- "color": ""
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "name": "",
- "defaultStartTime": "",
- "defaultEndTime": "",
- "color": "",
- "active": true,
- "createdBy": "",
- "createdAt": "",
- "updatedAt": ""
}Get a shift template
| id required | string SchedulingShiftTemplate identifier |
{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "name": "",
- "defaultStartTime": "",
- "defaultEndTime": "",
- "color": "",
- "active": true,
- "createdBy": "",
- "createdAt": "",
- "updatedAt": ""
}Updates name, default times, color, or active flag. All fields are optional.
| id required | string SchedulingShiftTemplate identifier |
The updated SchedulingShiftTemplate resource
| name | string or null <= 80 characters |
| defaultStartTime | string or null^(.*(^([01]\d|2[0-3]):[0-5]\d$).*)$ |
| defaultEndTime | string or null^(.*(^([01]\d|2[0-3]):[0-5]\d$).*)$ |
| color | string or null <= 16 characters |
| active | boolean or null |
{- "name": "string",
- "defaultStartTime": "string",
- "defaultEndTime": "string",
- "color": "string",
- "active": true
}{- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": "",
- "name": "",
- "defaultStartTime": "",
- "defaultEndTime": "",
- "color": "",
- "active": true,
- "createdBy": "",
- "createdAt": "",
- "updatedAt": ""
}