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

Upsert a Delivery by business id for a given TransportRequest

Request

Upsert delivery information. When if-match is not specified, then no optimistic protection is applied, ie: the last update wins.

Note: It is not possible to update deliveries within TransportRequests directly through the Upsert a Delivery by business Id endpoint.

Security
clientCredentials
Path
business_idstring^[a-zA-Z0-9.~\-_]{1,512}$required

The identifier of the TransportRequest within which this delivery must be added/edited.

order_idstringrequired

The identifier of a delivery instance

Headers
If-Matchstring

weak Etag as optimistic locking check

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).
Bodyapplication/json
orderobject(OrderInformation)required
order_categorystring

An optional category for the Order, represented by its code. Defining a category for your Order can help in easy retrieval of the information in the user interface.

Conditionals can be targeted to Orders with a specific category, allowing the planner to create business rules for sets of Orders.

Example: "orderCategoryA"
descriptionstring

A freeform text description, providing additional details that might be of use for a planner.

Example: "a description"
capacitiesArray of objects(Capacity)[ 1 .. 8 ] itemsuniquerequired

Required capacity on the executor of this Order. The executor will need to be able to fulfill all capacities specified on this Order in order to execute it.

typestring

Characterization of a capacity, representing the dimension in which this Capacity is expressed.

Default "volume"
Enum"volume""weight""loadingMeters""capacity1""capacity2""capacity3""capacity4""capacity5"
valuenumber(double)> 0required

The nominal capacity required of the executor, in the specified dimension.

Example: 20
mandatoryboolean

Boolean flag signaling the optimization that this order must be executed. If this flag is not provided the order is considered optional and an outsourcing_cost needs to be provided.

Default false
Example: true
requirementsobject(OrderRequirements)

Requirements and constraints that this order enforces of its executor. These properties help the optimization engine in determining which executors could be used for this Order.

lifo_groupsArray of strings

Orders are handled last-in, first-out (LIFO) within an optimization. Specifying LIFO-groups will limit this behaviour to only those orders within the same LIFO group.

An order can be a part of multiple LIFO groups, which will result in the LIFO-constraint being applied within each LIFO group it is a part of.

Example: ["lifo_group"]
outsourcing_costnumber(double)

A fictional cost for not planning this order in an optimization. This allows the optimization engine to weigh the costs of executing the order versus outsourcing it to a (potentially fictitious) third party.

Example: 0
custom_dataobject(CustomData)

Custom data allows you te enrich an Order with relevant information for the planner that is not part of the Order Book domain. Custom data properties will be available on the distinct activities (Pickup and/or Delivery) of this Order in the planning context. This allows you to define a property once and have it available on both parts of a PickupDelivery Order.

When a custom data key is duplicated on the activity-level, it will override the value defined on the Order level.

plan_groupstring

The plan group this Order belongs to. Plan groups signify the group of orders that are supposed to be planned together.

Example: "a plan group"
clientstring

An optional reference, by business_id, to a Company that is known in Order Book. Conditionals can target Orders
with a certain Company as its client, thus providing the planner a way for applying business rules to all Orders for certain customers.

Example: "companyId"
deliveryobject(TransportInformation)required

Properties specific to the activity that needs to be executed for fulfilling this order. In case of a PickupDelivery Order, these are two separate activities with their own settings.

site_locationobject(LocationId)

A known Location in Order Book at which this activity occurs. This allows reusing the information present on the Location, such as opening hours, addresses requirements... Using a site_location also allows you to target sets of Orders based on a shared Location reference in a Conditional. Combining the Order properties with those of the linked Location can be fine-tuned using the combination strategies on relevant properties.

Mutually exclusive with visit_location.

visit_locationobject(VisitLocation)

An ad-hoc address at which this Order needs to be executed. When using a visit_location either address information should be present, or otherwise a geo point. When no geo_point is provided the address will be resolved by our geocoding service. The resolved information is read only (ie: only available in a response).

Mutually exclusive with site_location.

stop_timeobject(OrderStopTime)

The time that needs to be taken into account for stopping at the Order's location.

service_timestring(ServiceTime)

The duration required for executing this activity in the order.

Needs to be an ISO-formatted Duration, see wikipedia ISO-8601 and RFC-3339

sequenceinteger(int32)

The sequence of this activity of the Order within a Route.

Note: The sequence is applied to a route, not to trips within a route.

Example: 1
time_frameobject(TimeFrame)required

Supports two ways to specify when an order can be delivered:

  • windowed intervals are used in conjunction with a (site) Location's (planning) time windows or Conditionals. The windowed intervals will be limited to the smallest common intersection between all applicable time windows from these.
  • absolute intervals are absolute date times that will be used to plan the order.

