Skip to content

Conundra Order Book API (1.6.1)

Order Book provides ready-to-run domain-specific logistic data governance for your route optimization.

Download OpenAPI description
Servers
Mock server
https://developer.conundra.eu/_mock/apis/order-book/order-book-api
Order Book API Production
https://api.conundra.eu/orderbook/v1

Health check

Miscellaneous endpoints for general API functionality

Operations

Pickup Orders

Pickup orders represent an order where the executor needs to pick up cargo at a certain stop.

Operations

Delivery Orders

Delivery orders represent an order where the executor needs to drop off cargo at a certain stop.

Operations

PickupDelivery Orders

PickupDelivery orders represent an order where the executor needs to pick up cargo at a certain stop and deliver it at another stop.

Operations

Consolidated Orders

Orders are being consolidated by the application to enrich them with captured domain knowledge through Conditionals and/or Locations. These endpoints provide insights into and discoverability of the results of this consolidation.

Operations

Category Management

[EXPERIMENTAL] Endpoints for managing Categories.

Experimental Status: These endpoints have an experimental status since their complexity was impacted by a removed feature. We intend at the very least to vastly simplify these endpoints by removing the code-subresource.

Operations

Transport Requests

Transport Requests can be used to group Orders that share some administrative context. They can serve as a way of targeting Orders through conditionals, by providing context on the client companies for which those orders are being executed.

Operations

Companies

Companies can be managed in Order Book and used as clients for Transport Requests. This allows you to target Conditionals to Orders contained within Transport Requests for select clients.

Operations

Locations

Locations can be managed separately in Order Book, which allows the user to capture their related business rules in a reusable manner. This is especially valuable in business cases where a select set of Locations is reused across many orders.

Typical use cases include capturing regular opening hours or requirements tied to a specific Location.

Operations

Conditionals

Conditionals allow you to capture business rules in Order Book. You can target Orders based on several attributes or create time-based rules, and apply mutations to this order set enriching for your optimization.

Operations

Get a conditional by Id

Request

This endpoint allows you to get the information about a given conditional.

Security
clientCredentials
Path
idstringrequired

The generated identifier of an entity instance

Responses

OK

Headers
ETagstring

weak Etag (ex W/<etag_value>) which contains the (updated) version of the entity

Bodyapplication/json
idstringread-only

A generated identifier for a conditional. The identifier is returned in both the Location header and (optional) response body when creating the Conditional.

Example: "624ec196-4c5c-4fb4-bb43-9ffd8a6b8844"
namestring

A short name for the Conditional

Example: "a name"
descriptionstring

A description for the conditional, helpful in determining the why or what.

Example: "a description"
conditionsobjectrequired

The rules that will determine whether this conditional is applicable to an order or not.

At least one conditional needs to be provided. The different top-level conditions are combined with AND logic, ie: they all need to match for an order to match this conditional.

locationsArray of strings

Use this condition to target orders based on their site_location, by providing the Location's business ID in the list.

When providing multiple references, only one of the Locations needs to be present on the Order.

Example: ["locationA"]
temporalsArray of objects(ClosedDateRange)

This is a time-based condition for targeting orders. Each temporal condition provided will look for orders where at least one timeFrame (either absolute or windowed) overlaps with this range.

Should the order contain timeframes without an end_at, the default period of two weeks will be used to determine whether the timeframe overlaps with the temporal condition.

When providing multiple temporal conditions, only one of them needs to match the order's timeframe.

categoriesArray of objects(ConditionsCategory)

When providing filters on categories of multiple types, each type needs to match for an order to match the condition.

clientsArray of strings

A list of references to Companies (identified by their business id). When any company is present on an order's (optional) transport request, the order matches the condition.

Example: ["company-id"]
effectsobjectrequired

At least one property has to be filled.

stop_timestring(IsoDuration)

An ISO-formatted Duration, see wikipedia ISO-8601 and RFC-3339

time_windowsArray of objects(TimeWindow)[ 0 .. 100 ] itemsunique
requirementsobject(Requirements)

Requirements that have to be fulfilled by the executor of an order at this location.

Response
application/json
{ "id": "624ec196-4c5c-4fb4-bb43-9ffd8a6b8844", "name": "a name", "description": "a description", "conditions": { "locations": [], "temporals": [], "categories": [], "clients": [] }, "effects": { "stop_time": "PT5M", "time_windows": [], "requirements": {} } }

Update an existing conditional by Id

Request

This endpoint updates a given conditional.

Security
clientCredentials
Path
idstringrequired

The generated identifier of an entity instance

Headers
PreferArray of strings

The RFC7240 Prefer header indicates that a particular server behavior is preferred by the client but is not required for successful completion of the request (see RFC 7240).

