eCabs Technologies Tenant API · Reference

Cuorium Partners API (1.0)

Download OpenAPI specification:

Customer

Customer management

Get customers

Get customers

Authorizations:
ApiKey
query Parameters
mobilePhone
string [ 8 .. 16 ] characters ^\+[1-9]\d{6,14}$
Example: mobilePhone=+1234567890

Filter by mobile phone number. Must be in E.164 format. Because mobile phone is a unique in our system by providing this filter, you can retrieve a specific customer (always one).

page
integer [ 0 .. 10000 ]
Default: 0
Example: page=0

Page number (0-indexed)

size
integer [ 1 .. 100 ]
Default: 25
Example: size=25

Number of items per page

Responses

Response samples

Content type
application/json
{
  • "results": [
    ],
  • "pagination": {
    }
}

Create customer

Create customer

Authorizations:
ApiKey
Request Body schema: application/json
required
firstName
required
string [ 1 .. 50 ] characters ^[A-Za-z]+$
lastName
required
string [ 1 .. 50 ] characters ^[A-Za-z]+$
email
string <email> [ 5 .. 254 ] characters ^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2...
mobilePhone
required
string [ 8 .. 16 ] characters ^[\+]?[1-9]\d{6,14}$

Mobile phone in E.164 format

locale
required
string [ 2 .. 5 ] characters ^[a-z]{2,5}(-[A-Z]{2,5})?$

IETF BCP 47 language tag (e.g., en, en-US)

Responses

Request samples

Content type
application/json
{
  • "firstName": "John",
  • "lastName": "Doe",
  • "email": "john.doe@example.com",
  • "mobilePhone": "+1234567890",
  • "locale": "en"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "firstName": "John",
  • "lastName": "Doe",
  • "email": "john.doe@example.com",
  • "mobilePhone": "+1234567890",
  • "locale": "en"
}

Get customer by ID

Get customer by ID

Authorizations:
ApiKey
path Parameters
customerId
required
string <uuid>

Customer ID

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "firstName": "John",
  • "lastName": "Doe",
  • "email": "john.doe@example.com",
  • "mobilePhone": "+1234567890",
  • "locale": "en"
}

Booking

Booking management

Get bookings

Get bookings

Authorizations:
ApiKey
query Parameters
statusIn
Array of strings [ 1 .. 3 ] items unique
Items Enum: "RESERVED" "DISPATCHED" "ACCEPTED" "CAB_ARRIVED_AT_PICKUP" "TRIP_STARTED" "TRIP_ONGOING" "CAB_ARRIVED_AT_INTERMEDIARY_WAYPOINT" "CAB_ARRIVED_AT_DROPOFF" "DROPPED_OFF" "TRIP_ENDED" "NO_SHOW" "CANCELLED" "COMPLETED"

Filter bookings by status. Must include at least one status.

pickupTimeFrom
string <date-time>
Example: pickupTimeFrom=2020-01-01T10:00:00Z

Filter bookings from pickup time (ISO 8601 format). This parameter have to be used with pickupTimeTo.

pickupTimeTo
string <date-time>
Example: pickupTimeTo=2020-01-01T12:00:00Z

Filter bookings until pickup time (ISO 8601 format). This parameter have to be used with pickupTimeFrom.

driverIds
Array of integers

Filter by a list of driver IDs

shiftId
integer

Filter by shift ID

page
integer [ 0 .. 10000 ]
Default: 0
Example: page=0

Page number (0-indexed)

size
integer [ 1 .. 100 ]
Default: 25
Example: size=25

Number of items per page

Responses

Response samples

Content type
application/json
{
  • "results": [
    ],
  • "pagination": {
    }
}

Create booking

Create booking

Authorizations:
ApiKey
Request Body schema: application/json
required
customerId
required
string <uuid>

Customer ID UUID

object (B2BAccount)
pickupTime
string <date-time>

Scheduled pickup time - REQUIRED if asap is false

asap
boolean

Is this an ASAP booking

