OTM (v5)

Download OpenAPI specification:Download

Open Trip Model

Why OTM?

In this day and age more and more information about logistics and traffic is shared over the Internet between various parties. To make this communication easier the Open Trip Model specification was created. It is a lightweight data model used to exchange real-time logistic trip data on the web, and to make it easier for shippers, carriers, software vendors, OEMs, and truck manufacturers to create new multi-brand applications and services.

To learn more about the what, the why and the how see the developer portal.

Changelog

Found any bugs on this page? Or have any feature requests for OTM? Create a new ticket on the OTM5 change requests Github page

Version 5.6 (released on 2023-11-17)

  • Add loading and unloading consignment in and from transport equipment. See 63.
  • Add enforceability of a constraint. See 75.
  • Add recurring date times & durations on actions & events. See 75.
  • Add sub-locations as optional field on a location. See 77.
  • Add owner as a new type of actor role. See 78.
  • Add routeEntityConstraint and deprecate routeConstraint. See 80.

Version 5.5 (released on 2023-02-07)

  • Explain when to use Consignment vs Goods constraints. See 42.
  • Make fuel on vehicle an enum instead of a free string. See 51.
  • Add emissionStandardConstraint as a possible constraint. See 52.
  • Add transportOrder as a field on Consignment to enable the two-way relationship. See 59.
  • Add eori as a possible contact detail option. See 60.
  • Add valueBoundConstraint as a possible constraint. See 61.
  • Add refuel as a possible action. See 62.
  • Add accessConstraint as possible constraint. See 69.

Version 5.4 (released on 2022-05-09)

  • _Add a TransportEquipmentConstraint. See 46.
  • _Add averageFuelConsumption to vehicle. See 48.
  • _Add fuel consumption and emission events. See 49.
  • _Add contextEvents on entities. See 49.
  • _Add sequenceNr to all action types. See 50.
  • _Add cancelled on action results and receiverAbsent as 'reason' type. See 53.
  • _Add actors to all event types. See 55.
  • _Add description to all constraint types. See 56.

Version 5.3 (released on 2021-12-16)

  • Support 204 (No Content) for delete requests. See 23.
  • Add classification lines to goods. See 26.
  • Add a result to actions. See 30.
  • Extend ADR with points and transport category. See 31.
  • Support relatedConsignments in consignments. See 32.
  • Support UNCode and GLN in locations. See 36.
  • Support temperatureConstraint as a possible constraint type. See 37.
  • Add some references to existing code lists. See 27.
    • Using ISO country codes in the country field in addresses.
    • Using ISO currency codes in 'value-with-unit' fields.
    • Using the metric system as recommend and default system for dealing with mass, velocity, weight and sizes.
    • Using the package material codes from the GS1 standard.

Version 5.2 (released on 2021-09-09)

  • _Add transportEquipmentSubType for example to indicate what type of pallets you use. See 19.
  • _Add timeWindowConstraint to replace startDateTimeConstraint and endDateTimeConstraint. See 6.
  • _Add operationalBase as a location type. See 22.
  • _Add more actor role types. See 20.
  • _Add new break and wait actions. See 17.
  • _Allow for server side UUID generation. See 16.

Version 5.1 (released on 2021-06-01)

  • Add an optional emission to Vehicle. See 13.
  • Add an optional transportMode to Trip and Move. See 12.
  • Add optional grossWeight to Goods. See 11.
  • AddmobilePhone as contact detail option. See 5.
  • Add an optional lastModified field to each entity. See 2.
  • Add an optional language to contact details. See 9.
  • Add a new entity Document to deal with information about files that can be shared. See 7.
  • Add new statuses to Trip and Consignment. See 4.
  • Add an optional sensors association to vehicle. See 2.

Version 5.0 (only documentation changes)

  • Add documentation about validation endpoints.
  • Add reference to the otm5-change-requests github.
  • Fix the broken checkbox for actions when choosing the Stop action.
  • Document the license plate on a TransportEquipment (i.e. a trailer).

Vehicle

A Vehicle is a means to transport consignments from one location to potentially multiple other locations. There are various types of vehicles, each with their own unique properties like size, dimensions, fuel type and means of tranport (by air, on land, over sea).

Get a specific Vehicle by its UUID

SecurityBearer token
Request
path Parameters
UUID
required
string <uuid>

The unique UUID of this Vehicle

Responses
200

Returned the entity with the provided UUID

400

Client error

404
500

Server error

get/api/v5/vehicles/{UUID}
Response samples
application/json
{
  • "id": "b9bb914d-845e-46f2-91ff-31fa4bac2fbe",
  • "name": "Bob's Boxtruck",
  • "vehicleType": "boxtruck",
  • "fuel": "electricity",
  • "loadCapacities": [
    ],
  • "length": {
    },
  • "height": {
    },
  • "width": {
    },
  • "licensePlate": "AB-12-CD",
  • "emptyWeight": {
    }
}

Deletes a Vehicle

SecurityBearer token
Request
path Parameters
UUID
required
string <uuid>

The unique UUID of the Vehicle to be deleted

Responses
204

Deleted vehicle with the provided UUID

400

Client error

500

Server error

delete/api/v5/vehicles/{UUID}
Response samples
application/json
[
  • {
    }
]

Adds a new Vehicle

SecurityBearer token
Request
Request Body schema: application/json
id
string

Uniquely identifies this entity. A URI can be assigned by the client to indicate where more information can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not required to send it in the request. One can be generated for you by the server.

name
string

Name of the entity. For display purposes and search only.

creationDate
string

The creation date of this entity.

lastModified
string

The last modified date of this entity. If none is given the creation date is used instead.

Array of any (events)

The context events provides some optional information about the events that can provide additional information on the current state of this entity.

For example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear what caused this ETA to be updated, we can include some information about what caused this ETA update by including an event as context. If your ETA update was caused by a location update, this event can be included as context. If the ETA was caused by a traffic accident on the route of the vehicle, you can include that event in the context.

externalAttributes
object
vehicleType
string

The type of vehicle

fuel
string

The type of fuel the vehicle runs on. For vehicle without an engine of their own, such as a trailer, you may choose not-applicable. For trailers with cooling capabilities, choose the fuel type of the cooling engine.

Enum: "petrol" "diesel" "electricity" "hydrogen" "lng" "cng" "adBlue" "other"
otherFuelType
string

Type of fuel, only to be used when the fuel field is set to other.

object

The average fuel consumption for this vehicle. Usually measured in distance per 100l

emissionStandard
string

European emission standards are vehicle emission standards for exhaust emissions of new vehicles sold in the European Union and EEA member states. The standards are defined in a series of European Union directives staging the progressive introduction of increasingly stringent standards. See also European emission standards - Wikipedia.