The following behavior is supported by this API:

  • return=<minimal|representation> is used to suggest the server to return using status code 204 without a resource in the response body (minimal) or using status codes 200 or 201 with the resource in the response body on success (representation).
If-Matchstring

weak Etag as optimistic locking check

Bodyapplication/jsonrequired
namestring

A short name for the Conditional

Example: "a name"
descriptionstring

A description for the conditional, helpful in determining the why or what.

Example: "a description"
conditionsobjectrequired

The rules that will determine whether this conditional is applicable to an order or not.

At least one conditional needs to be provided. The different top-level conditions are combined with AND logic, ie: they all need to match for an order to match this conditional.

locationsArray of strings

Use this condition to target orders based on their site_location, by providing the Location's business ID in the list.

When providing multiple references, only one of the Locations needs to be present on the Order.

Example: ["locationA"]
temporalsArray of objects(ClosedDateRange)

This is a time-based condition for targeting orders. Each temporal condition provided will look for orders where at least one timeFrame (either absolute or windowed) overlaps with this range.

Should the order contain timeframes without an end_at, the default period of two weeks will be used to determine whether the timeframe overlaps with the temporal condition.

When providing multiple temporal conditions, only one of them needs to match the order's timeframe.

categoriesArray of objects(ConditionsCategory)

When providing filters on categories of multiple types, each type needs to match for an order to match the condition.

clientsArray of strings

A list of references to Companies (identified by their business id). When any company is present on an order's (optional) transport request, the order matches the condition.

Example: ["company-id"]
effectsobjectrequired

At least one property has to be filled.

stop_timestring(IsoDuration)

An ISO-formatted Duration, see wikipedia ISO-8601 and RFC-3339

time_windowsArray of objects(TimeWindow)[ 0 .. 100 ] itemsunique
requirementsobject(Requirements)

Requirements that have to be fulfilled by the executor of an order at this location.

Responses

OK

Headers
ETagstring

weak Etag (ex W/<etag_value>) which contains the (updated) version of the entity

Preference-Appliedstring

to indicate whether a preference has been applied. (ex Preference-Applied: return=representation)

Bodyapplication/json
idstringread-only

A generated identifier for a conditional. The identifier is returned in both the Location header and (optional) response body when creating the Conditional.

Example: "624ec196-4c5c-4fb4-bb43-9ffd8a6b8844"
namestring

A short name for the Conditional

Example: "a name"
descriptionstring

A description for the conditional, helpful in determining the why or what.

Example: "a description"
conditionsobjectrequired

The rules that will determine whether this conditional is applicable to an order or not.

At least one conditional needs to be provided. The different top-level conditions are combined with AND logic, ie: they all need to match for an order to match this conditional.

locationsArray of strings

Use this condition to target orders based on their site_location, by providing the Location's business ID in the list.

When providing multiple references, only one of the Locations needs to be present on the Order.

Example: ["locationA"]
temporalsArray of objects(ClosedDateRange)

This is a time-based condition for targeting orders. Each temporal condition provided will look for orders where at least one timeFrame (either absolute or windowed) overlaps with this range.

Should the order contain timeframes without an end_at, the default period of two weeks will be used to determine whether the timeframe overlaps with the temporal condition.

When providing multiple temporal conditions, only one of them needs to match the order's timeframe.

categoriesArray of objects(ConditionsCategory)

When providing filters on categories of multiple types, each type needs to match for an order to match the condition.

clientsArray of strings

A list of references to Companies (identified by their business id). When any company is present on an order's (optional) transport request, the order matches the condition.

Example: ["company-id"]
effectsobjectrequired

At least one property has to be filled.

stop_timestring(IsoDuration)

An ISO-formatted Duration, see wikipedia ISO-8601 and RFC-3339

time_windowsArray of objects(TimeWindow)[ 0 .. 100 ] itemsunique
requirementsobject(Requirements)

Requirements that have to be fulfilled by the executor of an order at this location.

Response
application/json
{ "id": "624ec196-4c5c-4fb4-bb43-9ffd8a6b8844", "name": "a name", "description": "a description", "conditions": { "locations": [], "temporals": [], "categories": [], "clients": [] }, "effects": { "stop_time": "PT5M", "time_windows": [], "requirements": {} } }

Delete a conditional by Id

Request

This endpoint allows you to delete a given conditional

Security
clientCredentials
Path
idstringrequired

The generated identifier of an entity instance

Headers
If-Matchstring

weak Etag as optimistic locking check

Responses

Deletion has succeeded and body is empty

Response
No content

Partial Routes [EXPERIMENTAL]

[EXPERIMENTAL] [UNDER DEVELOPMENT] Endpoints for managing preplanned PartialRoutes.

Operations