quotationId
integer >= 1

Associated quotation ID

required
object (VehicleTypeMinimal)
required
Array of objects (TripWaypoint) [ 2 .. 10 ] items

Trip waypoints (minimum 2 pickup and dropoff)

object (PassengerData)
object
required
object

Responses

Request samples

Content type
application/json
{
  • "customerId": "123e4567-e89b-12d3-a456-426655440000",
  • "b2bAccount": {
    },
  • "pickupTime": "2020-01-01T12:00:00Z",
  • "asap": true,
  • "quotationId": 1,
  • "vehicleType": {
    },
  • "tripWaypoints": [
    ],
  • "passenger": {
    },
  • "price": {
    },
  • "payment": {
    }
}

Response samples

Content type
application/json
{
  • "id": 7,
  • "customerId": "123e4567-e89b-12d3-a456-426655440000",
  • "b2bAccount": {
    },
  • "status": "ACCEPTED",
  • "pickupTime": "2020-01-01T12:00:00Z",
  • "asap": true,
  • "quotationId": 1,
  • "vehicleType": {
    },
  • "tripWaypoints": [
    ],
  • "passenger": {
    },
  • "distance": 1.71,
  • "price": {
    },
  • "payment": {
    },
  • "trackingLinkExpiresAt": "2026-08-06T15:00:00Z"
}

Get booking by ID. Optionally include the existing

Get booking by ID. Optionally include the existing Ride Data Sharing tracking link via the includeTrackingLink query parameter. Requesting the link does not create a sharing session.

Authorizations:
ApiKey
path Parameters
bookingId
required
integer

Booking ID

query Parameters
includeTrackingLink
boolean
Default: false
Example: includeTrackingLink=true

When true, the response additionally includes the existing Ride Data Sharing tracking link (trackingLink) and its expiry (trackingLinkExpiresAt) for the booking, if an active sharing session exists. Requesting the link is read-only: it never creates, regenerates or extends a sharing session. The session is generated asynchronously after booking acceptance, so the fields may be null while it is not yet available, once it has expired, or if Ride Data Sharing is temporarily unavailable. When absent or false the endpoint's behaviour is unchanged and Ride Data Sharing is not called.

Responses

Response samples

Content type
application/json
{
  • "id": 7,
  • "customerId": "123e4567-e89b-12d3-a456-426655440000",
  • "b2bAccount": {
    },
  • "status": "ACCEPTED",
  • "pickupTime": "2020-01-01T12:00:00Z",
  • "asap": true,
  • "quotationId": 1,
  • "vehicleType": {
    },
  • "tripWaypoints": [
    ],
  • "passenger": {
    },
  • "distance": 1.71,
  • "price": {
    },
  • "payment": {
    },
  • "trackingLinkExpiresAt": "2026-08-06T15:00:00Z"
}

Update booking status

Update booking status

Authorizations:
ApiKey
path Parameters
bookingId
required
integer

Booking ID

Request Body schema: application/json
required
status
required
string
Value: "CANCELLED"

Booking status

Responses

Request samples

Content type
application/json
{
  • "status": "CANCELLED"
}

Response samples

Content type
application/json
{
  • "status": 400,
  • "error": "The provided input is invalid",
  • "timestamp": "2020-01-01T12:00:00Z"
}

Quotation

Quotation management

Create quotation

Create quotation

Authorizations:
ApiKey
Request Body schema: application/json
required
customerId
required
string <uuid>

Customer ID UUID

paymentType
required
string
Enum: "ACCOUNT" "CASH"

Payment method

pickupTime
string <date-time>

Scheduled pickup time

required
Array of objects [ 2 .. 10 ] items

Trip waypoints (minimum 2 pickup and dropoff)

Responses

Request samples

Content type
application/json
{
  • "customerId": "123e4567-e89b-12d3-a456-426655440000",
  • "paymentType": "ACCOUNT",
  • "pickupTime": "2020-01-01T12:00:00Z",
  • "tripWaypoints": [
    ]
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "distance": 1.71,
  • "quotationForVehicleTypes": [
    ]
}