Enum: "euro0" "euro1" "euro2" "euro3" "euro4" "euro5" "euro6"
maxLinks
integer <int32>

Maximum number of links to other Vehicle s. Typical values are 0, 1 or 2.

Array of objects

The load capacities of the Vehicle. This can be an array of values, for several reasons:

  • The Vehicle might be split up in multiple compartments.
  • You might want to express the load capacities in different quantities. E.g. in square meters or litres as well as in number of pallets.
object

The length of the Vehicle.

object

The height of the Vehicle.

object

The width of the Vehicle.

licensePlate
string

The license plate of the vehicle.

object

The weight of the Vehicle when empty.

Array of any

There are multiple roles in which actors can be associated with a vehicle, such as the owner or the driver of the vehicle.

Array of any

Vehicles might have some sensors that are permanently attached, these can be described using the sensors field. If one works with detachable sensors the recommend approach is to use associationCreated and associationRemoved events instead.

Array of any (associations-actions)

The actions that are involved for the vehicle (for a particular time window)

Responses
200

The same entity

400

Client error

500

Server error

put/api/v5/vehicles
Request samples
application/json
{
  • "id": "b9bb914d-845e-46f2-91ff-31fa4bac2fbe",
  • "name": "Bob's Boxtruck",
  • "vehicleType": "boxtruck",
  • "fuel": "electricity",
  • "loadCapacities": [
    ],
  • "length": {
    },
  • "height": {
    },
  • "width": {
    },
  • "licensePlate": "AB-12-CD",
  • "emptyWeight": {
    }
}
Response samples
application/json
{
  • "id": "b9bb914d-845e-46f2-91ff-31fa4bac2fbe",
  • "name": "Bob's Boxtruck",
  • "vehicleType": "boxtruck",
  • "fuel": "electricity",
  • "loadCapacities": [
    ],
  • "length": {
    },
  • "height": {
    },
  • "width": {
    },
  • "licensePlate": "AB-12-CD",
  • "emptyWeight": {
    }
}

Route

A route models the path going from one location to at least one other location.

Get a specific Route by its UUID

SecurityBearer token
Request
path Parameters
UUID
required
string <uuid>

The unique UUID of this Route

Responses
200

Returned the entity with the provided UUID

400

Client error

404
500

Server error

get/api/v5/routes/{UUID}
Response samples
application/json
{
  • "id": "beb9a25f-3f64-42ae-b1c6-e89cd450f66b",
  • "name": "An example route using coordinates to indicate how to drive.",
  • "geoReferences": {
    }
}

Deletes a Route

SecurityBearer token
Request
path Parameters
UUID
required
string <uuid>

The unique UUID of the Route to be deleted

Responses
204

Deleted route with the provided UUID

400

Client error

500

Server error

delete/api/v5/routes/{UUID}
Response samples
application/json
[
  • {
    }
]

Adds a new Route

SecurityBearer token
Request
Request Body schema: application/json
id
string

Uniquely identifies this entity. A URI can be assigned by the client to indicate where more information can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not required to send it in the request. One can be generated for you by the server.

name
string

Name of the entity. For display purposes and search only.

creationDate
string

The creation date of this entity.

lastModified
string

The last modified date of this entity. If none is given the creation date is used instead.

Array of any (events)

The context events provides some optional information about the events that can provide additional information on the current state of this entity.

For example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear what caused this ETA to be updated, we can include some information about what caused this ETA update by including an event as context. If your ETA update was caused by a location update, this event can be included as context. If the ETA was caused by a traffic accident on the route of the vehicle, you can include that event in the context.

externalAttributes
object

External attributes are a simple way to add information in an OpenTripModel message that could not fit into one of the OTM fields otherwise. The externalAttributes member is meant for additional meta data and/or additional ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as it was intended.

required
any

Geographic representation of this route.

Array of any

Actors associated with this route, for instance the Company that requires this route as a Last-Mile guidance.

Array of any (associations-actions)

All the actions that need to be executed on this route.

any

Constraints of using this route, for instance it might only be used by vehicles with below a certain weight.

Responses
200

The same entity

400

Client error

500

Server error

put/api/v5/routes
Request samples
application/json
{
  • "id": "beb9a25f-3f64-42ae-b1c6-e89cd450f66b",
  • "name": "An example route using coordinates to indicate how to drive.",
  • "geoReferences": {
    }
}
Response samples
application/json
{
  • "id": "beb9a25f-3f64-42ae-b1c6-e89cd450f66b",
  • "name": "An example route using coordinates to indicate how to drive.",
  • "geoReferences": {
    }
}

Sensor

A sensor is a device that is able to measure a quantity in a certain unit, such as measuring the speed in km/h.

Get a specific Sensor by its UUID

SecurityBearer token
Request
path Parameters
UUID
required
string <uuid>

The unique UUID of this Sensor

Responses
200

Returned the entity with the provided UUID

400

Client error

404
500

Server error

get/api/v5/sensors/{UUID}
Response samples
application/json
{
  • "id": "6666f00c-1332-472c-aff9-bc11b3d53296",
  • "name": "Temperature sensor in trailer x",
  • "placement": "Compartment 1",
  • "sensorType": "accelerometer",
  • "actors": [
    ]
}

Deletes a Sensor

SecurityBearer token
Request
path Parameters
UUID
required
string <uuid>

The unique UUID of the Sensor to be deleted

Responses
204

Deleted sensor with the provided UUID

400

Client error

500

Server error

delete/api/v5/sensors/{UUID}
Response samples
application/json
[
  • {
    }
]

Adds a new Sensor

SecurityBearer token
Request
Request Body schema: application/json
id
string

Uniquely identifies this entity. A URI can be assigned by the client to indicate where more information can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not required to send it in the request. One can be generated for you by the server.

name
string

Name of the entity. For display purposes and search only.

creationDate
string

The creation date of this entity.

lastModified
string

The last modified date of this entity. If none is given the creation date is used instead.

Array of any (events)

The context events provides some optional information about the events that can provide additional information on the current state of this entity.

For example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear what caused this ETA to be updated, we can include some information about what caused this ETA update by including an event as context. If your ETA update was caused by a location update, this event can be included as context. If the ETA was caused by a traffic accident on the route of the vehicle, you can include that event in the context.

externalAttributes
object
placement
string

Sometimes more than one sensor can be associated with a single entity. This is the case e.g. in cooled trailers that are divided into compartments with different temperatures, where each compartment has its own sensor. The placement member can be used to identify where a sensor is placed. Parties using OpenTripModel to exchange sensor data may wish to agree on a standardized naming, but this is too specific to describe in the standard.

sensorType
string

The type of sensor.

Array of any