Using both windowed and absolute intervals in conjunction can solve many complicated cases, especially when taking the flexibility of Conditionals into account.

At least one timerange is required, either absolute or windowed.

absoluteArray of objects(AbsoluteTimeFrame)

A set of date-time intervals within which this activity of the Order can be executed.

Absolute timeframes will always be retained on the Order after consolidation.

windowedArray of objects(WindowedTimeFrame)

A set of date-time intervals within which this activity of the Order can be executed. These intervals will be intersected with the (planning) opening hours of a linked (site) location and/or timewindows defined on applicable Conditionals.

colorstring

This property can be used to differentiate between orders visually. The orders within a planning will be shown in this color.

The color can be provided both as a CSS color name or using a hexadecimal color code (eg: #123DEF).

Example: "red"
labelsArray of strings

Labels can be used for identifying sets of Orders. When starting an optimization, labels can be used for filtering the Order space and limiting the optimization to specific subsets.

Labels can also be used as filters in select Order Book features or Constraint Management.

Example: ["labelA"]
custom_dataobject(CustomData)

Custom data allows you te enrich an Order with relevant information for the planner that is not part of the Order Book domain. Custom data properties defined on this activity of an Order will be available in the planning context.

Keys defined on this level will override any custom data that is defined on other entities or properties.

Responses

Order updated

Response body contains updated Order

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
orderobject(OrderInformationInTransportRequest)required

General order properties. In case of a pickupDelivery Order, these properties are shared between both the pickup and delivery activities.

business_idstring^[a-zA-Z0-9.~\-_]{1,512}$required

A unique reference id.

Example: "orderA"
order_categorystring

An optional category for the Order, represented by its code. Defining a category for your Order can help in easy retrieval of the information in the user interface.

Conditionals can be targeted to Orders with a specific category, allowing the planner to create business rules for sets of Orders.

Example: "orderCategoryA"
descriptionstring

A freeform text description, providing additional details that might be of use for a planner.

Example: "a description"
capacitiesArray of objects(Capacity)[ 1 .. 8 ] itemsuniquerequired

Required capacity on the executor of this Order. The executor will need to be able to fulfill all capacities specified on this Order in order to execute it.

typestring

Characterization of a capacity, representing the dimension in which this Capacity is expressed.

Default "volume"
Enum"volume""weight""loadingMeters""capacity1""capacity2""capacity3""capacity4""capacity5"
valuenumber(double)> 0required

The nominal capacity required of the executor, in the specified dimension.

Example: 20
mandatoryboolean

Boolean flag signaling the optimization that this order must be executed. If this flag is not provided, an outsourcing_cost needs to be provided.

Example: true
requirementsobject(OrderRequirements)

Requirements and constraints that this order enforces of its executor. These properties help the optimization engine in determining which executors could be used for this Order.

lifo_groupsArray of strings

Orders are handled last-in, first-out (LIFO) within an optimization. Specifying LIFO-groups will limit this behaviour to only those orders within the same LIFO group.

An order can be a part of multiple LIFO groups, which will result in the LIFO-constraint being applied within each LIFO group it is a part of.

Example: ["lifo_group"]
outsourcing_costnumber(double)

A fictional cost for not planning this order in an optimization. This allows the optimization engine to weigh the costs of executing the order versus outsourcing it to a (potentially fictitious) third party.

Example: 0
custom_dataobject(CustomData)

Custom data allows you te enrich an Order with relevant information for the planner that is not part of the Order Book domain. Custom data properties will be available on the distinct activities (Pickup and/or Delivery) of this Order in the planning context. This allows you to define a property once and have it available on both parts of a PickupDelivery Order.

When a custom data key is duplicated on the activity-level, it will override the value defined on the Order level.

plan_groupstring

The plan group this Order belongs to. Plan groups signify the group of orders that are supposed to be planned together.

Example: "a plan group"
deliveryobject(TransportInformation)required

Properties specific to the activity that needs to be executed for fulfilling this order. In case of a PickupDelivery Order, these are two separate activities with their own settings.

site_locationobject(LocationId)

A known Location in Order Book at which this activity occurs. This allows reusing the information present on the Location, such as opening hours, addresses requirements... Using a site_location also allows you to target sets of Orders based on a shared Location reference in a Conditional. Combining the Order properties with those of the linked Location can be fine-tuned using the combination strategies on relevant properties.

Mutually exclusive with visit_location.

visit_locationobject(VisitLocation)

An ad-hoc address at which this Order needs to be executed. When using a visit_location either address information should be present, or otherwise a geo point. When no geo_point is provided the address will be resolved by our geocoding service. The resolved information is read only (ie: only available in a response).

Mutually exclusive with site_location.

stop_timeobject(OrderStopTime)

The time that needs to be taken into account for stopping at the Order's location.

service_timestring(ServiceTime)

The duration required for executing this activity in the order.

Needs to be an ISO-formatted Duration, see wikipedia ISO-8601 and RFC-3339

sequenceinteger(int32)

The sequence of this activity of the Order within a Route.

Note: The sequence is applied to a route, not to trips within a route.

Example: 1
time_frameobject(TimeFrame)required

Supports two ways to specify when an order can be delivered:

  • windowed intervals are used in conjunction with a (site) Location's (planning) time windows or Conditionals. The windowed intervals will be limited to the smallest common intersection between all applicable time windows from these.
  • absolute intervals are absolute date times that will be used to plan the order.

Using both windowed and absolute intervals in conjunction can solve many complicated cases, especially when taking the flexibility of Conditionals into account.

At least one timerange is required, either absolute or windowed.

absoluteArray of objects(AbsoluteTimeFrame)

A set of date-time intervals within which this activity of the Order can be executed.

Absolute timeframes will always be retained on the Order after consolidation.

windowedArray of objects(WindowedTimeFrame)

A set of date-time intervals within which this activity of the Order can be executed. These intervals will be intersected with the (planning) opening hours of a linked (site) location and/or timewindows defined on applicable Conditionals.

colorstring

This property can be used to differentiate between orders visually. The orders within a planning will be shown in this color.

The color can be provided both as a CSS color name or using a hexadecimal color code (eg: #123DEF).

Example: "red"
labelsArray of strings

Labels can be used for identifying sets of Orders. When starting an optimization, labels can be used for filtering the Order space and limiting the optimization to specific subsets.

Labels can also be used as filters in select Order Book features or Constraint Management.

Example: ["labelA"]
custom_dataobject(CustomData)

Custom data allows you te enrich an Order with relevant information for the planner that is not part of the Order Book domain. Custom data properties defined on this activity of an Order will be available in the planning context.

Keys defined on this level will override any custom data that is defined on other entities or properties.

Response
application/json
{ "order": { "business_id": "orderA", "order_category": "orderCategoryA", "description": "a description", "capacities": [], "mandatory": true, "requirements": {}, "lifo_groups": [], "outsourcing_cost": 0, "custom_data": {}, "plan_group": "a plan group" }, "delivery": { "site_location": {}, "visit_location": {}, "stop_time": {}, "service_time": "PT5M", "sequence": 1, "time_frame": {}, "color": "red", "labels": [], "custom_data": {} } }

Delete an Delivery by business id for a given TransportRequest

Request

This endpoint allows you to delete a given delivery within a transport request.

Note: It is not possible to delete deliveries within TransportRequests directly through the Delete a Delivery by business Id endpoint.

Security
clientCredentials
Path
business_idstring^[a-zA-Z0-9.~\-_]{1,512}$required

The identifier of the TransportRequest from which this delivery must be removed.

order_idstringrequired

The identifier of a delivery instance

Headers
If-Matchstring

weak Etag as optimistic locking check

Responses

No Content

Response
No content

Get a Delivery by business id

Request

Retrieve a single Delivery Order by its business id.

Security
clientCredentials
Path
business_idstring^[a-zA-Z0-9.~\-_]{1,512}$required

The business identifier of an entity instance

Responses

OK

Bodyapplication/json
orderobject(OrderInformation)required
business_idstring^[a-zA-Z0-9.~\-_]{1,512}$read-only

A unique reference id.

Example: "orderA"
order_categorystring

An optional category for the Order, represented by its code. Defining a category for your Order can help in easy retrieval of the information in the user interface.

Conditionals can be targeted to Orders with a specific category, allowing the planner to create business rules for sets of Orders.

Example: "orderCategoryA"
descriptionstring

A freeform text description, providing additional details that might be of use for a planner.

Example: "a description"
capacitiesArray of objects(Capacity)[ 1 .. 8 ] itemsuniquerequired

Required capacity on the executor of this Order. The executor will need to be able to fulfill all capacities specified on this Order in order to execute it.

typestring

Characterization of a capacity, representing the dimension in which this Capacity is expressed.

Default "volume"
Enum"volume""weight""loadingMeters""capacity1""capacity2""capacity3""capacity4""capacity5"
valuenumber(double)> 0required

The nominal capacity required of the executor, in the specified dimension.

Example: 20
mandatoryboolean

Boolean flag signaling the optimization that this order must be executed. If this flag is not provided the order is considered optional and an outsourcing_cost needs to be provided.

Default false
Example: true
requirementsobject(OrderRequirements)

Requirements and constraints that this order enforces of its executor. These properties help the optimization engine in determining which executors could be used for this Order.

lifo_groupsArray of strings

Orders are handled last-in, first-out (LIFO) within an optimization. Specifying LIFO-groups will limit this behaviour to only those orders within the same LIFO group.

An order can be a part of multiple LIFO groups, which will result in the LIFO-constraint being applied within each LIFO group it is a part of.

Example: ["lifo_group"]
outsourcing_costnumber(double)

A fictional cost for not planning this order in an optimization. This allows the optimization engine to weigh the costs of executing the order versus outsourcing it to a (potentially fictitious) third party.

Example: 0
custom_dataobject(CustomData)

Custom data allows you te enrich an Order with relevant information for the planner that is not part of the Order Book domain. Custom data properties will be available on the distinct activities (Pickup and/or Delivery) of this Order in the planning context. This allows you to define a property once and have it available on both parts of a PickupDelivery Order.

When a custom data key is duplicated on the activity-level, it will override the value defined on the Order level.

plan_groupstring

The plan group this Order belongs to. Plan groups signify the group of orders that are supposed to be planned together.

Example: "a plan group"
clientstring

An optional reference, by business_id, to a Company that is known in Order Book. Conditionals can target Orders
with a certain Company as its client, thus providing the planner a way for applying business rules to all Orders for certain customers.

Example: "companyId"
deliveryobject(TransportInformation)required

Properties specific to the activity that needs to be executed for fulfilling this order. In case of a PickupDelivery Order, these are two separate activities with their own settings.

site_locationobject(LocationId)

A known Location in Order Book at which this activity occurs. This allows reusing the information present on the Location, such as opening hours, addresses requirements... Using a site_location also allows you to target sets of Orders based on a shared Location reference in a Conditional. Combining the Order properties with those of the linked Location can be fine-tuned using the combination strategies on relevant properties.

Mutually exclusive with visit_location.

visit_locationobject(VisitLocation)

An ad-hoc address at which this Order needs to be executed. When using a visit_location either address information should be present, or otherwise a geo point. When no geo_point is provided the address will be resolved by our geocoding service. The resolved information is read only (ie: only available in a response).

Mutually exclusive with site_location.

stop_timeobject(OrderStopTime)

The time that needs to be taken into account for stopping at the Order's location.

service_timestring(ServiceTime)

The duration required for executing this activity in the order.

Needs to be an ISO-formatted Duration, see wikipedia ISO-8601 and RFC-3339

sequenceinteger(int32)

The sequence of this activity of the Order within a Route.

Note: The sequence is applied to a route, not to trips within a route.

Example: 1
time_frameobject(TimeFrame)required

Supports two ways to specify when an order can be delivered:

  • windowed intervals are used in conjunction with a (site) Location's (planning) time windows or Conditionals. The windowed intervals will be limited to the smallest common intersection between all applicable time windows from these.
  • absolute intervals are absolute date times that will be used to plan the order.

Using both windowed and absolute intervals in conjunction can solve many complicated cases, especially when taking the flexibility of Conditionals into account.

At least one timerange is required, either absolute or windowed.

absoluteArray of objects(AbsoluteTimeFrame)

A set of date-time intervals within which this activity of the Order can be executed.

Absolute timeframes will always be retained on the Order after consolidation.

windowedArray of objects(WindowedTimeFrame)

A set of date-time intervals within which this activity of the Order can be executed. These intervals will be intersected with the (planning) opening hours of a linked (site) location and/or timewindows defined on applicable Conditionals.

colorstring

This property can be used to differentiate between orders visually. The orders within a planning will be shown in this color.

The color can be provided both as a CSS color name or using a hexadecimal color code (eg: #123DEF).

Example: "red"
labelsArray of strings

Labels can be used for identifying sets of Orders. When starting an optimization, labels can be used for filtering the Order space and limiting the optimization to specific subsets.

Labels can also be used as filters in select Order Book features or Constraint Management.

Example: ["labelA"]
custom_dataobject(CustomData)

Custom data allows you te enrich an Order with relevant information for the planner that is not part of the Order Book domain. Custom data properties defined on this activity of an Order will be available in the planning context.

Keys defined on this level will override any custom data that is defined on other entities or properties.

Response
application/json
{ "order": { "business_id": "orderA", "order_category": "orderCategoryA", "description": "a description", "capacities": [], "mandatory": true, "requirements": {}, "lifo_groups": [], "outsourcing_cost": 0, "custom_data": {}, "plan_group": "a plan group", "client": "companyId" }, "delivery": { "site_location": {}, "visit_location": {}, "stop_time": {}, "service_time": "PT5M", "sequence": 1, "time_frame": {}, "color": "red", "labels": [], "custom_data": {} } }

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

Partial Routes [EXPERIMENTAL]

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

Operations