Get quotation by ID

Get quotation by ID

Authorizations:
ApiKey
path Parameters
quotationId
required
integer

Quotation ID

Responses

Response samples

Content type
application/json
{
  • "id": 1,
  • "distance": 1.71,
  • "quotationForVehicleTypes": [
    ]
}

Vehicle Type

Vehicle type management

Get vehicle types

Get vehicle types

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "results": [
    ],
  • "pagination": {
    }
}

Waiting Time

Waiting times

Get waiting times for vehicle types

Get waiting times for vehicle types

Authorizations:
ApiKey
query Parameters
lat
number [ -90 .. 90 ]
Example: lat=40.714224

Latitude coordinate in decimal degrees

lng
number [ -180 .. 180 ]
Example: lng=-73.961452

Longitude coordinate in decimal degrees

Responses

Response samples

Content type
application/json
{
  • "results": [
    ],
  • "pagination": {
    }
}

Get ETA by Booking ID

Retrieves the Estimated Time of Arrival (ETA) and associated distance for a specific booking.

Authorizations:
ApiKey
query Parameters
bookingId
required
integer

The ID of the booking.

Responses

Response samples

Content type
application/json
null

Vehicle Location

Vehicle location

Get vehicle location

Get vehicle location

Authorizations:
ApiKey
path Parameters
numberPlate
required
string

Vehicle numberplate

Responses

Response samples

Content type
application/json
{
  • "numberplate": "ABC123",
  • "status": "IDLE",
  • "location": {
    },
  • "shiftId": 1,
  • "vehicleTypeCode": "cab",
  • "bookings": {
    }
}

Get vehicle locations

Get vehicle locations

Authorizations:
ApiKey
query Parameters
vehicleTypeCodeIn
Array of strings [ 1 .. 10 ] items unique
status
string
Enum: "IDLE" "BUSY"
page
integer [ 0 .. 10000 ]
Default: 0
Example: page=0

Page number (0-indexed)

size
integer [ 1 .. 100 ]
Default: 25
Example: size=25

Number of items per page

Responses

Response samples

Content type
application/json
{
  • "results": [
    ],
  • "pagination": {
    }
}

Pricing

Pricing management

Get pricing rules

Get pricing rules

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "results": [
    ],
  • "pagination": {
    }
}

Create pricing rule

Create pricing rule

Authorizations:
ApiKey
Request Body schema: application/json
required
name
string <= 500 characters
description
string <= 500 characters
status
string
Enum: "ACTIVE" "INACTIVE" "DRAFT"

Rule status

type
string
Enum: "GENERAL" "BOOKING_SOURCES" "ZONE" "DATE_RANGE" "CALL_ORIGIN" "PRICE_OVERWRITE" "WAIT_TIME_GRACE_PERIOD"

Rule type

object (RuleQuota)
object (RuleCriteria)
object (RuleSettings)

Responses

Request samples

Content type
application/json
{
  • "name": "Rule 1",
  • "description": "Rule 1",
  • "status": "ACTIVE",
  • "type": "GENERAL",
  • "quota": {
    },
  • "criteria": {
    },
  • "settings": {
    }
}

Response samples

Content type
application/json
{
  • "id": 1
}

Get pricing rule by ID

Get pricing rule by ID

Authorizations:
ApiKey
path Parameters
pricingRuleId
required
integer >= 1
Example: 1

Responses

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "Rule 1",
  • "description": "Rule 1",
  • "updatedAt": "2020-01-01T12:00:00Z",
  • "status": "ACTIVE",
  • "type": "GENERAL",
  • "quota": {
    },
  • "criteria": {
    },
  • "settings": {
    }
}

Update pricing rule

Update pricing rule

Authorizations:
ApiKey
path Parameters
pricingRuleId
required
integer >= 1
Example: 1
Request Body schema: application/json
required
name
string <= 500 characters
description
string <= 500 characters
status
string
Enum: "ACTIVE" "INACTIVE" "DRAFT"