The actors associated with this sensor, for instance the owners, the producers or the users of this sensor.

any

In the context of a Sensor, only sensorValueConstraints really make sense. You can use such a constraint to model a sensor of which the measured value must be within certain bounds at all times.

ℹ Note that constraints can be nested and combined using the andConstraint, orConstraint and notConstraint.

Responses
200

The same entity

400

Client error

500

Server error

put/api/v5/sensors
Request samples
application/json
{
  • "id": "6666f00c-1332-472c-aff9-bc11b3d53296",
  • "name": "Temperature sensor in trailer x",
  • "placement": "Compartment 1",
  • "sensorType": "accelerometer",
  • "actors": [
    ]
}
Response samples
application/json
{
  • "id": "6666f00c-1332-472c-aff9-bc11b3d53296",
  • "name": "Temperature sensor in trailer x",
  • "placement": "Compartment 1",
  • "sensorType": "accelerometer",
  • "actors": [
    ]
}

Location

Object describing a geographic location. A location can either be a point or an area.

Get a specific Location by its UUID

SecurityBearer token
Request
path Parameters
UUID
required
string <uuid>

The unique UUID of this Location

Responses
200

Returned the entity with the provided UUID

400

Client error

404
500

Server error

get/api/v5/locations/{UUID}
Response samples
application/json
{
  • "id": "11c11d75-e114-4b5f-9751-b3a4afa23ecf",
  • "name": "Main warehouse",
  • "geoReference": {
    },
  • "type": "warehouse",
  • "administrativeReference": {
    },
  • "contactDetails": [
    ],
  • "remark": "The cafe around the corner has the best coffee in town."
}

Deletes a Location

SecurityBearer token
Request
path Parameters
UUID
required
string <uuid>

The unique UUID of the Location to be deleted

Responses
204

Deleted location with the provided UUID

400

Client error

500

Server error

delete/api/v5/locations/{UUID}
Response samples
application/json
[
  • {
    }
]

Adds a new Location

SecurityBearer token
Request
Request Body schema: application/json
id
string

Uniquely identifies this entity. A URI can be assigned by the client to indicate where more information can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not required to send it in the request. One can be generated for you by the server.

name
string

Name of the entity. For display purposes and search only.

creationDate
string

The creation date of this entity.

lastModified
string

The last modified date of this entity. If none is given the creation date is used instead.

Array of any (events)

The context events provides some optional information about the events that can provide additional information on the current state of this entity.

For example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear what caused this ETA to be updated, we can include some information about what caused this ETA update by including an event as context. If your ETA update was caused by a location update, this event can be included as context. If the ETA was caused by a traffic accident on the route of the vehicle, you can include that event in the context.

required
any

Describes a geographic reference, this is the primary way to link a Location entity to a physical, geographic location.

externalAttributes
object
unCode
string

the United Nations Code for Trade and Transport Locations, is a geographic coding scheme developed and maintained by United Nations Economic Commission for Europe (UNECE) to uniquely identify locations. See this Wikipedia page.

gln
string

The Global Location Number (GLN) is part of the GS1 systems of standards to uniquely identify a location. See also this Wikipedia page

type
string

The type of location.

Enum: "warehouse" "store" "environmentalZone" "restrictedArea" "customer" "operationalBase"
object

Address information that is used as an administrative reference. For example: when the actual load location is different from the officially registered location, this holds the latter

Array of any

Contact details for this Location.

remark
string

Remark about the location. Please don't misuse this field for external references, use the externalAttributes field instead.

Array of any

The locations that are can be identified on their own, but are also part of this location. For example a dock at a large distribution area. Sub-locations can also be seen as 'points of interest' on a larger location.

Array of any

Locations can be associated with actors in multiple ways, though the most common one is the owner of the location, either a person or a legal entity.

Array of any (associations-actions)

Multiple actions can be associated with a location, such as a Last-Mile guidance that should be followed to reach that location.

any

In the context of a Location, access to the location is only allowed if the given constraint applies.

ℹ Note that constraints can be nested and combined using the andConstraint, orConstraint and notConstraint.

Responses
200

The same entity

400

Client error

500

Server error

put/api/v5/locations
Request samples
application/json
{
  • "id": "11c11d75-e114-4b5f-9751-b3a4afa23ecf",
  • "name": "Main warehouse",
  • "geoReference": {
    },
  • "type": "warehouse",
  • "administrativeReference": {
    },
  • "contactDetails": [
    ],
  • "remark": "The cafe around the corner has the best coffee in town."
}
Response samples
application/json
{
  • "id": "11c11d75-e114-4b5f-9751-b3a4afa23ecf",
  • "name": "Main warehouse",
  • "geoReference": {
    },
  • "type": "warehouse",
  • "administrativeReference": {
    },
  • "contactDetails": [
    ],
  • "remark": "The cafe around the corner has the best coffee in town."
}

Actor

An Actor models a legal entity. A legal entity is an individual, company, or organization that has legal rights and obligations. The use of Actors is optional, and is not necessary to use OpenTripModel. Actors can be used e.g. to group all locations that belong to an organisation, or to address an OpenTripModel message to a specific person or organisation.

Get a specific Actor by its UUID

SecurityBearer token
Request
path Parameters
UUID
required
string <uuid>

The unique UUID of this Actor

Responses
200

Returned the entity with the provided UUID

400

Client error

404
500

Server error

get/api/v5/actors/{UUID}
Response samples
application/json
{
  • "id": "45db6ed0-28a7-4e4a-baba-3d5f8d171103",
  • "name": "Logistics manager",
  • "contactDetails": [
    ]
}

Deletes a Actor

SecurityBearer token
Request
path Parameters
UUID
required
string <uuid>

The unique UUID of the Actor to be deleted

Responses
204

Deleted actor with the provided UUID

400

Client error

500

Server error

delete/api/v5/actors/{UUID}
Response samples
application/json
[
  • {
    }
]

Adds a new Actor

SecurityBearer token
Request
Request Body schema: application/json
id
string

Uniquely identifies this entity. A URI can be assigned by the client to indicate where more information can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not required to send it in the request. One can be generated for you by the server.

name
string

Name of the entity. For display purposes and search only.

creationDate
string

The creation date of this entity.

lastModified
string

The last modified date of this entity. If none is given the creation date is used instead.

Array of any (events)

The context events provides some optional information about the events that can provide additional information on the current state of this entity.

For example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear what caused this ETA to be updated, we can include some information about what caused this ETA update by including an event as context. If your ETA update was caused by a location update, this event can be included as context. If the ETA was caused by a traffic accident on the route of the vehicle, you can include that event in the context.

externalAttributes
object
Array of any

Contact details for this Actor.

Array of any

Locations for this Actor.

Responses
200

The same entity

400

Client error

500

Server error

put/api/v5/actors
Request samples
application/json
{
  • "id": "45db6ed0-28a7-4e4a-baba-3d5f8d171103",
  • "name": "Logistics manager",
  • "contactDetails": [
    ]
}
Response samples
application/json
{
  • "id": "45db6ed0-28a7-4e4a-baba-3d5f8d171103",
  • "name": "Logistics manager",
  • "contactDetails": [
    ]
}

Consignment

A consignment is a description of an identifiable collection of goods items to be transported between the consignor and the consignee. This information may be defined within a transport contract.

Get a specific Consignment by its UUID

SecurityBearer token
Request
path Parameters
UUID
required
string <uuid>

The unique UUID of this Consignment

Responses
200

Returned the entity with the provided UUID

400

Client error

404
500

Server error

get/api/v5/consignments/{UUID}
Response samples
application/json
{
  • "id": "string",
  • "name": "string",
  • "creationDate": "string",
  • "lastModified": "string",
  • "contextEvents": [
    ],
  • "externalAttributes": {
    },
  • "description": "string",
  • "status": "draft",
  • "type": "string",
  • "goods": [
    ],
  • "transportOrder": {
    },
  • "documents": [
    ],
  • "remark": "string",
  • "actors": [
    ],
  • "actions": [
    ],
  • "constraint": {
    },
  • "relatedConsignments": [
    ]
}

Deletes a Consignment

SecurityBearer token
Request
path Parameters
UUID
required
string <uuid>

The unique UUID of the Consignment to be deleted

Responses
204

Deleted consignment with the provided UUID

400

Client error

500

Server error

delete/api/v5/consignments/{UUID}
Response samples
application/json
[
  • {
    }
]

Adds a new Consignment

SecurityBearer token
Request
Request Body schema: application/json
id
string

Uniquely identifies this entity. A URI can be assigned by the client to indicate where more information can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not required to send it in the request. One can be generated for you by the server.

name
string

Name of the entity. For display purposes and search only.

creationDate
string

The creation date of this entity.

lastModified
string

The last modified date of this entity. If none is given the creation date is used instead.

Array of any (events)

The context events provides some optional information about the events that can provide additional information on the current state of this entity.

For example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear what caused this ETA to be updated, we can include some information about what caused this ETA update by including an event as context. If your ETA update was caused by a location update, this event can be included as context. If the ETA was caused by a traffic accident on the route of the vehicle, you can include that event in the context.

externalAttributes
object
description
string

General description of consignment in Free text. e.g 20 europallets fruit. Meant for human inspection, not for automating processes.

status
string

Whether this consignment is a draft, requested, confirmed, in transit, completed or cancelled. The values accepted (replaced by confirmed) and modified (replaced the lastModified field on every entity) are deprecated since OTM5.1, but will be supported for the whole OTM5.X line.

Enum: "draft" "requested" "confirmed" "inTransit" "completed" "cancelled" "accepted" "modified"
type
string

Free text to describe type of consignment. Usually used to indicate the property types of the products being transported (e.g. frozen, fragile, etc.).

Array of any

The various goods that need to be transported, together they are part of this consignment.

any

The transport order this consignment belongs to.

Array of any

Documents that are relevant for this consignment. Such as an official agreement between consignee and consignor.

remark
string

Remark concerning the complete consignment, to be printed on the transport document.

Array of any

The actors associated with this consignment, for instance the shipper and carrier. One should inline the actors only on the top-level entity (such as the transportOrder or trip)

Array of any (associations-actions)

General description of actions related to the consignment f.e. loading, unloading, hand over, drop of.

any

Constraints this consignment has to abide to, such special equipment (tail lift, truck mounted forklift), special vehicle, special instructions related to consignor and consignee. Note that you can put the constraints on the individual goods. However using constraints on the consignment is simpler and therefore recommended when possible.

Array of any

Consignments that have replaced the current consignment. Because of various reasons a consignment can be cancelled and replaced by one or more other consignments. An example is that the consignment is too large to be transported as a single 'transportable unit'. You can use the relation field in the association to indicate the type of relationship.

Responses
200

The same entity

400

Client error

500

Server error

put/api/v5/consignments
Request samples
application/json
{
  • "id": "string",
  • "name": "string",
  • "creationDate": "string",
  • "lastModified": "string",
  • "contextEvents": [
    ],
  • "externalAttributes": {
    },
  • "description": "string",
  • "status": "draft",
  • "type": "string",
  • "goods": [
    ],
  • "transportOrder": {
    },
  • "documents": [
    ],
  • "remark": "string",
  • "actors": [
    ],
  • "actions": [
    ],
  • "constraint": {
    },
  • "relatedConsignments": [
    ]
}
Response samples
application/json
{
  • "id": "string",
  • "name": "string",
  • "creationDate": "string",
  • "lastModified": "string",
  • "contextEvents": [
    ],
  • "externalAttributes": {
    },
  • "description": "string",
  • "status": "draft",
  • "type": "string",
  • "goods": [
    ],
  • "transportOrder": {
    },
  • "documents": [
    ],
  • "remark": "string",
  • "actors": [
    ],
  • "actions": [
    ],
  • "constraint": {
    },
  • "relatedConsignments": [
    ]
}

Trip

A Trip is an aggregate entity that combines various entities to model visiting various locations, potentially doing one or multiple actions on each location, such as loading or unloading consignments. It is optionally coupled to a Vehicle that is/was driving this trip.

Get a specific Trip by its UUID

SecurityBearer token
Request
path Parameters
UUID
required
string <uuid>

The unique UUID of this Trip

Responses
200

Returned the entity with the provided UUID

400

Client error

404
500

Server error

get/api/v5/trips/{UUID}
Response samples
application/json
{
  • "id": "50824123-0924-4563-ac1e-ca0e37487823",
  • "name": "Daily supply trip",
  • "status": "inTransit",
  • "transportMode": "road",
  • "vehicle": {
    },
  • "actions": [
    ]
}

Deletes a Trip

SecurityBearer token
Request
path Parameters
UUID
required
string <uuid>

The unique UUID of the Trip to be deleted

Responses
204

Deleted trip with the provided UUID

400

Client error

500

Server error

delete/api/v5/trips/{UUID}
Response samples
application/json
[
  • {
    }
]

Adds a new Trip

SecurityBearer token
Request
Request Body schema: application/json
id
string

Uniquely identifies this entity. A URI can be assigned by the client to indicate where more information can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not required to send it in the request. One can be generated for you by the server.

name
string

Name of the entity. For display purposes and search only.

creationDate
string

The creation date of this entity.

lastModified
string

The last modified date of this entity. If none is given the creation date is used instead.

Array of any (events)