Rule status

type
string
Enum: "GENERAL" "BOOKING_SOURCES" "ZONE" "DATE_RANGE" "CALL_ORIGIN" "PRICE_OVERWRITE" "WAIT_TIME_GRACE_PERIOD"

Rule type

object (RuleQuota)
object (RuleCriteria)
object (RuleSettings)

Responses

Request samples

Content type
application/json
{
  • "name": "Rule 1",
  • "description": "Rule 1",
  • "status": "ACTIVE",
  • "type": "GENERAL",
  • "quota": {
    },
  • "criteria": {
    },
  • "settings": {
    }
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "Rule 1",
  • "description": "Rule 1",
  • "updatedAt": "2020-01-01T12:00:00Z",
  • "status": "ACTIVE",
  • "type": "GENERAL",
  • "quota": {
    },
  • "criteria": {
    },
  • "settings": {
    }
}

Delete pricing rule

Delete pricing rule

Authorizations:
ApiKey
path Parameters
pricingRuleId
required
integer >= 1
Example: 1

Responses

Response samples

Content type
application/json
{
  • "status": 401,
  • "error": "Authentication token is missing or invalid",
  • "timestamp": "2020-01-01T12:00:00Z"
}

Get pricing zones

Get pricing zones

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "results": [
    ],
  • "pagination": {
    }
}

Create pricing zone

Create pricing zone

Authorizations:
ApiKey
Request Body schema: application/json
required
name
string
radius
integer >= 1

Radius in meters

Array of objects (ZonePoint)

Zone points

Responses

Request samples

Content type
application/json
{
  • "name": "Zone 1",
  • "radius": 100,
  • "points": [
    ]
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "Zone 1",
  • "radius": 100,
  • "points": [
    ]
}

Get pricing zone by ID

Get pricing zone by ID

Authorizations:
ApiKey
path Parameters
pricingZoneId
required
integer >= 1
Example: 1

Responses

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "Zone 1",
  • "radius": 100,
  • "points": [
    ]
}

Update pricing zone

Update pricing zone

Authorizations:
ApiKey
path Parameters
pricingZoneId
required
integer >= 1
Example: 1
Request Body schema: application/json
required
name
string
radius
integer >= 1

Radius in meters

Array of objects (ZonePoint)

Zone points

Responses

Request samples

Content type
application/json
{
  • "name": "Zone 1",
  • "radius": 100,
  • "points": [
    ]
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "Zone 1",
  • "radius": 100,
  • "points": [
    ]
}

Delete pricing zone

Delete pricing zone

Authorizations:
ApiKey
path Parameters
pricingZoneId
required
integer >= 1
Example: 1

Responses

Response samples

Content type
application/json
{
  • "status": 401,
  • "error": "Authentication token is missing or invalid",
  • "timestamp": "2020-01-01T12:00:00Z"
}

Driver

Driver operational status management

Update a driver's operational status

Updates the driver identified by its existing numeric driver_id within the authenticated target tenant. Repeating the current status is a successful no-op and returns the same value in status and previousStatus. Requires DRIVER_STATUS_WRITER; the driver ID does not grant authorization.

Authorizations:
ApiKey
path Parameters
driverId
required
integer <int32> [ 1 .. 2147483647 ]

The existing driver_id shown in the Cuorium panel for the target tenant. Use decimal digits with a value from 1 through 2147483647. Non-numeric, fractional, non-positive and out-of-range values return 400 before any downstream call. No tenant override is accepted.

Request Body schema: application/json
required
status
required
string (DriverOperationalStatus)
Enum: "ACTIVE" "SUSPENDED" "DEACTIVATED"

The driver's operational status.

Responses

Request samples

Content type
application/json
{
  • "status": "SUSPENDED"
}

Response samples

Content type
application/json
{
  • "driverId": 12345,
  • "status": "SUSPENDED",
  • "previousStatus": "ACTIVE"
}