The context events provides some optional information about the events that can provide additional information on the current state of this entity.

For example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear what caused this ETA to be updated, we can include some information about what caused this ETA update by including an event as context. If your ETA update was caused by a location update, this event can be included as context. If the ETA was caused by a traffic accident on the route of the vehicle, you can include that event in the context.

externalAttributes
object
status
string

Whether this trip is a draft, requested, confirmed, in transit, completed or cancelled. The values accepted (replaced by confirmed) and modified (replaced the lastModified field on every entity) are deprecated since OTM5.1, but will be supported for the whole OTM5.X line.

Enum: "draft" "requested" "confirmed" "inTransit" "completed" "cancelled" "accepted" "modified"
transportMode
string

Method of transport used for the carriage of goods on this trip, can either be using a ship (maritime or inland waterway), a truck/car/van/bike/etc. (road), using the train (rail), or using a plane (air). These values are based on the recommendation of UNECE.

Enum: "maritime" "road" "rail" "air" "inlandWaterway"
any

The Vehicle that is driving this trip.

Array of any

The actors associated with this trip, for instance the client or the executing party

Array of any (associations-actions)

All actions that are/were happening on this trip, such as stopping at certain locations and loading and unloading of consignments.

any

Constraints this trip has to abide to, such as the start and end date times in which it has to be completed.

Responses
200

The same entity

400

Client error

500

Server error

put/api/v5/trips
Request samples
application/json
{
  • "id": "50824123-0924-4563-ac1e-ca0e37487823",
  • "name": "Daily supply trip",
  • "status": "inTransit",
  • "transportMode": "road",
  • "vehicle": {
    },
  • "actions": [
    ]
}
Response samples
application/json
{
  • "id": "50824123-0924-4563-ac1e-ca0e37487823",
  • "name": "Daily supply trip",
  • "status": "inTransit",
  • "transportMode": "road",
  • "vehicle": {
    },
  • "actions": [
    ]
}

Event

Events - like actions - model dynamic entities that couple various static entities at a certain moment in time. Events are used for either real-time updates, or updates on earlier provided data. Notice that in both event types these are updates on earlier provided data, whereas actions are usually used together with the entities they dynamically couple.

There are various kinds of events that fall into the two earlier mentioned kinds.

Real-time updates:

  • The LocationUpdateEvent that provides location data received from some GPS.
  • The SensorUpdateEvent that provides sensor value updates (such as temperature or speed measurements) received from a sensor.
  • The StartMovingEvent, StopMovingEvent, StartEngineEvent, StopEngineEvent that indicate events provided by Fleet Management Systems.

Both real-time and projected/realized events

  • The EmissionEvent that contains information about how much emission has been produced during a move / on a trip / per consignment. Can be provided as an actual value, projected based on some calculation, or realized as measured by some sensor.
  • The FuelConsumedEvent that contains information about how much fuel was consumed during a move / on a trip / per consignment. Can be provided as an actual value, projected based on some calculation, or realized as measured by some sensor.

Updates on earlier provided data:

  • The UpdateEvent that is used to update an earlier provided entity with new information. Note that only the changed data has to be provided.
  • The AssociationCreatedEvent and AssociationRemovedEvent that allow for static entities to be coupled after the fact. Such as coupling a Vehicle to a Trip.

Get a specific Event by its UUID

SecurityBearer token
Request
path Parameters
UUID
required
string <uuid>

The unique UUID of this Event

Responses
200

Returned the entity with the provided UUID

400

Client error

404
500

Server error

get/api/v5/events/{UUID}
Response samples
application/json
{
  • "id": "fc6b2b0c-2f0a-40c6-a580-212c5c7984c8",
  • "name": "couple vehicle to trip",
  • "lifecycle": "planned",
  • "entity1": {
    },
  • "entity2": {
    },
  • "eventType": "associationCreatedEvent"
}

Deletes a Event

SecurityBearer token
Request
path Parameters
UUID
required
string <uuid>

The unique UUID of the Event to be deleted

Responses
204

Deleted event with the provided UUID

400

Client error

500

Server error

delete/api/v5/events/{UUID}
Response samples
application/json
[
  • {
    }
]

Adds a new Event

SecurityBearer token
Request
Request Body schema: application/json
eventType
required
string
id
string

Uniquely identifies this entity. A URI can be assigned by the client to indicate where more information can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not required to send it in the request. One can be generated for you by the server.

name
string

Name of the entity. For display purposes and search only.

creationDate
string

The creation date of this entity.

lastModified
string

The last modified date of this entity. If none is given the creation date is used instead.

Array of any (events)

The context events provides some optional information about the events that can provide additional information on the current state of this entity.

For example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear what caused this ETA to be updated, we can include some information about what caused this ETA update by including an event as context. If your ETA update was caused by a location update, this event can be included as context. If the ETA was caused by a traffic accident on the route of the vehicle, you can include that event in the context.

externalAttributes
object

External attributes are a simple way to add information in an OpenTripModel message that could not fit into one of the OTM fields otherwise. The externalAttributes member is meant for additional meta data and/or additional ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as it was intended.

lifecycle
string

A lifecycle models when the data in the action is taking place. You can provide the same action in multiple lifecycles to model how it changes over time. For example the planned and realized time of an action taking place can differ because of unforseen circumstances (such as traffic jams).

Enum: "requested" "planned" "projected" "actual" "realized"
required
any

One of the two entities between which an association is created. Note that the order of the entities is unimportant, an association created works both ways.

required
any

One of the two entities between which an association is created. Note that the order of the entities is unimportant, an association created works both ways.

Array of any

The actors that are relevant to this event, such as the carrier or shipper it belongs to.

Responses
200

The same entity

400

Client error

500

Server error

put/api/v5/events
Request samples
application/json
{
  • "id": "fc6b2b0c-2f0a-40c6-a580-212c5c7984c8",
  • "name": "couple vehicle to trip",
  • "lifecycle": "planned",
  • "entity1": {
    },
  • "entity2": {
    },
  • "eventType": "associationCreatedEvent"
}
Response samples
application/json
{
  • "id": "fc6b2b0c-2f0a-40c6-a580-212c5c7984c8",
  • "name": "couple vehicle to trip",
  • "lifecycle": "planned",
  • "entity1": {
    },
  • "entity2": {
    },
  • "eventType": "associationCreatedEvent"
}

Action

Actions are dynamic entities that are able to couple together various static entities at a certain moment in time. For instance a Load action couples together a Consignment and a Vehicle at the moment the Loading happens.

There are various types of Actions:

  • The Stop that models visiting a certain location at a certain time and potentially doing several other actions at that location.
  • The Load action, that models loading in one or multiple Consignments into a vehicle or some sort of container.
  • The Unload action, that models unloading one or multiple Consignments from a vehicle or some other sort of container.
  • The HandOver that indicates transferring a consignment from one Actor to another.
  • The Move that models moving between two or more locations, potentially with detailed route information on how to move between these locations.
  • The AttachTransportEquipment that allows you to attach some equipment to the associated vehicle. Note that you can both load/unload and attach/detach TransportEquipments. For instance loading a container on a ship, or attach a trailer to a truck. So choose the one that is most appropriate.
  • The DetachTransportEquipment that allows you to detach some previously attached equipment from the associated vehicle.
  • The Break action that models a mandatory resting period for the driver of the vehicle. During this period the driver is prohibited from doing any driving activities or other work.
  • The Wait action that models waiting at a particular location during the trip. This can be due to various circumstances such as waiting for the vehicle to be transported by a ferry or train. Or because of waiting at frontiers or docks (e.g. the dock of the loading/unload location is occupied) or traffic prohibitions. The driver is allowed to leave the vehicle during this period. An important aspect distinguishing this from the break action is that waiting times can be shortened because of changing circumstances. For example, if the original waiting time was expected to be 15 minutes because of an occupied dock, but the driver is 10 minutes late, the waiting time can be shortened to 5 minutes until the dock is free.
  • The GenericAction for whenever any of the above actions cannot model the situation appropriately.

Get a specific Action by its UUID

SecurityBearer token
Request
path Parameters
UUID
required
string <uuid>

The unique UUID of this Action

Responses
200

Returned the entity with the provided UUID

400

Client error

404
500

Server error

get/api/v5/actions/{UUID}
Response samples
application/json
{
  • "id": "e81a7aa3-23a6-4089-b916-52b854c7b6f1",
  • "lifecycle": "planned",
  • "remark": "loading a consignment",
  • "consignment": {
    },
  • "startTime": "2021-06-23T14:00:00Z",
  • "endTime": "2021-06-23T14:15:00Z",
  • "constraint": {
    },
  • "actionType": "load"
}

Deletes a Action

SecurityBearer token
Request
path Parameters
UUID
required
string <uuid>

The unique UUID of the Action to be deleted

Responses
204

Deleted action with the provided UUID

400

Client error

500

Server error

delete/api/v5/actions/{UUID}
Response samples
application/json
[
  • {
    }
]

Adds a new Action

SecurityBearer token
Request
Request Body schema: application/json
actionType
required
string
id
string

Uniquely identifies this entity. A URI can be assigned by the client to indicate where more information can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not required to send it in the request. One can be generated for you by the server.

name
string

Name of the entity. For display purposes and search only.

creationDate
string

The creation date of this entity.

lastModified
string

The last modified date of this entity. If none is given the creation date is used instead.

Array of any (events)

The context events provides some optional information about the events that can provide additional information on the current state of this entity.

For example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear what caused this ETA to be updated, we can include some information about what caused this ETA update by including an event as context. If your ETA update was caused by a location update, this event can be included as context. If the ETA was caused by a traffic accident on the route of the vehicle, you can include that event in the context.

externalAttributes
object
lifecycle
string

A lifecycle models when the data in the action is taking place. You can provide the same action in multiple lifecycles to model how it changes over time. For example the planned and realized time of an action taking place can differ because of unforseen circumstances (such as traffic jams).

Enum: "requested" "planned" "projected" "actual" "realized"
object

The result of the action, can only be present in the actual or realized lifecycles. The result has a required status and optional additional info, like a remark and reason (in the case of failure).

remark
string

Free text field for adding an on remark on this action.

sequenceNr
integer <int64>

The sequence number of this action within the entity it is taking place. Can be used to indicate order when no times are present

any

The stop that is associated with this action.

any

The consignment that is the subject of this action.

any

The transport equipment the consignment is loaded in/unloaded from.

Array of any

Documents that are relevant for this action. Such as a proof-of-delivery photo, or scanned CMR.

any

The location at which this action is taking place.

timeFormat
string
Default: "dateTime"
Enum: "dateTime" "recurringDateTime" "duration"
startTime
string

The time at which the actions starts in ISO format.

endTime
string

The time at which the action is completed in ISO format.

recurrence
string <recurrence>

The recurrence of the date time, should only be set when timeFormat is set to recurringDateTime. The recurrence follows the Recurrence Rule specification

duration
string <duration>

The duration of this action/event, should only be set when timeFormat is set to duration. The duration follows the ISO 8601 specification

any

The constraints this action abides to, such as start and end time windows.

Responses
200

The same entity

400

Client error

500

Server error

put/api/v5/actions
Request samples
application/json
{
  • "id": "e81a7aa3-23a6-4089-b916-52b854c7b6f1",
  • "lifecycle": "planned",
  • "remark": "loading a consignment",
  • "consignment": {
    },
  • "startTime": "2021-06-23T14:00:00Z",
  • "endTime": "2021-06-23T14:15:00Z",
  • "constraint": {
    },
  • "actionType": "load"
}
Response samples
application/json
{
  • "id": "e81a7aa3-23a6-4089-b916-52b854c7b6f1",
  • "lifecycle": "planned",
  • "remark": "loading a consignment",
  • "consignment": {
    },
  • "startTime": "2021-06-23T14:00:00Z",
  • "endTime": "2021-06-23T14:15:00Z",
  • "constraint": {
    },
  • "actionType": "load"
}

Goods

Goods are the items to be transported as part of a consignment. Goods can be divided into two sub-types of goods, depending on the use case and the level of detail. Goods either consists of items, describing the actual goods to be transported. Or a transport equipment, which is equipment used to carry the actual goods to be transported. Transport equipment is (usually) a means to an end, not something that needs to be transported on itself, such as pallets.

Note that goods can either be or contain dangerous goods. OTM uses the official specification of ADR to describe in what manner and how dangerous those goods are. The used descriptions in the OTM documentation are extracted from document ADR2021_Vol1e_0.pdf. The official documentation is always leading and should be consulted.

Get a specific Goods by its UUID

SecurityBearer token
Request
path Parameters
UUID
required
string <uuid>

The unique UUID of this Goods

Responses
200

Returned the entity with the provided UUID

400

Client error

404
500

Server error

get/api/v5/goods/{UUID}
Response samples
application/json
{
  • "id": "903807df-ee62-47aa-bf8e-7efd747618ce",
  • "description": "Box of bananas",
  • "remark": "Please deliver in time, we want fresh bananas",
  • "barCode": "CSE370",
  • "productType": "Fruit",
  • "packagingMaterial": "Box",
  • "constraint": {
    },
  • "type": "items"
}

Deletes a Goods

SecurityBearer token
Request
path Parameters
UUID
required
string <uuid>

The unique UUID of the Goods to be deleted

Responses
204

Deleted goods with the provided UUID

400

Client error

500

Server error

delete/api/v5/goods/{UUID}
Response samples
application/json
[
  • {
    }
]

Adds a new Goods

SecurityBearer token
Request
Request Body schema: application/json
type
required
string
id
string

Uniquely identifies this entity. A URI can be assigned by the client to indicate where more information can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not required to send it in the request. One can be generated for you by the server.

name
string

Name of the entity. For display purposes and search only.

creationDate
string

The creation date of this entity.

lastModified
string

The last modified date of this entity. If none is given the creation date is used instead.

Array of any (events)

The context events provides some optional information about the events that can provide additional information on the current state of this entity.

For example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear what caused this ETA to be updated, we can include some information about what caused this ETA update by including an event as context. If your ETA update was caused by a location update, this event can be included as context. If the ETA was caused by a traffic accident on the route of the vehicle, you can include that event in the context.

externalAttributes
object

External attributes are a simple way to add information in an OpenTripModel message that could not fit into one of the OTM fields otherwise. The externalAttributes member is meant for additional meta data and/or additional ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as it was intended.

description
string

A free text description of these goods.

remark
string

Remark belonging to the goods that need to be transported. For example a delivery note.

barCode
string

A barcode present on the (packaging of the) goods that uniquely identifies these goods.

quantity
integer <int32>

A quantity determines how many of a certain good you have. Note that all other measurements are measured for a single product, not for the total of products.

object

The net weight of a 'single' good, the total weight can be calculated by using the quantity and multiplying it with this weight.

object

The gross weight of a 'single' good, the total weight can be calculated by using the quantity and multiplying it with this weight.

object

The width of a 'single' good, the total width can be calculated by using the quantity and multiplying it with this width.

object

The height of a 'single' good, the total height can be calculated by using the quantity and multiplying it with this height.

object

The length of a 'single' good, the total length can be calculated by using the quantity and multiplying it with this length.

object

Information about the potentially dangerous properties of these goods.

productType
string

The product type of goods, for instance bananas.

packagingMaterial
string

Description of the package type. Use as described by the GS1 standard.

Array of objects

Product classification information often required at customs. A single product can contain multiple classification lines. For example whenever the product consists of multiple components that can each be classified. The most important information in the classification lines is often the HS code.

Array of any

All parties associated with these goods, for example the consignor and consignee.

any

The constraints put on these goods, most notably the required temperature range or size of the vehicle. You should only put constraints on the goods themselves when it is important to distinguish goods within one consignment with different requirements. Individual constraints on a goods are powerful, but also complicate the solution. When possible, prefer to put the constraint on the consignment of the goods.

Responses
200

The same entity

400

Client error

500

Server error

put/api/v5/goods
Request samples
application/json
{
  • "id": "903807df-ee62-47aa-bf8e-7efd747618ce",
  • "description": "Box of bananas",
  • "remark": "Please deliver in time, we want fresh bananas",
  • "barCode": "CSE370",
  • "productType": "Fruit",
  • "packagingMaterial": "Box",
  • "constraint": {
    },
  • "type": "items"
}
Response samples
application/json
{
  • "id": "903807df-ee62-47aa-bf8e-7efd747618ce",
  • "description": "Box of bananas",
  • "remark": "Please deliver in time, we want fresh bananas",
  • "barCode": "CSE370",
  • "productType": "Fruit",
  • "packagingMaterial": "Box",
  • "constraint": {
    },
  • "type": "items"
}

TransportOrder

The TransportOrder is the top-level entity to model a group of related consignments that might be transported separately, but need to be administered together. For consistency, even if there is only one consignment, it is still required to use a transport order.

Get a specific TransportOrder by its UUID

SecurityBearer token
Request
path Parameters
UUID
required
string <uuid>

The unique UUID of this TransportOrder

Responses
200

Returned the entity with the provided UUID

400

Client error

404
500

Server error

get/api/v5/transportOrders/{UUID}
Response samples
application/json
{
  • "id": "baa507c2-1d81-4092-a5c2-e80820ee4fd1",
  • "externalAttributes": {
    },
  • "description": "Transport order containing all consignments to be shipped.",
  • "consignments": [
    ]
}

Deletes a TransportOrder

SecurityBearer token
Request
path Parameters
UUID
required
string <uuid>

The unique UUID of the TransportOrder to be deleted

Responses
204

Deleted transportOrder with the provided UUID

400

Client error

500

Server error

delete/api/v5/transportOrders/{UUID}
Response samples
application/json
[
  • {
    }
]

Adds a new TransportOrder

SecurityBearer token
Request
Request Body schema: application/json
id
string

Uniquely identifies this entity. A URI can be assigned by the client to indicate where more information can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not required to send it in the request. One can be generated for you by the server.

name
string

Name of the entity. For display purposes and search only.

creationDate
string

The creation date of this entity.

lastModified
string

The last modified date of this entity. If none is given the creation date is used instead.

Array of any (events)

The context events provides some optional information about the events that can provide additional information on the current state of this entity.

For example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear what caused this ETA to be updated, we can include some information about what caused this ETA update by including an event as context. If your ETA update was caused by a location update, this event can be included as context. If the ETA was caused by a traffic accident on the route of the vehicle, you can include that event in the context.

externalAttributes
object

External attributes are a simple way to add information in an OpenTripModel message that could not fit into one of the OTM fields otherwise. The externalAttributes member is meant for additional meta data and/or additional ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as it was intended.

description
string

A free text description of this transport order, e.g. boxes of fruit ordered by Simacan.

Array of any

All consignments belonging to this transport order.

Array of any

The actors associated with this transport order, for instance the consignor, consignee.

any

Constraints this transport order has to abide to, such as the expected delivery time windows.

Responses
200

The same entity

400

Client error

500

Server error

put/api/v5/transportOrders
Request samples
application/json
{
  • "id": "baa507c2-1d81-4092-a5c2-e80820ee4fd1",
  • "externalAttributes": {
    },
  • "description": "Transport order containing all consignments to be shipped.",
  • "consignments": [
    ]
}
Response samples
application/json
{
  • "id": "baa507c2-1d81-4092-a5c2-e80820ee4fd1",
  • "externalAttributes": {
    },
  • "description": "Transport order containing all consignments to be shipped.",
  • "consignments": [
    ]
}

Document

In many logistic operations documents are an important part of the data flow. Documents can serve multiple purposes, such as proving some package was delivered with help of a photo, or some scanned document that establishes that the transferred goods are accepted on handover. Documents in OTM come in two flavors, either you provide the content of the document directly as a base64 encoded string, or you provide a link to the document where it can be accessed online.

Get a specific Document by its UUID

SecurityBearer token
Request
path Parameters
UUID
required
string <uuid>

The unique UUID of this Document

Responses
200

Returned the entity with the provided UUID

400

Client error

404
500

Server error

get/api/v5/documents/{UUID}
Response samples
application/json
{
  • "id": "cf32da57-5edc-4c46-9a97-58c97ae27cf8",
  • "name": "Photo of the PoD",
  • "content": {},
  • "externalAttributes": {
    },
  • "documentType": "photo",
  • "filename": "my_photo.JPG",
  • "mimeType": "image/jpeg",
  • "description": "Proof that the goods are delivered by providing the photo that captures the moment",
  • "creator": {
    },
  • "owner": {
    }
}

Deletes a Document

SecurityBearer token
Request
path Parameters
UUID
required
string <uuid>

The unique UUID of the Document to be deleted

Responses
204

Deleted document with the provided UUID

400

Client error

500

Server error

delete/api/v5/documents/{UUID}
Response samples
application/json
[
  • {
    }
]

Adds a new Document

SecurityBearer token
Request
Request Body schema: application/json
id
string

Uniquely identifies this entity. A URI can be assigned by the client to indicate where more information can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not required to send it in the request. One can be generated for you by the server.

name
string

Name of the entity. For display purposes and search only.

creationDate
string

The creation date of this entity.

lastModified
string

The last modified date of this entity. If none is given the creation date is used instead.

Array of any (events)

The context events provides some optional information about the events that can provide additional information on the current state of this entity.

For example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear what caused this ETA to be updated, we can include some information about what caused this ETA update by including an event as context. If your ETA update was caused by a location update, this event can be included as context. If the ETA was caused by a traffic accident on the route of the vehicle, you can include that event in the context.

required
any

The content of the document. There are two different options on how the content can be provided. Either through an external link to where the content lives. Or directly as an encoded base64 string.

externalAttributes
object

External attributes are a simple way to add information in an OpenTripModel message that could not fit into one of the OTM fields otherwise. The externalAttributes member is meant for additional meta data and/or additional ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as it was intended.

documentType
string

The type of the document, such as a photo, text document, PDF etc.

filename
string

The name of the file.

mimeType
string

The official MIME type of the file. See Wikepedia for more information.

description
string

The description of the file, for example what purpose it serves.

any

The actor who owns the document. If not provided, the creator will be assumed to be the owner.

any

The actor who owns the document. If not provided, the creator will be assumed to be the owner.

Responses
200

The same entity

400

Client error

500

Server error

put/api/v5/documents
Request samples
application/json
{
  • "id": "cf32da57-5edc-4c46-9a97-58c97ae27cf8",
  • "name": "Photo of the PoD",
  • "content": {},
  • "externalAttributes": {
    },
  • "documentType": "photo",
  • "filename": "my_photo.JPG",
  • "mimeType": "image/jpeg",
  • "description": "Proof that the goods are delivered by providing the photo that captures the moment",
  • "creator": {
    },
  • "owner": {
    }
}
Response samples
application/json
{
  • "id": "cf32da57-5edc-4c46-9a97-58c97ae27cf8",
  • "name": "Photo of the PoD",
  • "content": {},
  • "externalAttributes": {
    },
  • "documentType": "photo",
  • "filename": "my_photo.JPG",
  • "mimeType": "image/jpeg",
  • "description": "Proof that the goods are delivered by providing the photo that captures the moment",
  • "creator": {
    },
  • "owner": {
    }
}

Constraint

Constraints can do different things, depending on the context they're used in:

  • In the context of a Location, access to the location is only allowed if the given constraint applies.
  • In the context of a Trip, constraints can be used to define constraints that have to be met during the trip, e.g. if the temperature in a refrigerated trailer has to stay below a given maximum during the trip.
  • In the context of a Shipment, constraints can be used to e.g. define minimum or maximum temperatures for shipments, or date time constraints for delivery.

Since OTM5.2 the timeWindowConstraint is supported which allows you to give (optionally) both the start and end time of the window between which something needs to occur. This replaces the old style where you had to use an and constraint in combination with the startDateTimeConstraint and endDateTimeConstraint. Since the new solution is shorter and simpler the startDateTimeConstraint and endDateTimeConstraint are deprecated.

Note that constraints can be nested and combined using the andConstraint, orConstraint and notConstraint.

Get a specific Constraint by its UUID

SecurityBearer token
Request
path Parameters
UUID
required
string <uuid>

The unique UUID of this Constraint

Responses
200

Returned the entity with the provided UUID

400

Client error

404
500

Server error

get/api/v5/constraints/{UUID}
Response samples
application/json
{
  • "id": "89a7bb4d-8720-4db9-aef7-4c3309186c3e",
  • "name": "Example combined constraint",
  • "value": {
    }
}

Deletes a Constraint

SecurityBearer token
Request
path Parameters
UUID
required
string <uuid>

The unique UUID of the Constraint to be deleted

Responses
204

Deleted constraint with the provided UUID

400

Client error

500

Server error

delete/api/v5/constraints/{UUID}
Response samples
application/json
[
  • {
    }
]

Adds a new Constraint

SecurityBearer token
Request
Request Body schema: application/json
id
string

Uniquely identifies this entity. A URI can be assigned by the client to indicate where more information can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not required to send it in the request. One can be generated for you by the server.

name
string

Name of the entity. For display purposes and search only.

creationDate
string

The creation date of this entity.

lastModified
string

The last modified date of this entity. If none is given the creation date is used instead.

Array of any (events)

The context events provides some optional information about the events that can provide additional information on the current state of this entity.

For example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear what caused this ETA to be updated, we can include some information about what caused this ETA update by including an event as context. If your ETA update was caused by a location update, this event can be included as context. If the ETA was caused by a traffic accident on the route of the vehicle, you can include that event in the context.

required
any (constraintValue)
enforceability
string
Default: "enforced"

The enforceability of the constraint. Indicates whether or not the constraint is a suggestion/preference or something that is mandatory to adhere to.

Enum: "enforced" "preference"
externalAttributes
object

External attributes are a simple way to add information in an OpenTripModel message that could not fit into one of the OTM fields otherwise. The externalAttributes member is meant for additional meta data and/or additional ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as it was intended.

Responses
200

The same entity

400

Client error

500

Server error

put/api/v5/constraints
Request samples
application/json
{
  • "id": "89a7bb4d-8720-4db9-aef7-4c3309186c3e",
  • "name": "Example combined constraint",
  • "value": {
    }
}
Response samples
application/json
{
  • "id": "89a7bb4d-8720-4db9-aef7-4c3309186c3e",
  • "name": "Example combined constraint",
  • "value": {
    }
}