openapi: 3.0.0 servers: - url: https://{server}/api/public/v4 variables: server: description: the server where an OpenTripModel implementation is hosted default: api.opentripmodel.org info: title: Open Trip Model description: | # Introduction You are viewing the **API Reference Documentation** of OpenTripModel. This reference documentation is targetted at developers that are writing client or server code for an OpenTripModel implementation. For a general introduction to OpenTripModel, please refer to the [main website of OpenTripModel](https://www.opentripmodel.org/). This documentation is generated from the OpenTripModel API specification, the source of which can be found at [OpenTripModels GitHub repository](https://github.com/opentripmodel/opentripmodel). > ## ℹ A word on examples > The example requests that are shown in this documentation are automatically generated. This means the _structure_ of the examples is right, according to the specification, while the _data_ in the examples is not always correct in a given context. E.g. various event types instruct to have certain `involvedObjects` available in the event. The examples do not reflect these requirements, since there is (currently) no way to express these in terms of an OpenAPI specification. # The model OpenTripModel defines entities, displayed yellow in the image. You can click on the boxes in the image to jump to the corresponding section in this API Reference Documentation. For a more conceptual introduction to the entities, please read the [Introducing the model](https://www.opentripmodel.org/docs/the-model) section of the documentation. There's also an [introduction to lifecycles](https://www.opentripmodel.org/docs/lifecycles) available. (Lifecycles are displayed as green boxes in the image.) Apart from these entities, perhaps the most important entity in OpenTripModel is the **[Event](/#tag/Event)**. All dynamic behaviour is modeled as (a series of) event(s). Please refer to the sections [Important Concepts](https://www.opentripmodel.org/docs/concepts) and [Event entity](https://www.opentripmodel.org/docs/event-entity) of the general documentation for an introduction. # Technical notes ## Unique identifiers This section has been moved to the [Implementation guide](https://www.opentripmodel.org/docs/unique-identifiers) on the main OpenTripModel website. ## Time values This section has been moved to the [Implementation guide](https://www.opentripmodel.org/docs/time-and-date-representation) on the main OpenTripModel website. ## Bundles To create multiple entities and events in one request, use a **[Bundle](/#tag/Bundle)** call. This provides transactional guarantees, preventing roll-back scenario's. A typical use case is when the originating system is not event based, and it has to communicate an entire "planning" at once. The benefits of using a `Bundle` are that you can save network traffic and that all entities and events are validated at the same time. ## Changes since 4.2.0-b4 - Change `sizeConstraint` in `SizeConstraint` to camelCase formatted enum, to be more consistent with other enums. - Added the fields `basisType` and `basisReference` to describe the basis of a [`Constraint`](#tag/Constraint). - Added the [`Constraint`](#tag/Constraint)-type `dangerousGoodsConstraint`. - Added additional `Location` types. - Added additional `Vehicle` types. - Added the [`Constraint`](#tag/Constraint)-type `numberOfVehiclesConstraint`. - All enums are now camelCase, for consistency. Some snake_case values were changed in the process. ## Changes since 4.2.0-b3 - Added the `name` field to `Constraint`, `Shipment` and `Route`, so that all Entities use it in the same way. - Added `externalIds` to `Constraint`, so that all Entities use it in the same way. - Updated `trafficWarningEvent` to reflect the fact that it needs at least one Location or Route, it does not require both. - The eventGenerationTime now may be set by the recipient if the sender does not set it. - `Actor` now supports the same contactDetails field `Location` already had. - `Shipment` now has a count field for shipments that are counted in units of packaging. - Inline location in an `Event` is now always optional because it's also possible to use an involvedObject Location. - Removed linkedTrips array from the `Trip` Entity. Trips should be linked using the `linkTripsEvent`. - Removed links array from the `Vehicle` Entity. Vehicles should be linked using the `coupleVehiclesEvent`. ## Changes since 4.2.0-b2 - Added the [`Constraint`](#tag/Constraint)-type `eventOrderConstraint`, to constrain the order of event if there are no timestamps available. - Updated the diagram in the section [The model](#section/The-model) to reflect recent changes. - Added the possibility to add a `constraint` directly to a `Sensor` entity. - Added a `placement` field to the `loadShipmentEvent`. - Numeric values in `valueWithUnit` can now be any numeric type, not just `int32`. - More explicit documentation on event ordering in relation to the `cancelAllEntityEvents` event. ## Changes since 4.2.0-b1 - Added [top level `/events` endpoint]/paths/~1events/get) - Added `involvedObject` query parameter for filtering events - Added `lifecycle` query parameter for filtering events on their lifecycle. This only applies when querying for events via the general `/events` endpoint. - Added overview documentation about [Event endpoints](#event-endpoints) - Added overview documentation about [Involved objects](#involved-objects) - Updated the specification definition to [OpenAPI 3.0.0](https://swagger.io/specification/) ## Changes since 4.1 - Rewrite of the [documentation on `Event`s](#tag/Event). - Added `groupingId` to `Event`s. - Added event types: - `cancelAllEntityEvents`; - `cancelGroupedEvents`; - `dissociateFromActorEvent`. - Fixed inconsistent query parameters for `GET` requests on event-endpoints. - Sensors are now first class citizens in OpenTripModel: - Added the `Sensor` entity and corresponding endpoints - Added `coupleSensorEvent` and `decoupleSensorEvent` - Updated `sensorValueConstraint` - Added `sensorUpdateFrequencyConstraint` ## Changes since 4.0 - The `administrativeReference` member of the `Location` entity is now camelCased, like all other members. In OTM 4.0 it was inconsistently called ~~`administrative-reference`~~. Implementors are advised to be a [Tolerant Reader](https://martinfowler.com/bliki/TolerantReader.html), that is: to accept both forms, but only write the new form. - The `location` member of several types of `Event`s no longer accepts references to pre-defined `Location` entities, now only inline (_ad hoc_) entities are allowed inside an event. If you want to refer to a pre-defined `Location` inside an `Event`, either publish the event on the `Location`'s `event` endpoint or refer to the `Location` in the `involvedObjects` member of the `Event`. - Improved the `constraintReference` documentation and removed the ambiguous `reference` field. - Added the field `eventGenerationTime` to `Event`. This can be useful e.g. for events in the `projected` lifecycle phase, that typically are calculated. - Added speed and heading info to `locationUpdateEvents` for point locations. # Licence Creative Commons License
All OpenTripModel documentation is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. version: "4.2.0-b5" license: name: Creative Commons Attribution-ShareAlike 4.0 International License url: http://creativecommons.org/licenses/by-sa/4.0/ tags: - name: Location description: | Locations are geometric entities which can have either the shape of a point or an area. These points and areas can be used to model delivery zones, store and warehouse coordinates as well as environmental zones within urban areas, areas with access restrictions, etc. - name: Event description: | An event is something occurring at a specific time (whether in the past, present, or past alike) and (optionally) at a specific location. Events are the core of this API. Events link all static objects together. There are several different event types defined in OpenTripModel. The sections below document the available event types. Events are devided into categories: - [Update events](#update-events) - [Warning events](#warning-events) - [Action events](#action-events) - [Time window events](#time-window-events) - [Associative events](#associative-events) - [Meta events](#meta-events) In the tables below, symbols are used to indicate which relations with other entities are possible, given an event type. The choice of symbols is loosely based on the checkbox/radio button convention, as explained in the following table: | Symbol | Meaning | | -----: | ------------------------------------------------------------------------------ | | ● | Object relation required | | ○ | Exactly one of the relations marked with a ○ should be present. | | ■ | At least one of the relations marked with a ■ should be present. | | □ | Optional relation. Zero or more of the relations marked with □ may be present. | ## Event endpoints Since events are related to at least one other entity, events can be accessed both via the related entities as well as via a dedicated `events` endpoint. The following table summarizes all available ways to access events via OpenTripModel endpoints: | # events | access | read/write |   | | ------------- | --------------- | ---------- | -------------------------------------------------------- | | list | directly | read | [**GET** `/events`](#/paths/~1events/get) | | list | directly | write | [use a Bundle](#tag/Bundle) | | list | via entity | read | **GET** `/{entity}/{uuid}/{lifecycle}/events/` | | list | via entity | write | [use a Bundle](#tag/Bundle) | | single | directly | read | [**GET** `/events/{uuid}`](#/paths/~1events~1{uuid}/get) | | single | directly | write | [**PUT** `/events`](#/paths/~1events/put) | | single | via entity | read | N/A | | single | via entity | write | **PUT** `/{entity}/{uuid}/{lifecycle}/events/` | ## Involved objects Each event has a list of `involvedObjects`. Each event should have at least one other entity in the list of `involvedObjects`, since entities only exist in the context of one or more other entities. (Note that events count as entities too, so it _is_ valid to have an event that only has another event as involved object. An example is a `cancelEvent`, that only has the event it cancels as involved object.) Some event types impose additional requirements, such as a higher minimal number of `involvedObjects` or a specific type of entity as involved object. Note that events can be published on the endpoint of an entity, thus creating an involvement implicitly. In other words, when you `PUT` e.g. a `locationUpdateEvent` on the `/vehicles/0a254672-fc1d-4639-899f-15c40cbb7c3f/actual/events` endpoint, the `Vehicle` with UUID `0a254672-fc1d-4639-899f-15c40cbb7c3f` will be an involved object for the `locationUpdateEvent`, even if you don't add the `Vehicle` to the `involvedObjects` array. It is advisable for OTM server implementations to add this `Vehicle` to the `involvedObjects` of the `locationUpdateEvent` as soon as possible, to make sure it is returned whenever the event is retreived, e.g. via the general `/events` endpoint. ## Update events Update events typically send an update to the state of an entity. These kind of events are only sensible in the `actual` and `realized` lifecycle phases. This makes sense, because things like location or sensor updates can't be planned nor projected. Update events typically involve only one entity at a time. _Applicable lifecycle phases for update events:_ | Planned | Projected | Actual | Realized | | :-----: | :-------: | :----: | :------: | |   |   | ○ | ○ | ### locationUpdateEvent Updates the location of a `Vehicle` _Applicable entities for `locationUpdateEvent`:_ | Location | Vehicle | Shipment | Trip | Route | Actor | Constraint | Sensor | Event | | :------: | :-----: | :------: | :---: | :---: | :---: | :--------: | :----: | :---: | | □ | ● |   |  |  |  |   |   |  | The Location is optional because an inline location reference can be used for this event. ### sensorUpdateEvent Event to send an updated value of a sensor of the `Vehicle`. Can be used e.g. to monitor temperature inside a trailer. _Applicable entities for `sensorUpdateEvent`:_ | Location | Vehicle | Shipment | Trip | Route | Actor | Constraint | Sensor | Event | | :------: | :-----: | :------: | :---: | :---: | :---: | :--------: | :----: | :---: | |   |   |   |  |  |  |   | ● |  | ### startEngineEvent, stopEngineEvent The engine of a `Vehicle` is started or stopped. _Applicable entities for `startEngineEvent` and `stopEngineEvent`:_ | Location | Vehicle | Shipment | Trip | Route | Actor | Constraint | Sensor | Event | | :------: | :-----: | :------: | :---: | :---: | :---: | :--------: | :----: | :---: | |   | ● |   |  |  |  |   |   |  | ## Warning events Warning events warn about violations, possible causes for delay or other things that may have impact on an operation and may need some attention. Warning events can exist in all lifecycle phases, since other events might be the cause of a warning. _Applicable lifecycle phases for warning events:_ | Planned | Projected | Actual | Realized | | :-----: | :-------: | :----: | :------: | | ○ | ○ | ○ | ○ | ### restrictionWarningEvent A warning event that may be sent when a restriction is violated. This event can be used for all restrictions that are not modelled as OpenTripModel `Constraints`. For violations of `Constraints`, please use the `constraintViolationEvent` instead. Restriction violations you can model using this event include, but are not limited to: - traffic rule violations - exceeding of load capacity - routing through environmental zones _Applicable entities for `restrictionWarningEvent`:_ | Location | Vehicle | Shipment | Trip | Route | Actor | Constraint | Sensor | Event | | :------: | :-----: | :------: | :---: | :---: | :---: | :--------: | :----: | :---: | | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ### constraintViolationEvent Can be generated if a constraint is violated. This event type is meant for violations of `Constraints` that are modelled as such in OpenTripModel. If there is no `Constraint`, please use the `restrictionWarningEvent` instead. A `constraintViolationEvent` should always have the applicable `Constraint` in the `involvedObjects` member and one or more other entities that are involved in the violation. _Applicable entities for `constraintViolationEvent`:_ | Location | Vehicle | Shipment | Trip | Route | Actor | Constraint | Sensor | Event | | :------: | :-----: | :------: | :---: | :---: | :---: | :--------: | :----: | :---: | | ○ |   | ○ | ○ |  |  | ● | ○ |  | ### trafficWarningEvent A warning event that may be sent to warn about a traffic condition on a `Location` or a `Route`. _Applicable entities for `trafficWarningEvent`:_ | Location | Vehicle | Shipment | Trip | Route | Actor | Constraint | Sensor | Event | | :------: | :-----: | :------: | :---: | :---: | :---: | :--------: | :----: | :---: | | ■ |   |   |  | ■ |  |   |   |  | ## Action events Action events describe actions that take place in an operation. Action events can typically be used in any lifecycle phase. This makes sense, since you can say an action can be planned, projected, actually happening or be realized. Action events typically involve only one entity at a time. _Applicable lifecycle phases for Action events:_ | Planned | Projected | Actual | Realized | | :-----: | :-------: | :----: | :------: | | ○ | ○ | ○ | ○ | ### startMovingEvent, stopMovingEvent Marks the moment a `Vehicle` starts or stops moving after or before standing still for a while. _Applicable entities for `startMovingEvent` and `stopMovingEvent`:_ | Location | Vehicle | Shipment | Trip | Route | Actor | Constraint | Sensor | Event | | :------: | :-----: | :------: | :---: | :---: | :---: | :--------: | :----: | :---: | |   | ● |   |  |  |  |   |   |  | ### startWaitingEvent, stopWaitingEvent Marks the moment a `Vehicle` starts or stops waiting. _Applicable entities for `startWaitingEvent` and `stopWaitingEvent`:_ | Location | Vehicle | Shipment | Trip | Route | Actor | Constraint | Sensor | Event | | :------: | :-----: | :------: | :---: | :---: | :---: | :--------: | :----: | :---: | |   | ● |   |  |  |  |   |   |  | ### startLoadingAndUnloadingEvent, stopLoadingAndUnloadingEvent Marks the start or end of a time period meant for loading and unloading. _Applicable entities for `startLoadingAndUnloadingEvent` and `stopLoadingAndUnloadingEvent`:_ | Location | Vehicle | Shipment | Trip | Route | Actor | Constraint | Sensor | Event | | :------: | :-----: | :------: | :---: | :---: | :---: | :--------: | :----: | :---: | |   | ● |   |  |  |  |   |   |  | ## Time window events Time window events are used to model a time window in a `planned` or `projected` lifecycle phase. The start and end of a time window are modelled as separate events. The following time window events are available: * `pickupTimeWindowStartEvent`: Marks the start of a time window for the pickup of a `Shipment`. * `pickupTimeWindowEndEvent`: Marks the end of a time window for the pickup of a `Shipment`. * `deliveryTimeWindowStartEvent`: Marks the start of a time window for the delivery of a `Shipment`. * `deliveryTimeWindowEndEvent`: Marks the end of a time window for the delivery of a `Shipment`. _Applicable lifecycle phases for time window events:_ | Planned | Projected | Actual | Realized | | :-----: | :-------: | :----: | :------: | | ○ | ○ |   |   | _Applicable entities for `pickupTimeWindowStartEvent`, `pickupTimeWindowEndEvent`, `deliveryTimeWindowStartEvent` and `deliveryTimeWindowEndEvent`:_ | Location | Vehicle | Shipment | Trip | Route | Actor | Constraint | Sensor | Event | | :------: | :-----: | :------: | :---: | :---: | :---: | :--------: | :----: | :---: | |   |   | ● |  |  |  |   |   |  | ## Associative events Associative events are used to create or remove associations between entities. These events can take place in all lifecycle phases. Associative events typically involve two events. _Applicable lifecycle phases for associative events:_ | Planned | Projected | Actual | Realized | | :-----: | :-------: | :----: | :------: | | ○ | ○ | ○ | ○ | ### coupleVehiclesEvent, decoupleVehiclesEvent Marks the moment two `Vehicle`s are coupled or decoupled. Coupling of `Vehicles` can have several meanings in the real world, including, but not limited to: - coupling a trailer to a truck - coupling two or more trailer/truck combinations to form a platoon - coupling a trailer to a ferry _Applicable entities for `coupleVehiclesEvent` and `decoupleVehiclesEvent`:_ | Location | Vehicle | Shipment | Trip | Route | Actor | Constraint | Sensor | Event | | :------: | :-----: | :------: | :---: | :---: | :---: | :--------: | :----: | :---: | |   | ● ● |   |  |  |  |   |   |  | ### assignToTripEvent, deassignFromTripEvent Assigns or deassings a `Vehicle` to/from a `Trip`. _Applicable entities for `assignToTripEvent` and `deassignFromTripEvent`:_ | Location | Vehicle | Shipment | Trip | Route | Actor | Constraint | Sensor | Event | | :------: | :-----: | :------: | :---: | :---: | :---: | :--------: | :----: | :---: | |   | ● |   | ● |  |  |   |   |  | ### assignDriverEvent, deassignDriverEvent (De)assigns an `Actor` as a driver to/from a `Vehicle`. _Applicable entities for `assignDriverEvent` and `deassignDriverEvent`:_ | Location | Vehicle | Shipment | Trip | Route | Actor | Constraint | Sensor | Event | | :------: | :-----: | :------: | :---: | :---: | :---: | :--------: | :----: | :---: | |   | ● |   |  |  | ● |   |   |  | ### associateWithActorEvent, dissociateFromActorEvent Associate an entity with an `Actor` or dissociate an already associated actor and entity. The exact meaning of the association can vary and is defined by the `role` parameter of the association event. Note that OpenTripModel implementations may choose to use `Actor` associations as a source of authorization information. In that case, one can e.g. only query `Shipment`s that are associated with a certain `Actor`. _Applicable entities for `associateWithActorEvent` and `dissociateFromActorEvent`:_ | Location | Vehicle | Shipment | Trip | Route | Actor | Constraint | Sensor | Event | | :------: | :-----: | :------: | :---: | :---: | :---: | :--------: | :----: | :---: | | ○ | ○ | ○ | ○ | ○ | ● | ○ | ○ | ○ | ### Shipment loading and unloading events There are four event types for dealing with shipment loading and unloading. `loadShipmentEvent` and `unloadShipmentEvent` describe the loading and unloading of `Shipment`s to or from a `Vehicle`. `receiveShipmentEvent` and `releaseShipmentEvent` describe the reception or release of a `Shipment` on or from a `Location`. Typically, a `loadShipmentEvent` could be paired to a `releaseShipmentEvent`, occuring at the same time. This would mean that a `Shipment` is loaded into a `Vehicle` and at the same time released by a `Location`. In the same fashion, an `unloadShipmentEvent` could be paired to a `receiveShipmentEvent`. OpenTripModel does not _require_ to model both the loading/unloading and reception/release. It is up to the implementation parties to decide which level of granularity in events is desired for a specific operation. _Applicable entites for loading and unloading events:_ | event type | Location | Vehicle | Shipment | Trip | Route | Actor | Constraint | Sensor | Event | description | ---------------------: | :------: | :-----: | :------: | :---: | :---: | :---: | :--------: | :----: | :---: | ----------- | `loadShipmentEvent` |   | ● | ● |  |  |  |   |   |  | Load a `Shipment` in a `Vehicle` | `unloadShipmentEvent` |   | ● | ● |  |  |  |   |   |  | Unload a `Shipment` from a `Vehicle` | `receiveShipmentEvent` | ● |   | ● |  |  |  |   |   |  | Receive a `Shipment` on a `Location` | `releaseShipmentEvent` | ● |   | ● |  |  |  |   |   |  | Release a `Shipment` from a `Location` ### linkTripsEvent Event to be used to link two `Trip`s together. This can be used e.g. if you want to model a larger `Trip` with multiple "legs". While OpenTripModel does not have a "leg" object, you can model each "leg" as a `Trip` and then link those `Trip`s together. A `linkTripsEvent` should at least link to two trip entities in the `involvedObjects` member; it is also allowed to link more than two trips together in one event. _Applicable entities for `linkTripsEvent`:_ | Location | Vehicle | Shipment | Trip | Route | Actor | Constraint | Sensor | Event | | :------: | :-----: | :------: | :--------: | :---: | :---: | :--------: | :----: | :---: | |   |   |   | ● ● □ ... |  |  |   |   |  | ### Sensor coupling A `Sensor` can be coupled to another entity. It is also possible to decouple `Sensor`s, to facilitate portable sensors that are temporarily used. To couple and decouple sensors, use one of the following event types: - `coupleSensorEvent` - `decoupleSensorEvent` The entity the `Sensor` is coupled to, or decoupled from, should be in the `involvedObjects` list of the event. The meaning of a sensor coupling event might be a bit different in different lifecycle phases: - In the `planned` and `projected` phases, the event should be interpreted as "it is planned (or projected) that this sensor will be coupled to this entity. This might be useful if you want to express a planning in OpenTripModel and you want to explicitely document the action of placing a portable sensor in e.g. a trailer. - In the `actual` lifecycle phase, the event can represent the moment a sensor is installed. But sometimes a sensor is permanently installed, and you just need a way to tell the system that a certain sensor is associated with a certain vehicle or physical location. In any case, a system can use the couple events in the `actual` lifecycle phase to know that update events to the sensor also apply to the associated entity. - In the `realized` lifecycle phase, the couple and decouple events might be important for monitoring and auditing. E.g. once you know a temperature sensor is coupled to a trailer, you can use it to create an audit trail of the temperature inside the trailer during a trip. _Applicable entities for `coupleSensorEvent` and `decoupleSensorEvent`:_ | Location | Vehicle | Shipment | Trip | Route | Actor | Constraint | Sensor | Event | | :------: | :-----: | :------: | :---: | :---: | :---: | :--------: | :----: | :---: | | ○ | ○ | ○ |  |  | ○ |   | ● |  | ## Meta events Meta events are events about events. There are two types of meta events: `cancelEvent` and `ignoreEvent`. As a rule of thumb, a `cancelEvent` is to be used for events that you created yourself and want to cancel (or replace), while an `ignoreEvent` is meant to notify that an event sent by another system or actor is to be ignored. An example of the latter might be an event to ignore a `sensorUpdateEvent`, because the sensor is defective. _Applicable lifecycle phases for meta events:_ | Planned | Projected | Actual | Realized | | :-----: | :-------: | :----: | :------: | | ○ | ○ | ○ | ○ | ### cancelEvent Cancels one or more `Event`s. Since events can only be created and not deleted nor updated, a `cancelEvent` is needed when you need to change or remove an event. To be canceled events should be set as `involvedObjects`. Note that you can only cancel events in your "own" lifecycle phase. You can't cancel a `cancelEvent`. In order to preserve idempotence, it is not valid to reuse the UUID of an event that has been cancelled by a CancelEvent. A new event that replaces a cancelled Event should always get a new UUID. _Applicable entities for `cancelEvent`:_ | Location | Vehicle | Shipment | Trip | Route | Actor | Constraint | Sensor | Event | | :------: | :-----: | :------: | :---: | :---: | :---: | :--------: | :----: | :-------: | |   |   |   |  |  |  |   |   | ● □ ... | ### cancelAllEntityEvents This event can be used to cancel events that have been associated with a given entity. _All_ applicable events that were generated before the time given in the `cancelAllEntityEvents` are cancelled. This might be needed e.g. in cases where a `Trip` with lots of `planned` events is published and the planning is changed. In such a case, it can be more efficient to just cancel all events and start over. You can only cancel events that are in the same lifecycle phase as the `cancelAllEntityEvents` you are sending. If there are any `cancelAllEntityEvents` for the given entity, those will not be cancelled. #### How to determine which events get cancelled: In order to preserve idempotence without making it impossible to insert new events for the given entity, this event follows a specific rule about timing. This rule is based on the different event timing orders as explained in the main OpenTripModel documentation: [Ordering of events](https://www.opentripmodel.org/v4.2.0/docs/ordering-of-events). The main rule is: > **A `cancelAllEntityEvents` event cancels every associated event of the given entity with an `eventGenerationTime` earlier than the `time` given in the `cancelAllEntityEvents` body.** As an example, take the two events given in the [Ordering of events](https://www.opentripmodel.org/v4.2.0/docs/ordering-of-events) page: * A `planned` `stopMovingEvent` with `time` = _2018-09-05T12:00Z_ and `eventGenerationTime` = _2018-08-30T10:15Z_ * A `planned` `startMovingEvent` with `time` = _2018-09-05T13:00Z_ and `eventGenerationTime` = _2018-08-30T09:15Z_ Both events have the same vehicle as an `involvedObject`. * A user inserts a `cancelAllEntityEvents` for this vehicle. This event is inserted in the `planned` lifeCycle because cancel Events can only cancel events in their own lifeCycle. It is given `time` = _2018-08-30T09:45Z_ and `eventGenerationTime` = _2018-08-30T11:48Z_ This `eventGenerationTime` is the time the `cancelAllEntityEvents` object was generated and is not relevant beyond that. In this example, the 'cutoff point' for the `cancelAllEntityEvents` is _2018-08-30T09:45Z_. All events associated with the vehicle with an `eventGenerationTime` earlier than that are cancelled. Events with an `eventGenerationTime` after the cutoff point are not cancelled, so the `stopMovingEvent` stays active. A few edge cases have been identified: * Events with an `eventGenerationTime` exactly _equal_ to the `time` of the `cancelAllEntityEvents` are _not_ cancelled. This makes it more straightforward to use a `cancelAllEntityEvents` as part of a larger update containing new events that should not be cancelled. * A `cancelAllEntityEvents` with a `time` after its own `eventGenerationTime` is invalid and should not be used. * Events without an explicit `eventGenerationTime` cannot be cancelled by a `cancelAllEntityEvents`. Make sure to use the `eventGenerationTime` on all events if you want to make use of the `cancelAllEntityEvents`. Note that if the sender does not set the eventGenerationTime on an event, the recipient may set this field to the time of reception of the event. _Applicable entities for `cancelAllEntityEvents`:_ | Location | Vehicle | Shipment | Trip | Route | Actor | Constraint | Sensor | Event | | :------: | :-----: | :------: | :---: | :---: | :---: | :--------: | :----: | :---: | | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |  | ### cancelGroupedEvents This event can be used to cancel all events that share the same `groupingId`. The grouping IDs to be cancelled must be set in the `cancelledGroupingIds` variable, which can contain an array of grouping IDs. _All_ applicable events that were generated before the time given in the `cancelGroupedEvents` are cancelled. For the `cancelGroupedEvents`, the timing rule works exactly the same as for the `cancelAllEntityEvents`. _Applicable entities for `cancelGroupedEvents`:_ | Location | Vehicle | Shipment | Trip | Route | Actor | Constraint | Sensor | Event | | :------: | :-----: | :------: | :---: | :---: | :---: | :--------: | :----: | :---: | | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |  | ### ignoreEvent Ignore one or more `Event`. To be ignored event(s) should be set as `involvedObject(s)`. Only use `ignoreEvents` to mark events from other systems or actors to be ignored if there is no other way to prevent the events from being sent at all. _Applicable entities for `ignoreEvent`:_ | Location | Vehicle | Shipment | Trip | Route | Actor | Constraint | Sensor | Event | | :------: | :-----: | :------: | :---: | :---: | :---: | :--------: | :----: | :-------: | |   |   |   |  |  |  |   |   | ● □ ... | - name: Trip description: | A `Trip` represents a series of events, which optionally may be linked to a route. - name: Route description: | A `Route` describes how to move through space in between two locations. - name: Vehicle description: | A `Vehicle` is any entity which can move through space in between locations. It can be for instance a truck, a trailer, an airplane, a drone, or even something which has not been invennted yet. - name: Sensor description: | A `Sensor` is an entity which can measure quantities, typically with a certain frequency. Examples are temperature sensors, weight sensors, etc. `Sensor` entities can be coupled to other entities. E.g. to measure the temperature inside a trailer, one could couple a `Sensor` entity representing a temperature sensor to a `Vehicle` entity representing a trailer. - name: Shipment description: | A `Shipment` is one (or more) item(s) being transported between locations. - name: Actor description: | An `Actor` represents organisations or persons that participate in a logistic process in OpenTripModel. - name: Constraint description: | A `Constraint` can be used to model `Locations` with limited access or `Trips` or `Shipments` with conditions that have to stay within a given range. - name: Bundle description: | A `Bundle` creates multiple entities and events in one request. x-tagGroups: - name: Operations per entity tags: - Location - Trip - Route - Vehicle - Shipment - Actor - Constraint - Sensor - name: Event-related operations tags: - Event - name: Bundle operations tags: - Bundle paths: /locations: get: summary: Get a list of Locations description: Get a list of `Locations`, optionally filtered by query parameters. tags: - Location parameters: - $ref: '#/components/parameters/nameParam' - $ref: '#/components/parameters/externalIdSchemaParam' - $ref: '#/components/parameters/externalIdValueParam' - $ref: '#/components/parameters/actorQueryParam' - $ref: '#/components/parameters/roleQueryParam' responses: '200': description: | A list of all defined `Locations`, optionally filtered by query parameters. content: application/json: schema: type: array items: $ref: '#/components/schemas/location' application/xml: schema: type: array items: $ref: '#/components/schemas/location' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' put: summary: Create a new Location description: | Create a `Location` object with the given data. tags: - Location responses: '201': description: | The `Location` object as created. The returned object will contain the UUID that can be used to refer to this object in future calls. content: application/json: schema: $ref: '#/components/schemas/location' application/xml: schema: $ref: '#/components/schemas/location' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '409': $ref: '#/components/responses/conflict' '500': $ref: '#/components/responses/internalServerError' requestBody: $ref: '#/components/requestBodies/location' '/locations/{uuid}': get: summary: Get a specific Location by its UUID description: Retrieves a single `Location` object by its unique identifier (UUID) tags: - Location parameters: - $ref: '#/components/parameters/uuidParam' responses: '200': description: A `Location` object content: application/json: schema: $ref: '#/components/schemas/location' application/xml: schema: $ref: '#/components/schemas/location' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' post: summary: Update a Location description: | Update a `Location` object with the given data. Note that the UUID-part of the `id` in the entity in the body of the `POST`-request should equal the ID part of the endpoint where the entity is posted to, otherwise a `400` (Bad request) error will be returned. tags: - Location parameters: - $ref: '#/components/parameters/uuidParam' responses: '200': description: The `Location` object with updated values. content: application/json: schema: $ref: '#/components/schemas/location' application/xml: schema: $ref: '#/components/schemas/location' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' requestBody: $ref: '#/components/requestBodies/location' '/locations/{uuid}/{lifecycle}/events': get: summary: Get a list of Events for this Location description: Retrieves a list of `Events` for the `Location` with the given UUID tags: - Location parameters: - $ref: '#/components/parameters/lifecycle' - $ref: '#/components/parameters/uuidParam' - $ref: '#/components/parameters/startDateTimeParam' - $ref: '#/components/parameters/endDateTimeParam' - $ref: '#/components/parameters/eventTypeParam' - $ref: '#/components/parameters/groupingIdParam' - $ref: '#/components/parameters/involvedObjectParam' responses: '200': description: A list of `Events` for the given `Location`. content: application/json: schema: type: array items: $ref: '#/components/schemas/event' application/xml: schema: type: array items: $ref: '#/components/schemas/event' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' put: summary: Publish a new Event for the given Location description: Publish a new `Event` for the given `Location` tags: - Location parameters: - $ref: '#/components/parameters/lifecycle' - $ref: '#/components/parameters/uuidParam' responses: '201': description: | The created `Event`. The returned object will contain the generated UUID that can be used to refer to this `Event` in later requests. content: application/json: schema: $ref: '#/components/schemas/event' application/xml: schema: $ref: '#/components/schemas/event' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' requestBody: $ref: '#/components/requestBodies/event' /trips: get: summary: Get a list of Trips description: | Retrieves a list of all `Trips`, optionally filtered by query parameters. tags: - Trip parameters: - $ref: '#/components/parameters/nameParam' - $ref: '#/components/parameters/actorQueryParam' - $ref: '#/components/parameters/externalIdSchemaParam' - $ref: '#/components/parameters/externalIdValueParam' responses: '200': description: 'A list of trips, optionally filtered by query parameters.' content: application/json: schema: type: array items: $ref: '#/components/schemas/trip' application/xml: schema: type: array items: $ref: '#/components/schemas/trip' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' put: summary: Create a new Trip description: Create a `Trip` object with the given data. tags: - Trip responses: '201': description: | The `Trip` object as created. The returned object will contain the UUID that can be used to refer to this object in future calls. content: application/json: schema: $ref: '#/components/schemas/trip' application/xml: schema: $ref: '#/components/schemas/trip' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '409': $ref: '#/components/responses/conflict' '500': $ref: '#/components/responses/internalServerError' requestBody: $ref: '#/components/requestBodies/trip' '/trips/{uuid}': get: summary: Get a specific Trip by its UUID description: Retrieves a `Trip` object by its unique identifier (UUID) tags: - Trip parameters: - $ref: '#/components/parameters/uuidParam' responses: '200': description: A `Trip` object content: application/json: schema: $ref: '#/components/schemas/trip' application/xml: schema: $ref: '#/components/schemas/trip' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' post: summary: Update Trip description: | Update a `Trip` object with the given data. Note that the UUID-part of the `id` in the entity in the body of the `POST`-request should equal the ID part of the endpoint where the entity is posted to, otherwise a `400` (Bad request) error will be returned. tags: - Trip parameters: - $ref: '#/components/parameters/uuidParam' responses: '200': description: The updated trip object. content: application/json: schema: $ref: '#/components/schemas/trip' application/xml: schema: $ref: '#/components/schemas/trip' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' requestBody: $ref: '#/components/requestBodies/trip' '/trips/{uuid}/{lifecycle}/events': get: summary: Get Events for this Trip description: Retrieves a list of `Events` for the trip with the given UUID. tags: - Trip parameters: - $ref: '#/components/parameters/lifecycle' - $ref: '#/components/parameters/uuidParam' - $ref: '#/components/parameters/startDateTimeParam' - $ref: '#/components/parameters/endDateTimeParam' - $ref: '#/components/parameters/eventTypeParam' - $ref: '#/components/parameters/groupingIdParam' - $ref: '#/components/parameters/involvedObjectParam' responses: '200': description: A list of Events for the given trip content: application/json: schema: type: array items: $ref: '#/components/schemas/event' application/xml: schema: type: array items: $ref: '#/components/schemas/event' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' put: summary: Publish a new Event for the given trip description: | Publish a new `Event` for the given trip. Note that a planned `Trip` may consist of a lot of `Events`. Therefore it is possible to create a `Trip` with its events at once via a `PUT` to the `trips` endpoint. tags: - Trip parameters: - $ref: '#/components/parameters/lifecycle' - $ref: '#/components/parameters/uuidParam' responses: '201': description: | The created `Event`. The returned object will contain the generated UUID that can be used to refer to this `Event` in later requests. content: application/json: schema: $ref: '#/components/schemas/event' application/xml: schema: $ref: '#/components/schemas/event' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' requestBody: $ref: '#/components/requestBodies/event' /routes: get: summary: Get a list of Routes description: | Retrieves a list of all `Routes`, optionally filtered by query parameters. tags: - Route parameters: - $ref: '#/components/parameters/nameParam' - $ref: '#/components/parameters/actorQueryParam' - $ref: '#/components/parameters/externalIdSchemaParam' - $ref: '#/components/parameters/externalIdValueParam' responses: '200': description: | A list of `Routes`, optionally filtered by query parameters. content: application/json: schema: type: array items: $ref: '#/components/schemas/route' application/xml: schema: type: array items: $ref: '#/components/schemas/route' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' put: summary: Create a new Route description: Create a new `Route` object tags: - Route responses: '201': description: | The created `Route` object. Containes the generated UUID that can be used to refer to this `Route` in later requests. content: application/json: schema: $ref: '#/components/schemas/route' application/xml: schema: $ref: '#/components/schemas/route' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '409': $ref: '#/components/responses/conflict' '500': $ref: '#/components/responses/internalServerError' requestBody: $ref: '#/components/requestBodies/route' '/routes/{uuid}': get: summary: Get a specific Route by its UUID description: Retrieves a `Route` object by its unique identifier (UUID) tags: - Route parameters: - $ref: '#/components/parameters/uuidParam' responses: '200': description: A `Route` object content: application/json: schema: $ref: '#/components/schemas/route' application/xml: schema: $ref: '#/components/schemas/route' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' post: summary: Update a Route description: | Updates a `Route` object with the posted data. Note that the UUID-part of the `id` in the entity in the body of the `POST`-request should equal the ID part of the endpoint where the entity is posted to, otherwise a `400` (Bad request) error will be returned. tags: - Route parameters: - $ref: '#/components/parameters/uuidParam' responses: '200': description: The updated `Route` object content: application/json: schema: $ref: '#/components/schemas/route' application/xml: schema: $ref: '#/components/schemas/route' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' requestBody: $ref: '#/components/requestBodies/route' '/routes/{uuid}/{lifecycle}/events': get: summary: Get Events on a Route description: | Retrieves a list of `Events` on the `Route`, identified by its UUID. The behaviour of this call is slightly different, depending on the `lifecycle` phase: - "planned" and "projected": The `endDateTime` query parameter is mandatory. The `startDateTime` query parameter is optional; if it is ommitted, the default value is _now_. The returned list is a list of planned or projected `Events` on the `Route` in the given time window, that are known at the time of the request. - "actual": Both the `endDateTime` and `startDateTime` query parameters are mandatory. The returned list contains actual `Events` on the given `Route`, within the given time window. - "realized": The `startDateTime` query parameter is mandatory. The `endDateTime` query parameter is optional; when ommitted, the default value is "now". The returned list is a list of actual `Events` that took place on the given `Route` in the given time window. tags: - Route parameters: - $ref: '#/components/parameters/lifecycle' - $ref: '#/components/parameters/uuidParam' - $ref: '#/components/parameters/startDateTimeParam' - $ref: '#/components/parameters/endDateTimeParam' - $ref: '#/components/parameters/eventTypeParam' - $ref: '#/components/parameters/groupingIdParam' - $ref: '#/components/parameters/involvedObjectParam' responses: '200': description: | A list of `Events` for the given `Trip`, optionally filtered according to the request parameters. content: application/json: schema: type: array items: $ref: '#/components/schemas/event' application/xml: schema: type: array items: $ref: '#/components/schemas/event' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' put: summary: Publish a new Event on a Route description: Publish a new `Event` for the given `Route`. tags: - Route parameters: - $ref: '#/components/parameters/lifecycle' - $ref: '#/components/parameters/uuidParam' responses: '201': description: | The created `Event`. The returned object will contain the generated UUID that can be used to refer to this `Event` in later requests. content: application/json: schema: $ref: '#/components/schemas/event' application/xml: schema: $ref: '#/components/schemas/event' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' requestBody: $ref: '#/components/requestBodies/event' /vehicles: get: summary: Get a list of Vehicles description: | Retrieves a list of `Vehicle` objects, optionally filtered by query parameters. tags: - Vehicle parameters: - $ref: '#/components/parameters/nameParam' - $ref: '#/components/parameters/externalIdSchemaParam' - $ref: '#/components/parameters/externalIdValueParam' - $ref: '#/components/parameters/actorQueryParam' - $ref: '#/components/parameters/roleQueryParam' responses: '200': description: | A list of `Vehicles`, optionally filtered by query parameters. content: application/json: schema: type: array items: $ref: '#/components/schemas/vehicle' application/xml: schema: type: array items: $ref: '#/components/schemas/vehicle' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' put: summary: Create a new Vehicle description: Create a new `Vehicle` object tags: - Vehicle responses: '201': description: | The created `Vehicle` object. Containes the generated UUID that can be used to refer to this `Vehicle` in later requests. content: application/json: schema: $ref: '#/components/schemas/vehicle' examples: response: value: id: | https://opentripmodel.org/vehicles/5b156b91-8e61-45aa-b5e7-d6d560870c29 name: My first trailer type: type: trailer maxLinks: 1 externalIds: - schema: 'https://opentripmodel.org/types/licensePlate/nl' value: AB-12-YZ fuelType: type: not-applicable application/xml: schema: $ref: '#/components/schemas/vehicle' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '409': $ref: '#/components/responses/conflict' '500': $ref: '#/components/responses/internalServerError' requestBody: $ref: '#/components/requestBodies/vehicle' '/vehicles/{uuid}': get: summary: Get a Vehicle by its UUID description: Retrieves a specific `Vehicle` object by its unique identifier (UUID) tags: - Vehicle parameters: - $ref: '#/components/parameters/uuidParam' responses: '200': description: A `Vehicle` object content: application/json: schema: $ref: '#/components/schemas/vehicle' application/xml: schema: $ref: '#/components/schemas/vehicle' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' post: summary: Update a Vehicle description: | Updates the `Vehicle` identified by the UUID with the POSTed data. Note that the UUID-part of the `id` in the entity in the body of the `POST`-request should equal the ID part of the endpoint where the entity is posted to, otherwise a `400` (Bad request) error will be returned. tags: - Vehicle parameters: - $ref: '#/components/parameters/uuidParam' responses: '200': description: The updated vehicle object. content: application/json: schema: $ref: '#/components/schemas/vehicle' application/xml: schema: $ref: '#/components/schemas/vehicle' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' requestBody: $ref: '#/components/requestBodies/vehicle' '/vehicles/{uuid}/{lifecycle}/events': get: summary: Get a list of Events for a Vehicle description: Retrieves a list of `Events` for the `Vehicle` with the given UUID tags: - Vehicle parameters: - $ref: '#/components/parameters/lifecycle' - $ref: '#/components/parameters/uuidParam' - $ref: '#/components/parameters/startDateTimeParam' - $ref: '#/components/parameters/endDateTimeParam' - $ref: '#/components/parameters/eventTypeParam' - $ref: '#/components/parameters/groupingIdParam' - $ref: '#/components/parameters/involvedObjectParam' responses: '200': description: A list of `Events` for the given `Vehicle` content: application/json: schema: type: array items: $ref: '#/components/schemas/event' application/xml: schema: type: array items: $ref: '#/components/schemas/event' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' put: summary: Publish an Event for a Vehicle description: Publish a new `Event` for the given `Vehicle`. tags: - Vehicle parameters: - $ref: '#/components/parameters/lifecycle' - $ref: '#/components/parameters/uuidParam' responses: '201': description: | The created `Event` object. Containes the generated UUID that can be used to refer to this `Event` in later requests. content: application/json: schema: $ref: '#/components/schemas/event' application/xml: schema: $ref: '#/components/schemas/event' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' requestBody: $ref: '#/components/requestBodies/event' /sensors: get: summary: Get a list of Sensors description: | Retrieves a list of `Sensor` objects, optionally filtered by query parameters. tags: - Sensor parameters: - $ref: '#/components/parameters/nameParam' - $ref: '#/components/parameters/externalIdSchemaParam' - $ref: '#/components/parameters/externalIdValueParam' - $ref: '#/components/parameters/actorQueryParam' - $ref: '#/components/parameters/roleQueryParam' responses: '200': description: | A list of `Sensor`s, optionally filtered by query parameters. content: application/json: schema: type: array items: $ref: '#/components/schemas/sensor' application/xml: schema: type: array items: $ref: '#/components/schemas/sensor' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' put: summary: Create a new Sensor description: Create a new `Sensor` object tags: - Sensor responses: '201': description: | The created `Sensor` object. Containes the generated UUID that can be used to refer to this `Sensor` in later requests. content: application/json: schema: $ref: '#/components/schemas/sensor' application/xml: schema: $ref: '#/components/schemas/sensor' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '409': $ref: '#/components/responses/conflict' '500': $ref: '#/components/responses/internalServerError' requestBody: $ref: '#/components/requestBodies/sensor' '/sensors/{uuid}': get: summary: Get a Sensor by its UUID description: Retrieves a specific `Sensor` object by its unique identifier (UUID) tags: - Sensor parameters: - $ref: '#/components/parameters/uuidParam' responses: '200': description: A `Sensor` object content: application/json: schema: $ref: '#/components/schemas/sensor' application/xml: schema: $ref: '#/components/schemas/sensor' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' post: summary: Update a Sensor description: | Updates the `Sensor` identified by the UUID with the POSTed data. Note that the UUID-part of the `id` in the entity in the body of the `POST`-request should equal the ID part of the endpoint where the entity is posted to, otherwise a `400` (Bad request) error will be returned. tags: - Sensor parameters: - $ref: '#/components/parameters/uuidParam' responses: '200': description: The updated Sensor object. content: application/json: schema: $ref: '#/components/schemas/sensor' application/xml: schema: $ref: '#/components/schemas/sensor' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' requestBody: $ref: '#/components/requestBodies/sensor' '/sensors/{uuid}/{lifecycle}/events': get: summary: Get a list of Events for a Sensor description: Retrieves a list of `Events` for the `Sensor` with the given UUID tags: - Sensor parameters: - $ref: '#/components/parameters/lifecycle' - $ref: '#/components/parameters/uuidParam' - $ref: '#/components/parameters/startDateTimeParam' - $ref: '#/components/parameters/endDateTimeParam' - $ref: '#/components/parameters/eventTypeParam' - $ref: '#/components/parameters/groupingIdParam' - $ref: '#/components/parameters/involvedObjectParam' responses: '200': description: A list of `Events` for the given `Sensor` content: application/json: schema: type: array items: $ref: '#/components/schemas/event' application/xml: schema: type: array items: $ref: '#/components/schemas/event' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' put: summary: Publish an Event for a Sensor description: Publish a new `Event` for the given `Sensor`. tags: - Sensor parameters: - $ref: '#/components/parameters/lifecycle' - $ref: '#/components/parameters/uuidParam' responses: '201': description: >- The created `Event` object. Containes the generated UUID that can be used to refer to this `Event` in later requests. content: application/json: schema: $ref: '#/components/schemas/event' application/xml: schema: $ref: '#/components/schemas/event' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' requestBody: $ref: '#/components/requestBodies/event' /shipments: get: summary: Get a list of Shipments description: | Retrieves a list of `Shipment` objects, optionally filtered by query parameters. tags: - Shipment parameters: - $ref: '#/components/parameters/nameParam' - $ref: '#/components/parameters/externalIdSchemaParam' - $ref: '#/components/parameters/externalIdValueParam' - $ref: '#/components/parameters/actorQueryParam' - $ref: '#/components/parameters/roleQueryParam' responses: '200': description: 'A list of `Shipments`, optionally filtered by query parameters.' content: application/json: schema: type: array items: $ref: '#/components/schemas/shipment' application/xml: schema: type: array items: $ref: '#/components/schemas/shipment' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' put: summary: Create a new Shipment description: Create a new `Shipment` object tags: - Shipment responses: '201': description: | The created `Shipment` object. Containes the generated UUID that can be used to refer to this `Shipment` in later requests. content: application/json: schema: $ref: '#/components/schemas/shipment' application/xml: schema: $ref: '#/components/schemas/shipment' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '409': $ref: '#/components/responses/conflict' '500': $ref: '#/components/responses/internalServerError' requestBody: $ref: '#/components/requestBodies/shipment' '/shipments/{uuid}': get: summary: Get Shipment by UUID description: Retrieves a `Shipment` object by its unique identifier (UUID) tags: - Shipment parameters: - $ref: '#/components/parameters/uuidParam' responses: '200': description: A `Shipment` object content: application/json: schema: $ref: '#/components/schemas/shipment' application/xml: schema: $ref: '#/components/schemas/shipment' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' post: summary: Update a Shipment description: | Updates the `Shipment` identified by the UUID with the POSTed data. Note that the UUID-part of the `id` in the entity in the body of the `POST`-request should equal the ID part of the endpoint where the entity is posted to, otherwise a `400` (Bad request) error will be returned. tags: - Shipment parameters: - $ref: '#/components/parameters/uuidParam' responses: '200': description: The updated `Shipment` object. content: application/json: schema: $ref: '#/components/schemas/shipment' application/xml: schema: $ref: '#/components/schemas/shipment' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' requestBody: $ref: '#/components/requestBodies/shipment' '/shipments/{uuid}/{lifecycle}/events': get: summary: Get a list of Events for a Shipment description: Retrieves a list of `Events` for the `Shipment` with the given UUID tags: - Shipment parameters: - $ref: '#/components/parameters/lifecycle' - $ref: '#/components/parameters/uuidParam' - $ref: '#/components/parameters/startDateTimeParam' - $ref: '#/components/parameters/endDateTimeParam' - $ref: '#/components/parameters/eventTypeParam' - $ref: '#/components/parameters/groupingIdParam' - $ref: '#/components/parameters/involvedObjectParam' responses: '200': description: A list of `Events` for the given `Shipment` content: application/json: schema: type: array items: $ref: '#/components/schemas/event' application/xml: schema: type: array items: $ref: '#/components/schemas/event' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' put: summary: Publish a new Event on a Shipment description: Publish a new `Event` for the given `Shipment` tags: - Shipment parameters: - $ref: '#/components/parameters/lifecycle' - $ref: '#/components/parameters/uuidParam' responses: '201': description: | The created `Event` object. Containes the generated UUID that can be used to refer to this `Event` in later requests. content: application/json: schema: $ref: '#/components/schemas/event' application/xml: schema: $ref: '#/components/schemas/event' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' requestBody: $ref: '#/components/requestBodies/event' /actors: get: summary: Get a list of Actors description: | Retrieves all known `Actors`, optionally filtered by query parameters. tags: - Actor parameters: - $ref: '#/components/parameters/nameParam' - $ref: '#/components/parameters/externalIdSchemaParam' - $ref: '#/components/parameters/externalIdValueParam' responses: '200': description: | A list of `Actors`, optionally filtered by query parameters. content: application/json: schema: type: array items: $ref: '#/components/schemas/actor' application/xml: schema: type: array items: $ref: '#/components/schemas/actor' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' put: summary: Create a new Actor description: Create a new `Actor` object tags: - Actor responses: '201': description: | The created `Actor` object. Contains the generated UUID that can be used to refer to this `Actor` in later requests. content: application/json: schema: $ref: '#/components/schemas/actor' application/xml: schema: $ref: '#/components/schemas/actor' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '409': $ref: '#/components/responses/conflict' '500': $ref: '#/components/responses/internalServerError' requestBody: $ref: '#/components/requestBodies/actor' '/actors/{uuid}': get: summary: Get a specific Actor by its UUID description: Retrieves a `Actor` object by its unique identifier (UUID) tags: - Actor parameters: - $ref: '#/components/parameters/uuidParam' responses: '200': description: An `Actor` object content: application/json: schema: $ref: '#/components/schemas/actor' application/xml: schema: $ref: '#/components/schemas/actor' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' post: summary: Update an Actor description: | Updates the `Actor` identified by the UUID with the POSTed data. Note that the UUID-part of the `id` in the entity in the body of the `POST`-request should equal the ID part of the endpoint where the entity is posted to, otherwise a `400` (Bad request) error will be returned. tags: - Actor parameters: - $ref: '#/components/parameters/uuidParam' responses: '200': description: The updated `Actor` object. content: application/json: schema: $ref: '#/components/schemas/actor' application/xml: schema: $ref: '#/components/schemas/actor' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' requestBody: $ref: '#/components/requestBodies/actor' '/actors/{uuid}/{lifecycle}/events': get: summary: Get a list of Events for this Actor description: Retrieves a list of `Events` for the `Actor` with the given UUID tags: - Actor parameters: - $ref: '#/components/parameters/lifecycle' - $ref: '#/components/parameters/uuidParam' - $ref: '#/components/parameters/startDateTimeParam' - $ref: '#/components/parameters/endDateTimeParam' - $ref: '#/components/parameters/eventTypeParam' - $ref: '#/components/parameters/groupingIdParam' - $ref: '#/components/parameters/involvedObjectParam' responses: '200': description: A list of `Events` for the given `Actor` content: application/json: schema: type: array items: $ref: '#/components/schemas/event' application/xml: schema: type: array items: $ref: '#/components/schemas/event' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' put: summary: Publish a new Event for the given Actor description: Publish a new `Event` for the `Actor` with the given UUID tags: - Actor parameters: - $ref: '#/components/parameters/lifecycle' - $ref: '#/components/parameters/uuidParam' responses: '201': description: | The created `Event` object. Containes the generated UUID that can be used to refer to this `Event` in later requests. content: application/json: schema: $ref: '#/components/schemas/event' application/xml: schema: $ref: '#/components/schemas/event' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' requestBody: $ref: '#/components/requestBodies/event' /constraints: get: summary: Get a list of Constraints description: | Retrieves all known `Constraints`, optionally filtered by query parameters. tags: - Constraint parameters: - $ref: '#/components/parameters/nameParam' - $ref: '#/components/parameters/externalIdSchemaParam' - $ref: '#/components/parameters/externalIdValueParam' responses: '200': description: A list of `Constraints` content: application/json: schema: type: array items: $ref: '#/components/schemas/constraint' application/xml: schema: type: array items: $ref: '#/components/schemas/constraint' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' put: summary: Create a new Constraint description: | Create a new pre-defined `Constraint` object, that can be referenced to in objects that have a `constraint` member. tags: - Constraint responses: '201': description: | The created `Constraint` object. Contains the generated UUID that can be used to refer to this `Constraint` in later requests. content: application/json: schema: $ref: '#/components/schemas/constraint' application/xml: schema: $ref: '#/components/schemas/constraint' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '409': $ref: '#/components/responses/conflict' '500': $ref: '#/components/responses/internalServerError' requestBody: $ref: '#/components/requestBodies/constraint' '/constraints/{uuid}': get: summary: Get a Constraint by its UUID description: Retrieves a specific `Constraint` object by its unique identifier (UUID) tags: - Constraint parameters: - $ref: '#/components/parameters/uuidParam' responses: '200': description: A `Constraint` object content: application/json: schema: $ref: '#/components/schemas/constraint' application/xml: schema: $ref: '#/components/schemas/constraint' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' post: summary: Update a Constraint description: | Updates the `Constraint` identified by the UUID with the POSTed data. Note that the UUID-part of the `id` in the entity in the body of the `POST`-request should equal the ID part of the endpoint where the entity is posted to, otherwise a `400` (Bad request) error will be returned. tags: - Constraint parameters: - $ref: '#/components/parameters/uuidParam' responses: '200': description: The updated `Constraint` object. content: application/json: schema: $ref: '#/components/schemas/constraint' application/xml: schema: $ref: '#/components/schemas/constraint' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' requestBody: $ref: '#/components/requestBodies/constraint' '/constraints/{uuid}/{lifecycle}/events': get: summary: Get a list of Events for a Constraint description: Retrieves a list of `Events` for the `Constraint` with the given UUID tags: - Constraint parameters: - $ref: '#/components/parameters/lifecycle' - $ref: '#/components/parameters/uuidParam' - $ref: '#/components/parameters/startDateTimeParam' - $ref: '#/components/parameters/endDateTimeParam' - $ref: '#/components/parameters/eventTypeParam' - $ref: '#/components/parameters/groupingIdParam' - $ref: '#/components/parameters/involvedObjectParam' responses: '200': description: A list of `Events` for the given `Constraint` content: application/json: schema: type: array items: $ref: '#/components/schemas/event' application/xml: schema: type: array items: $ref: '#/components/schemas/event' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' put: summary: Publish a new Event on a Constraint description: Publish a new `Event` for the `Constraint` with the given UUID tags: - Constraint parameters: - $ref: '#/components/parameters/lifecycle' - $ref: '#/components/parameters/uuidParam' responses: '201': description: | The created `Event` object. Containes the generated UUID that can be used to refer to this `Event` in later requests. content: application/json: schema: $ref: '#/components/schemas/event' application/xml: schema: $ref: '#/components/schemas/event' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' requestBody: $ref: '#/components/requestBodies/event' /events: get: summary: Get a list of Events description: | Get a list of `Events`, optionally filtered by query parameters tags: - Event parameters: - $ref: '#/components/parameters/lifecycleQueryParam' - $ref: '#/components/parameters/groupingIdParam' - $ref: '#/components/parameters/eventTypeParam' - $ref: '#/components/parameters/startDateTimeParam' - $ref: '#/components/parameters/endDateTimeParam' - $ref: '#/components/parameters/involvedObjectParam' responses: '200': description: | A list of all defined `Events`, optionally filtered by query parameters. content: application/json: schema: type: array items: $ref: '#/components/schemas/event' application/xml: schema: type: array items: $ref: '#/components/schemas/event' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' put: summary: Create a new Event description: | Create an `Event` object with the given data. tags: - Event responses: '201': description: | The `Event` object as created. The returned object will contain the generated UUID that can be used to refer to this `Event` in later requests. content: application/json: schema: $ref: '#/components/schemas/event' application/xml: schema: $ref: '#/components/schemas/event' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '409': $ref: '#/components/responses/conflict' '500': $ref: '#/components/responses/internalServerError' requestBody: $ref: '#/components/requestBodies/event' '/events/{uuid}': get: summary: Get a specific Event by its UUID description: Retrieves a single `Event` object by its unique identifier (UUID) tags: - Event parameters: - $ref: '#/components/parameters/uuidParam' responses: '200': description: An `Event` object content: application/json: schema: $ref: '#/components/schemas/event' application/xml: schema: $ref: '#/components/schemas/event' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' '/events/{uuid}/{lifecycle}/events': get: summary: Get a list of Events related to this Event description: Retrieves a list of `Events` related to the `Event` with the given UUID tags: - Event parameters: - $ref: '#/components/parameters/lifecycle' - $ref: '#/components/parameters/uuidParam' - $ref: '#/components/parameters/startDateTimeParam' - $ref: '#/components/parameters/endDateTimeParam' - $ref: '#/components/parameters/eventTypeParam' - $ref: '#/components/parameters/groupingIdParam' - $ref: '#/components/parameters/involvedObjectParam' responses: '200': description: A list of `Events` related to the given `Event`. content: application/json: schema: type: array items: $ref: '#/components/schemas/event' application/xml: schema: type: array items: $ref: '#/components/schemas/event' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' put: summary: Publish a new Event related to the given Event description: Publish a new `Event` related to the given `Event` tags: - Event parameters: - $ref: '#/components/parameters/lifecycle' - $ref: '#/components/parameters/uuidParam' responses: '201': description: | The created `Event`. The returned object will contain the generated UUID that can be used to refer to this `Event` in later requests. content: application/json: schema: $ref: '#/components/schemas/event' application/xml: schema: $ref: '#/components/schemas/event' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '500': $ref: '#/components/responses/internalServerError' requestBody: $ref: '#/components/requestBodies/event' /bundles: put: summary: Create or update multiple entities description: | By putting a bundle on the server, a client can create or update multiple entities in one call. This can bring down the number of calls, thus reducing network traffic. It also ensures all entities in the bundle are validated at the same time and no entities are created or updated if there is an error in the bundle. This can be seen as a simple form of transaction. Bundles are not saved as an entity of their own. This means there's no `GET` call on the bundle endpoint. tags: - Bundle responses: '201': description: | The original `Bundle`, with added generated UUIDs that can be used to refer to the generated Entities in later requests. content: application/json: schema: $ref: '#/components/schemas/bundle' application/xml: schema: $ref: '#/components/schemas/bundle' '400': $ref: '#/components/responses/badRequest' '401': $ref: '#/components/responses/unauthorized' '403': $ref: '#/components/responses/forbidden' '404': $ref: '#/components/responses/notFound' '409': $ref: '#/components/responses/conflict' '500': $ref: '#/components/responses/internalServerError' requestBody: content: application/json: schema: $ref: '#/components/schemas/bundle' application/xml: schema: $ref: '#/components/schemas/bundle' description: JSON object describing a `Bundle`. required: true components: parameters: lifecycle: name: lifecycle in: path required: true description: The lifecycle phase the request applies to schema: type: string enum: - planned - projected - actual - realized lifecycleQueryParam: name: lifecycle in: query required: false description: Parameter to filter events by lifecycle phase. schema: type: string enum: - planned - projected - actual - realized uuidParam: name: uuid in: path required: true description: A uuid, identifying some pre-defined entity. schema: type: string nameParam: name: name in: query required: false description: A name or a part of a name, to search entities by their name. schema: type: string externalIdSchemaParam: name: externalIdSchema in: query required: false description: | The schema of external ID, to search for entities by their external IDs. This would return all entities that have an external ID reference with the given schema. This could still be a lot of entities. Combine with the `externalIdValue` query parameter to limit the number of results further. schema: type: string externalIdValueParam: name: externalIdValue in: query required: false description: | An external ID value, or a part of it, to search for entities by their external IDs. This parameter should be combined with the `externalIdSchema` parameter. schema: type: string involvedObjectParam: name: involvedObject in: query required: false description: | Query parameter to filter events by involved object. With this query parameter, you can filter a list of `Events` to only contain `Events` that have a certain entity in their list of `involvedObjects`. You can filter for multiple, different involved objects by chaining the parameter, as follows: `involvedObject=385afbeb-4fba-48f3-91da-b5547e8f3365&involvedObject=e49064e9-abe4-404b-9d72-3093380db937`. In that case, a logical `OR` will be applied, meaning that all events are returned that have any of the listed involved objects. > **NOTE**: The value used in this query parameter is the "bare" UUID, not the URI of an object. schema: type: string format: uuid startDateTimeParam: name: startDateTime in: query description: | The start date and time to query for. Only events on or after the `start-date-time` will be returned. All date-time values in OpenTripModel are UTC times, in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) notation: `YYYY-MM-DDThh:mm:ss.sssZ`. See the [Time values](/#section/Technical-notes/Time-values) section for details. schema: type: string format: date-time endDateTimeParam: name: endDateTime in: query description: | The end date and time to query for. Only events before or on the `end-date-time` will be returned. All date-time values in OpenTripModel are UTC times, in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) notation: `YYYY-MM-DDThh:mm:ss.sssZ`. See the [Time values](/#section/Technical-notes/Time-values) section for details. schema: type: string format: date-time eventTypeParam: name: eventType in: query description: | Filter events by event type. The resulting list will only have events of the given type. Multiple `eventType` parameters can be combined to get a list of multiple event types, like this: `eventType=loadShipmentEvent&eventType=unloadShipmentEvent`. In that case a logical `OR` will be used, meaning all events with any of the given `eventTypes` will be returned. required: false schema: type: string groupingIdParam: name: groupingId in: query description: | `groupingId` to filter by. Should you want to filter on multiple `groupingId`s, you can repeat this parameter multiple times, like this: `groupingId=a&groupingId=b`. In that case a logical `OR` will be used, meaning all events with any of the given `groupingId`s will be returned. required: false schema: type: string actorQueryParam: name: actor in: query description: | Filter the query by Actor. Only objects that are associated to the `Actor` identified by the given UUID will be shown. required: false schema: type: string format: uuid roleQueryParam: name: role in: query description: | Filter the query by role and Actor. Only objects that are associated to the `Actor` identified by the given UUID and are associated by the given role will be shown. This parameter is only valid in combination with the `actor` parameter. required: false schema: type: string responses: badRequest: description: | The request was invalid or cannot be otherwise served. Possible causes are: - invalid JSON objects; - missing required parameters; - when `POST`-ing an updated entity, the UUID-part of the `id` of the `POST` body is not equal to the UUID-part of the endpoint the body is posted to. - when `PUT`-ing an event, the `lifecyclePhase` field of that event does not correspond to the endpoint you are `PUT`-ing it to. An accompanying error message will explain further. content: application/json: schema: type: string description: error message example: The body of the request could not be parsed. application/xml: schema: type: string description: error message example: The body of the request could not be parsed. unauthorized: description: Authentication credentials were missing or incorrect. content: application/json: schema: type: string description: error message example: Authentication credentials were missing or incorrect. application/xml: schema: type: string description: error message example: Authentication credentials were missing or incorrect. forbidden: description: | The request is understood, but it has been refused or access is not allowed. An accompanying error message will explain why. content: application/json: schema: type: string description: error message example: Access to this resource is not allowed. application/xml: schema: type: string description: error message example: Access to this resource is not allowed. notFound: description: |- The URI requested is invalid or the resource requested does not exists. Also returned when the requested format is not supported by the requested method. content: application/json: schema: type: string description: error message example: The requested resource was not found. application/xml: schema: type: string description: error message example: The requested resource was not found. conflict: description: | System was not able to create an object as requested, because an object with the same properties already exists. content: application/json: schema: type: string description: error message example: An object with the same properties already exists. application/xml: schema: type: string description: error message example: An object with the same properties already exists. internalServerError: description: | An unexpected server error has occured, which needs further investigation. Please contact support. content: application/json: schema: type: string description: error message example: An unexpected error occured while processing the request. application/xml: schema: type: string description: error message example: An unexpected error occured while processing the request. requestBodies: route: content: application/json: schema: $ref: '#/components/schemas/route' application/xml: schema: $ref: '#/components/schemas/route' description: JSON object describing a `Route`. required: true shipment: content: application/json: schema: $ref: '#/components/schemas/shipment' application/xml: schema: $ref: '#/components/schemas/shipment' description: JSON object describing a `Shipment`. required: true event: content: application/json: schema: $ref: '#/components/schemas/event' application/xml: schema: $ref: '#/components/schemas/event' description: JSON object describing an `Event` required: true sensor: content: application/json: schema: $ref: '#/components/schemas/sensor' application/xml: schema: $ref: '#/components/schemas/sensor' description: JSON object describing a `Sensor`. required: true location: content: application/json: schema: $ref: '#/components/schemas/location' application/xml: schema: $ref: '#/components/schemas/location' description: | JSON object describing a `Location`. > **Please note:** The `geoReference` variable is the one and only part of the `Location` entity that exactly describes the geographic location. The `administrativeReference` member is just what is says: an administrative reference. An administrative reference is typically a street address. It _might_ be the street address corresponding to the location that is defined by the `geoReference`, but that's not required. A common case is a shop where the `administrativeReference` is the street address of the main entrance, while the `geoLocation` is the location of the loading bay, which is typically on the back side and so in another street. > **Please note:** In some cases, a street address is the most accurate known location. In such a case, you should set the address in the `geoReference` as `addressGeoReference` type. required: true trip: content: application/json: schema: $ref: '#/components/schemas/trip' application/xml: schema: $ref: '#/components/schemas/trip' description: JSON object describing a `Trip` required: true vehicle: content: application/json: schema: $ref: '#/components/schemas/vehicle' application/xml: schema: $ref: '#/components/schemas/vehicle' description: JSON object describing a `Vehicle`. required: true actor: content: application/json: schema: $ref: '#/components/schemas/actor' application/xml: schema: $ref: '#/components/schemas/actor' description: JSON object describing an `Actor`. required: true constraint: content: application/json: schema: $ref: '#/components/schemas/constraint' application/xml: schema: $ref: '#/components/schemas/constraint' description: JSON object describing a `Constraint`. required: true schemas: actor: type: object description: | 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. properties: id: type: string format: uri description: | Uniquely identifies this `Actor`. A URI can be assigned by the client or will be generated by the server if the client doesn't provide it. Once assigned, the URI can't be changed. See [Unique Identifiers](/#section/Technical-notes/Unique-identifiers) for more information. example: | https://api.opentripmodel.org/api/public/v4/actors/45db6ed0-28a7-4e4a-baba-3d5f8d171103 externalIds: type: array description: | An optional array of IDs by which the actor may be known in other systems. items: $ref: '#/components/schemas/idReference' name: type: string description: Name of the `Actor`. For display purposes and search only. example: 'My awesome company, Ltd.' contactDetails: type: array items: $ref: '#/components/schemas/contactDetail' location: type: object description: | Object describing a geographic location. A location can either be a point or an area. properties: id: type: string format: uri description: | Uniquely identifies this location. A URI can be assigned by the client or will be generated by the server if the client doesn't provide it. Once assigned, the URI can't be changed. See [Unique Identifiers](/#section/Technical-notes/Unique-identifiers) for more information. example: https://api.opentripmodel.org/api/public/v4/locations/11c11d75-e114-4b5f-9751-b3a4afa23ecf name: type: string description: Name of the `Location`. For display purposes and search only. example: Main warehouse externalIds: type: array description: | An optional array of IDs by which the location may be known in other systems. items: $ref: '#/components/schemas/idReference' type: $ref: '#/components/schemas/locationType' geoReference: $ref: '#/components/schemas/geoReference' administrativeReference: $ref: '#/components/schemas/administrativeReference' contactDetails: type: array items: $ref: '#/components/schemas/contactDetail' constraint: allOf: - description: | 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`. - $ref: '#/components/schemas/constraint' remarks: type: string description: | Remarks about the location. Please don't misuse this field for external references, use the `externalIds` field instead. example: The cafe around the corner has the best coffee in town. required: - geoReference locationType: type: object description: The type of location properties: type: type: string enum: - warehouse - store - environmentalZone - restrictedArea - customer - parkingLot - parkingGarage - parkingSpot - loadingUnloadingArea - other example: warehouse other: type: string description: | Name of the location type if `other` is chosen in the `type` field. example: playground example: type: warehouse required: - type contactDetail: type: object description: 'Contact details, such as phone numbers and email addresses.' properties: type: type: string enum: - phone - email - other description: Type of contact detail example: email value: type: string description: | The contact detail itself. Depending on the `type`, this can be a phone number, email address or some other address to contact a location or person. example: info@opentripmodel.org remarks: type: string description: Remarks about the contact detail. example: Usually doesn't answer his phone the first time example: type: phone value: '+312012345678' remarks: private cellphone of the CEO required: - type - value geoReference: type: object description: | Describes a geographic reference, which can be part of a location or route. properties: type: type: string description: Type of geographic reference example: openLRGeoReference discriminator: propertyName: type required: - type example: type: latLongPointGeoReference lat: 52.0838333 lon: 5.8318803 latLongPoint: properties: lat: type: number format: double example: 52.192294 lon: type: number format: double example: 5.410124 required: - lat - lon example: lat: 52.0838333 lon: 5.8318803 movingInfo: properties: speed: allOf: - description: | The speed of a moving `Vehicle`. - $ref: '#/components/schemas/valueWithUnit' heading: allOf: - description: | The heading of a `Vehicle`, that is: the direction the "nose" of the `Vehicle` is pointing to. - $ref: '#/components/schemas/valueWithUnit' bearing: allOf: - description: | The bearing of a `Vehicle`, that is: the angle between the `Vehicle` and its destination. Either measured _relative_ or _absolute_. See [Wikipedia](https://en.wikipedia.org/wiki/Bearing_(navigation)) for an explanation. - $ref: '#/components/schemas/valueWithUnit' bearingType: description: | Denotes how the bearing is measured. See [Wikipedia](https://en.wikipedia.org/wiki/Bearing_(navigation)) for an explanation. type: string enum: - absolute - relative default: absolute latLongPointGeoReference: allOf: - $ref: '#/components/schemas/geoReference' - $ref: '#/components/schemas/latLongPoint' - $ref: '#/components/schemas/movingInfo' example: type: latLongPointGeoReference lat: 52.0838333 lon: 5.8318803 speed: unit: 'km/h' value: 76 heading: unit: 'degrees' value: '143' latLongArrayGeoReference: allOf: - $ref: '#/components/schemas/geoReference' - properties: points: type: array minItems: 1 items: $ref: '#/components/schemas/latLongPoint' required: - points example: type: latLongArrayGeoReference points: - lat: 52.0838333 lon: 5.8318803 - lat: 52.192294 lon: 5.410124 - lat: 52.188841 lon: 5.414857 point2D: type: array maxItems: 2 minItems: 2 items: type: number format: double example: - 5.408910512924194 - 52.19404109179293 geoJSONPoint: type: object description: GeoJSon geometry externalDocs: url: 'http://geojson.org/geojson-spec.html#id2' allOf: - $ref: '#/components/schemas/geoReference' - $ref: '#/components/schemas/movingInfo' - properties: coordinates: $ref: '#/components/schemas/point2D' required: - coordinates geoJSONLineString: type: object description: GeoJSon geometry externalDocs: url: 'http://geojson.org/geojson-spec.html#id3' allOf: - $ref: '#/components/schemas/geoReference' - properties: coordinates: type: array minItems: 1 items: $ref: '#/components/schemas/point2D' required: - coordinates geoJSONPolygon: type: object description: GeoJSon geometry externalDocs: url: 'http://geojson.org/geojson-spec.html#id4' allOf: - $ref: '#/components/schemas/geoReference' - properties: coordinates: type: array items: type: array items: $ref: '#/components/schemas/point2D' required: - coordinates geoJSONMultiPoint: type: object description: GeoJSon geometry externalDocs: url: 'http://geojson.org/geojson-spec.html#id5' allOf: - $ref: '#/components/schemas/geoReference' - properties: coordinates: type: array items: $ref: '#/components/schemas/point2D' required: - coordinates geoJSONMultiLineString: type: object description: GeoJSon geometry externalDocs: url: 'http://geojson.org/geojson-spec.html#id6' allOf: - $ref: '#/components/schemas/geoReference' - properties: coordinates: type: array items: type: array items: $ref: '#/components/schemas/point2D' required: - coordinates geoJSONMultiPolygon: type: object description: GeoJSon geometry externalDocs: url: 'http://geojson.org/geojson-spec.html#id6' allOf: - $ref: '#/components/schemas/geoReference' - properties: coordinates: type: array items: type: array items: type: array items: $ref: '#/components/schemas/point2D' required: - coordinates openLRGeoReference: allOf: - $ref: '#/components/schemas/geoReference' - properties: openLRString: type: string format: openLR description: | A base64 encoded binary OpenLR string. More information about OpenLR: http://openlr.org/documents.html example: CgOkbyUN6COJAwEB/8YjGQ== required: - openLRString example: type: openLRGeoReference openLRString: CgOkbyUN6COJAwEB/8YjGQ== tmcPoint: properties: locationCode: description: TMC location code type: string direction: description: TMC direction type: string default: positive enum: - positive - negative tmcLocation: properties: countryCode: description: TMC country code type: string tableId: description: TMC table ID type: string tableVersionId: description: TMC table version ID type: string locationCode: description: TMC location code type: string direction: description: TMC direction type: string default: positive enum: - positive - negative offset: description: Offset from the TMC location in meters type: number format: integer32 default: 0 required: - countryCode - tableId - tableVersionId - locationCode tmcLocationArray: properties: countryCode: description: TMC country code type: string tableId: description: TMC table ID type: string tableVersionId: description: TMC table version ID type: string points: type: array minItems: 1 items: $ref: '#/components/schemas/tmcPoint' startOffset: description: Offset from the first TMC location in meters type: number format: integer32 default: 0 endOffset: description: Offset from the last TMC location in meters type: number format: integer32 default: 0 required: - countryCode - tableId - tableVersionId - points tmcLocationGeoReference: allOf: - $ref: '#/components/schemas/geoReference' - $ref: '#/components/schemas/tmcLocation' - $ref: '#/components/schemas/movingInfo' tmcArrayGeoReference: allOf: - $ref: '#/components/schemas/geoReference' - $ref: '#/components/schemas/tmcLocationArray' addressGeoReference: allOf: - $ref: '#/components/schemas/geoReference' - $ref: '#/components/schemas/address' address: type: object properties: street: type: string description: Street of the address. houseNumber: type: string description: Housenumber houseNumberAddition: type: string description: Addition to the houseNumber. postalCode: type: string description: The postal code of the address. city: type: string description: The city of the address country: type: string description: | [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1) country code. example: street: Langestraat houseNumber: "3" houseNumberAddition: a postalCode: 1234AB city: Amersfoort country: nl administrativeReference: description: | Administrative references are street addresses, only available for reference and for improved human readability. Administrative references are **not** intended to be used for identifying locations; always use a geoReference for that purpose. While this is not advised, you _can_ use an address as georeference. To do so, add the address as `geoReference` via the `addressGeoReference` type. allOf: - $ref: '#/components/schemas/address' - properties: name: type: string description: | The name can be sent to the mobile device of the driver, in order to properly address the client. example: Sjaak Trekhaak example: name: Main entrance of store street: Langestraat houseNumber: "3" houseNumberAddition: a postalCode: 1234AB city: Amersfoort country: nl constraint: type: object description: | `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. Note that constraints can be nested and combined using the `andConstraint`, `orConstraint` and `notConstraint`. properties: id: type: string format: uri description: | Uniquely identifies this constraint. A URI can be assigned by the client or will be generated by the server if the client doesn't provide it. Once assigned, the URI can't be changed. See [Unique Identifiers](/#section/Technical-notes/Unique-identifiers) for more information. > **NOTE** The exact meaning of this `id` field depends on the location where it is used. If used in a top-level `Constraint`, defined via the `constraints` endpoint, it denotes the unique `id` of the `Constraint`. If used inside another entity, such as e.g. `Location`, the `id` field is only used if the `type` is `constraintReference`, to refer to a predefined `Constraint`. example: 'https://api.opentripmodel.org/api/public/v4/constraints/6d4b4ac8-0122-457f-89cf-15f6d82ac2ec' name: type: string description: Name of the `Constraint`. For display purposes and search only. example: 'Constraint name' externalIds: type: array description: | An optional array of IDs by which the constraint may be known in other systems. items: $ref: '#/components/schemas/idReference' example: basisType: description: | The basis for the `Constraint`. Legal and physical constraints can generally not be violated. But a constraint may also be based on an advice or request, in which case a party may choose not to stick to the constraint. type: string enum: - legal - physical - contractual - advice - request basisReference: description: | Reference to the basis of the `Constraint`. In case the `basisType` is `legal`, this can e.g. be a link to a specific law. For a `physical` constraint, it may be a link to a photograph or drawing of the situation, etc. type: string example: https://wetten.overheid.nl/BWBR0007606/2015-04-01 type: description: | The constraint type. Set the type to `constraintReference` to refer to a predefined top-level constraint. In that case, use the `id` field to refer to the `id` of that predefined constraint. To define a constraint instead of referring to it, choose any of the other types and fill the fields that come with that constraint type. type: string discriminator: propertyName: type required: - type constraintReference: allOf: - $ref: '#/components/schemas/constraint' example: type: constraintReference id: 'https://api.opentripmodel.org/api/public/v4/constraints/6d4b4ac8-0122-457f-89cf-15f6d82ac2ec' andConstraint: allOf: - $ref: '#/components/schemas/constraint' - properties: and: description: | All constraints in the array are combined using a boolean AND relation. This means that the resulting constraint will only apply if all constraints in the array would apply. type: array items: $ref: '#/components/schemas/constraint' example: type: andConstraint and: - type: startDateTimeConstraint startDateTime: '2017-01-01T00:00Z' - type: endDateTimeConstraint endDateTime: '2018-12-31T23:59:59Z' - type: notConstraint not: type: fuelTypeConstraint fuelTypes: - type: diesel - type: biodiesel - type: other other: liquidGas orConstraint: allOf: - $ref: '#/components/schemas/constraint' - properties: or: description: | All constraints in the array are combined using a boolean OR relation. This means that the resulting constraint will apply if any of the constraints in the array would apply. type: array items: $ref: '#/components/schemas/constraint' example: type: orConstraint or: - type: fuelTypeConstraint fuelTypes: - type: battery - type: fuelTypeConstraint fuelTypes: - type: biodiesel notConstraint: allOf: - $ref: '#/components/schemas/constraint' - properties: not: allOf: - description: | The `notConstraint` inverts a given constraint, like a boolean NOT operation. This means the resulting constraint will apply if the underlying constraint would not. - $ref: '#/components/schemas/constraint' example: type: notConstraint not: type: fuelTypeConstraint fuelTypes: - type: petrol startDateTimeConstraint: allOf: - $ref: '#/components/schemas/constraint' - properties: startDateTime: type: string format: date-time description: This constraint applies from the given start date/time. example: '2012-01-01T00:00Z' endDateTimeConstraint: allOf: - $ref: '#/components/schemas/constraint' - properties: endDateTime: type: string format: date-time description: This constraint applies until the given end date/time. example: '2028-12-31T23:59:59Z' timeRangeConstraint: allOf: - $ref: '#/components/schemas/constraint' - $ref: '#/components/schemas/dayOfWeekTimeRange' eventOrderConstraint: allOf: - $ref: '#/components/schemas/constraint' - properties: eventOrderConstraintType: description: | The type of event order constraint. Available types are: - `before`: The event this constraint is placed on should occur before the referenced event. - `after`: The event this constraint is placed on should occur after the referenced event. type: string enum: - before - after eventReference: description: The URI of the referenced event. type: string format: uri example: 'https://api.opentripmodel.org/api/public/v4/events/17118916-d6bd-4d5d-8b9a-62db7dd6149d' numberOfVehiclesConstraint: allOf: - $ref: '#/components/schemas/constraint' - properties: numberConstraintType: description: | The type of number contraint. Available types are: - `maximum`: the constraint is met as long as the number of vehicles in the associated `Location` stays below or on the maximum. - `minimum`: the constraint is met as long as the number of vehicles in the associated `Location` stays above or on the minimum. - `range`: the constraint is met as long as the number of vehicles in the associated `Location` stays between the minimum and maximum, including maximum and minimum values. type: string enum: - maximum - minimum - range maximum: type: number format: int64 description: The maximum number of vehicles, only applies if `numberConstraintType` is `maximum` or `range`. minimum: type: number format: int64 description: The minimum number of vehicles, only applies if `numberConstraintType` is `minimum` or `range`. example: numberConstraintType: 'maximum' maximum: 300 sizeConstraint: allOf: - $ref: '#/components/schemas/constraint' - properties: sizeConstraintType: description: | The type of size constraint. Available types are: - `maximum`: All sizes below and including the maximum value are allowed. - `minimum`: All sizes above and including the minimum value are allowed. - `range`: All sizes in between and including the minimum and maximum values are allowed. type: string enum: - maximum - minimum - range sizeConstraint: type: string enum: - vehicleLength - vehicleHeight - vehicleWidth maximum: allOf: - description: Maximum size allowed - $ref: '#/components/schemas/valueWithUnit' minimum: allOf: - description: Minimum size allowed - $ref: '#/components/schemas/valueWithUnit' example: sizeConstraintType: range sizeConstraint: vehicle-length minimum: value: 4 unit: 'm' maximum: value: '20' unit: 'm' weightConstraint: allOf: - $ref: '#/components/schemas/constraint' - properties: weightConstraintType: description: | The type of weight constraint. Available types are: - `maximum`: All weights below and including the maximum value are allowed. - `minimum`: All weights above and including the minimum value are allowed. - `range`: All weights in between and including the minimum and maximum values are allowed. type: string enum: - maximum - minimum - range maximum: allOf: - description: Maximum weight allowed - $ref: '#/components/schemas/valueWithUnit' minimum: allOf: - description: Minimum weight allowed - $ref: '#/components/schemas/valueWithUnit' example: weightConstraintType: maximum maximum: value: 200 unit: 'kg' speedConstraint: allOf: - $ref: '#/components/schemas/constraint' - properties: speedConstraintType: description: | The type of speed constraint. Available types are: - `maximum`: All speeds below and including the maximum value are allowed. - `minimum`: All speeds above and including the minimum value are allowed. type: string enum: - maximum - minimum maximum: allOf: - description: Maximum speed allowed - $ref: '#/components/schemas/valueWithUnit' minimum: allOf: - description: Minimum speed allowed - $ref: '#/components/schemas/valueWithUnit' example: speedConstraintType: range minimum: value: 30 unit: 'km/h' maximum: value: 130 unit: 'km/h' sensorValueConstraint: allOf: - $ref: '#/components/schemas/constraint' - properties: sensorValueConstraintType: description: | The type of sensor value constraint. Available types are: - `maximum`: All sensor values below and including the maximum value are allowed. - `minimum`: All sensor values above and including the minimum value are allowed. type: string enum: - maximum - minimum sensor: type: string format: uri description: OTM URI of the sensor this constraint applies to. example: 'https://api.opentripmodel.org/api/public/v4/sensors/6666f00c-1332-472c-aff9-bc11b3d53296' maximum: allOf: - description: Maximum sensor value allowed - $ref: '#/components/schemas/valueWithUnit' minimum: allOf: - description: Minimum sensor value allowed - $ref: '#/components/schemas/valueWithUnit' example: sensor: 'https://api.opentripmodel.org/api/public/v4/sensors/6666f00c-1332-472c-aff9-bc11b3d53296' sensorValueConstraintType: maximum maximum: value: 0 unit: '°C' sensorUpdateFrequencyConstraint: allOf: - $ref: '#/components/schemas/constraint' - properties: sensorUpdateFrequencyConstraintType: description: | The type of sensor value constraint. Available types are: - `maximum`: All sensor values below and including the maximum value are allowed. - `minimum`: All sensor values above and including the minimum value are allowed. type: string enum: - maximum - minimum sensor: type: string format: uri description: OTM URI of the sensor this constraint applies to. example: 'https://api.opentripmodel.org/api/public/v4/sensors/6666f00c-1332-472c-aff9-bc11b3d53296' maximum: allOf: - description: Maximum sensor value allowed - $ref: '#/components/schemas/valueWithUnit' minimum: allOf: - description: Minimum sensor value allowed - $ref: '#/components/schemas/valueWithUnit' example: sensorUpdateFrequencyConstraintType: range minimum: value: 2 unit: 'Hz' fuelTypeConstraint: allOf: - $ref: '#/components/schemas/constraint' - properties: fuelTypes: description: The fuel types to which this constraint apply. type: array items: $ref: '#/components/schemas/fuelType' example: type: fuelTypeConstraint fuelTypes: - type: battery - type: biodiesel - type: other other: wind vehicleTypeConstraint: allOf: - $ref: '#/components/schemas/constraint' - properties: vehicleTypes: description: The vehicle types that this constraint apply to. type: array items: $ref: '#/components/schemas/vehicleType' dangerousGoodsConstraint: allOf: - $ref: '#/components/schemas/constraint' - properties: description: description: The description of a dangerous good. The exact meaning of the description depends on the `descriptionType` field. type: string descriptionType: description: The type of description of the dangerous good. type: string enum: - chemicalIdentifier - commercialName - class - other descriptionTypeReference: description: | Reference to a resource where the exact meaning of the description can be found. E.g. in case of a `descriptionType` of `class`, this reference can be a document where the classes are described. This can be a law, or a document from international organizations like IATA, ICAO, IMO, etc. In case the `descriptionType` is `commercialName`, the reference might be a document describing the specific dangerous good, with its properties. In case `descriptionType` is `chemicalIdentifier`, the reference is the standard that's used to identify the good. Examples of widely used standards for chemical identifiers are: - [InChi](https://en.wikipedia.org/wiki/International_Chemical_Identifier) - [CAS Registry Number](https://en.wikipedia.org/wiki/CAS_Registry_Number) example: type: dangerousGoodsConstraint description: 'XLYOFNOQVPJJNP-UHFFFAOYSA-N' descriptionType: 'chemicalIdentifier' descriptionTypeReference: 'https://en.wikipedia.org/wiki/International_Chemical_Identifier' routeConstraint: allOf: - $ref: '#/components/schemas/constraint' - properties: route: $ref: '#/components/schemas/geoReference' example: type: routeConstraint route: type: openLRGeoReference openLRString: 'CwPQHiUgVAH58hJ8+cw7fg4B' dayOfWeekTimeRange: type: object description: | A time range for a specific day of the week, for which the constraint will be applicable. properties: dayOfWeek: type: integer format: int32 minimum: 1 maximum: 7 description: | Day of the week, where - 1 = Monday - 2 = Tuesday - 3 = Wednesday - 4 = Thursday - 5 = Friday - 6 = Saturday - 7 = Sunday example: 1 ranges: type: array minItems: 1 items: $ref: '#/components/schemas/timeRange' required: - dayOfWeek - ranges timeRange: type: object description: Time range with start and end time. properties: range: type: string format: time-range description: | Time interval in the format `hh:mm:ss/hh:mm:ss`, where the value before the `/` is the start time and the value after the `/` is the end time. This follows the [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) time interval notation. Note that the time values are in the local time zone of the `Location`. This is because it would be impractical to convert time intervals related to a location to UTC, given that the intervals are linked to a weekday (as opposed to a specific date) and thus the UTC time could change in time zones where [Daylight Saving Time(DST)](https://en.wikipedia.org/wiki/Daylight_saving_time) is used. See the [Time values](/#section/Technical-notes/Time-values) section for details. example: '09:00:00/17:00:00' required: - range vehicle: type: object description: Vehicle properties: id: type: string format: uri description: | Unique ID for this `Vehicle`. A URI can be assigned by the client or will be generated by the server if the client doesn't provide it. Once assigned, the URI can't be changed. See [Unique Identifiers](/#section/Technical-notes/Unique-identifiers) for more information. example: 'https://api.opentripmodel.org/api/public/v4/vehicles/b9bb914d-845e-46f2-91ff-31fa4bac2fbe' name: type: string description: | Name of the `Vehicle`. For display and search purposes only. example: Otto's truck externalIds: type: array description: | An optional array of IDs by which the vehicle may be known in other systems. items: $ref: '#/components/schemas/idReference' vehicleType: $ref: '#/components/schemas/vehicleType' fuel: $ref: '#/components/schemas/fuelType' maxLinks: type: integer format: int32 description: | Maximum number of links to other `Vehicle` s. Typical values are 0, 1 or 2. loadCapacities: description: | 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. type: array items: $ref: '#/components/schemas/valueWithUnit' example: - value: 1000 unit: 'kg' length: allOf: - description: The length of the `Vehicle`. - $ref: '#/components/schemas/valueWithUnit' example: value: 5200 unit: 'mm' height: allOf: - description: The height of the `Vehicle`. - $ref: '#/components/schemas/valueWithUnit' example: value: 2500 unit: 'mm' width: allOf: - description: The width of the `Vehicle`. - $ref: '#/components/schemas/valueWithUnit' example: value: 1800 unit: 'mm' emptyWeight: allOf: - description: The weight of the `Vehicle` when empty. - $ref: '#/components/schemas/valueWithUnit' example: value: 2000 unit: 'kg' required: - maxLinks - type vehicleType: type: object description: The type of vehicle properties: type: type: string enum: - boxtruck - truck - trailer - lorry - tractor - airplane - deepSeaVessel - barge - passengerCar - motorBike - bike - bus - coach - train - tram - unknown - other other: type: string description: | Name of the vehcile type if `other` is chosen in the `type` field. example: teletransporter example: type: tractor required: - type fuelType: type: object description: | 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. properties: type: type: string enum: - battery - biodiesel - diesel - dieselBatteryHybrid - ethanol - hydrogen - liquidGas - lpg - methane - petrol - petrolBatteryHybrid - notApplicable - unknown - other other: type: string description: | Name of the fuel type if `other` is chosen in the `type` field. example: nuclear-fusion example: type: diesel required: - type sensor: type: object description: Sensor properties: id: type: string format: uri description: | Unique ID for this `Sensor`. A URI can be assigned by the client or will be generated by the server if the client doesn't provide it. Once assigned, the URI can't be changed. See [Unique Identifiers](/#section/Technical-notes/Unique-identifiers) for more information. example: https://api.opentripmodel.org/api/public/v4/sensors/6666f00c-1332-472c-aff9-bc11b3d53296 name: type: string description: | Name of the `Sensor`, for display and search purposes only. example: Temperature sensor in trailer x externalIds: type: array description: | An optional array of IDs by which the sensor may be known in other systems. items: $ref: '#/components/schemas/idReference' placement: type: string description: | 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. example: Compartment 1 sensorType: $ref: '#/components/schemas/sensorType' constraint: allOf: - description: | In the context of a `Sensor`, only `sensorValueConstraint`s 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`. - $ref: '#/components/schemas/constraint' sensorType: type: object description: The type of sensor properties: type: type: string enum: - temperature - pressure - speed - humidity - accelerometer - current - voltage - weight - unknown - other other: type: string description: | Name of the sensor type if `other` is chosen in the `type` field. example: smurf sensor example: type: accelerometer required: - type shipment: type: object description: | A shipment object has at lease a `physicalSender` and `physicalAddressee` location. If no `legalSender` or `legalAddressee` are given, those are considered equal to their physical counterparts. All sender/addressee values can be given either as embedded location object or as URI of a pre-defined location. In the latter case, you can use the field ending with `Id` instead. A `physicalSender` or `physicalSenderId` is required, as is a `physicalAddressee` or `physicalAddresseeId`. properties: id: type: string format: uri description: | Uniquely identifies the `Shipment`. A URI can be assigned by the client or will be generated by the server if the client doesn't provide it. Once assigned, the URI can't be changed. See [Unique Identifiers](/#section/Technical-notes/Unique-identifiers) for more information. example: https://api.opentripmodel.org/api/public/v4/shipments/ddb488f2-9082-4ec9-bd88-3c4e703a103d name: type: string description: Name of the `Shipment`. For display purposes and search only. example: Special delivery for store 3 externalIds: type: array description: | An optional array of IDs by which the shipment may be known in other systems. items: $ref: '#/components/schemas/idReference' physicalSenderId: type: string format: uri description: | The URI of an already defined location for the physical location of the sender. example: https://api.opentripmodel.org/api/public/v4/locations/ebf47d6b-b976-438f-bf0a-5161d04bf981 physicalSender: $ref: '#/components/schemas/location' legalSenderId: type: string format: uri description: | The URI of an already defined location for the legal location of the sender. example: https://api.opentripmodel.org/api/public/v4/locations/62da797a-bc58-40c1-a9ee-5e90813144a9 legalSender: $ref: '#/components/schemas/location' physicalAddresseeId: type: string format: uri description: | The URI of an already defined location for the physical location of the addressee. example: https://api.opentripmodel.org/api/public/v4/locations/a1ed8116-94c5-4f00-a17d-7b96998a0795 physicalAddressee: $ref: '#/components/schemas/location' legalAddresseeId: type: string format: uri description: | The URI of an already defined location for the legal location of the addressee. example: https://api.opentripmodel.org/api/public/v4/locations/cef100b7-9867-424d-a9a7-350fa823d609 legalAddressee: $ref: '#/components/schemas/location' freightDocument: type: string format: uri description: URI to the official freight document for this shipment. example: 'https://partner.transfollow.com/api/freightdocuments/abc001' dimensions: allOf: - description: The dimensions of the shipment. - $ref: '#/components/schemas/dimensions' weight: allOf: - description: The weight of the shipment. - $ref: '#/components/schemas/valueWithUnit' packaging: type: string description: | Description of the packaging (type) of this shipment example: pallet type: type: string description: | This field can be used to categorize and/or group shipments by type, depending on the needs of a specific logistic process. example: fresh goods count: type: number description: | Amount of units of packaging. For instance, if this field is '2' and packaging is 'pallet', this indicates the shipment contains 2 pallets. > Note: This field can be used alongside dimensions and weight, but dimensions and weight always apply to the entire shipment, not to a single unit of packaging. example: 2 description: type: string description: | Free format text field that can be used to describe the contents of this shipment. example: 50 boxes of bananas constraint: allOf: - description: | 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. > **ℹ Note** that constraints can be nested and combined using the `andConstraint`, `orConstraint` and `notConstraint`. - $ref: '#/components/schemas/constraint' trip: type: object description: | `Trip` entity. A `Trip` entity consists of a list of `Events` and an optional `Route`. The sequence of `Events` defines the trip. Each `Trip` has an associated `events` endpoint that can be used to get the events for this trip or to publish new events on the trip. Once defined, a `Trip` entity exists in all single lifecycle phases, just like the other entities. However, the events of the `Trip` differ between the different lifecycle phases. properties: id: type: string format: uri description: | Uniquely identifies the `Trip`. A URI can be assigned by the client or will be generated by the server if the client doesn't provide it. Once assigned, the URI can't be changed. See [Unique Identifiers](/#section/Technical-notes/Unique-identifiers) for more information. example: https://api.opentripmodel.org/api/public/v4/trips/aa38745d-1e90-4774-bf12-05c24a6f8318 name: type: string description: | Name of the `Trip`, for display and search purposes only. example: Warehouse to shop externalIds: type: array description: | An optional array of IDs by which the trip may be known in other systems. items: $ref: '#/components/schemas/idReference' route: type: string format: uri description: | URI of an endpoint that can be used to retrieve the route of this `Trip`. example: https://api.opentripmodel.org/api/public/v4/routes/9df853e4-1291-40de-bfc1-4e5d7b23cc76 constraint: allOf: - description: | 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 refridgerated trailer has to stay below a given maximum during the trip. > **ℹ Note** that constraints can be nested and combined using the `andConstraint`, `orConstraint` and `notConstraint`. - $ref: '#/components/schemas/constraint' route: type: object description: Route properties: id: type: string format: uri description: | Uniquely identifies the `Route`. A URI can be assigned by the client or will be generated by the server if the client doesn't provide it. Once assigned, the URI can't be changed. See [Unique Identifiers](/#section/Technical-notes/Unique-identifiers) for more information. example: https://api.opentripmodel.org/api/public/v4/routes/fcc0828c-591f-4b3c-bc48-7dc8856e7f2a name: type: string description: Name of the `Route`. For display purposes and search only. example: Quickest from Amsterdam warehouse to Maastricht store externalIds: type: array description: | An optional array of IDs by which the route may be known in other systems. items: $ref: '#/components/schemas/idReference' geoReferences: $ref: '#/components/schemas/geoReference' required: - geoReferences bundle: type: object description: Bundle properties: meta: $ref: '#/components/schemas/bundle_meta' entities: type: array items: $ref: '#/components/schemas/bundledEntity' events: description: | An array of events. The order of events is determined by the timestamps as explained on the [Ordering of events](https://www.opentripmodel.org/v4.2.0/docs/ordering-of-events) page. type: array items: $ref: '#/components/schemas/event' bundle_meta: type: object description: Meta-information about this bundle. properties: generator: type: string description: Description of the generator of this bundle example: XYZ Planning software creationTime: type: string format: date-time description: Date and time this bundle was generated bundledEntity: type: object description: Entity that is part of a `Bundle`. properties: entityType: type: string description: | The type of entity. This is needed, since the type cannot be derived from the endpoint in a `Bundle`. enum: - vehicleEntity - locationEntity - tripEntity - routeEntity - shipmentEntity - actorEntity - constraintEntity - sensorEntity discriminator: propertyName: entityType required: - entityType example: entityType: vehicleEntity id: 'https://api.opentripmodel.org/api/public/v4/vehicles/635f6bd2-2568-45d8-b4e0-312f563b87de' externalIds: - schema: 'https://opentripmodel.org/types/licensePlate/nl' value: T-123-AB vehicleType: type: tractor fuel: type: diesel maxLinks: 1 sensorEntity: type: object allOf: - $ref: '#/components/schemas/bundledEntity' - $ref: '#/components/schemas/sensor' vehicleEntity: type: object allOf: - $ref: '#/components/schemas/bundledEntity' - $ref: '#/components/schemas/vehicle' locationEntity: type: object allOf: - $ref: '#/components/schemas/bundledEntity' - $ref: '#/components/schemas/location' tripEntity: type: object allOf: - $ref: '#/components/schemas/bundledEntity' - $ref: '#/components/schemas/trip' routeEntity: type: object allOf: - $ref: '#/components/schemas/bundledEntity' - $ref: '#/components/schemas/route' shipmentEntity: type: object allOf: - $ref: '#/components/schemas/bundledEntity' - $ref: '#/components/schemas/shipment' actorEntity: type: object allOf: - $ref: '#/components/schemas/bundledEntity' - $ref: '#/components/schemas/actor' constraintEntity: type: object allOf: - $ref: '#/components/schemas/bundledEntity' - $ref: '#/components/schemas/constraint' event: type: object description: Event properties: id: type: string format: uri description: | Uniquely identifies the `Event`. A URI can be assigned by the client or will be generated by the server if the client doesn't provide it. Once assigned, the URI can't be changed. See [Unique Identifiers](/#section/Technical-notes/Unique-identifiers) for more information. example: | https://api.opentripmodel.org/api/public/v4/vehicles/96b65c0f-9692-4b46-bd08-cac21ecabcec/actual/events/ed592f10-a753-40d9-b015-dfeed7dc0681 groupingId: type: string description: | When defining interfaces between different systems, sometimes one "event" in one system can lead to multiple OTM events. You might need to be able to see which events originate to the same "source" event. Another use case for the `groupingId` is for displaying purposes. In a GUI, it might be needed to visually group certain events. In these cases, the `groupingId` can be used. example: 1f1aac39-437d-4098-aef7-ec720016b932 lifecyclePhase: $ref: '#/components/schemas/lifecyclePhase' involvedObjects: type: array description: | A list of URI's, each one pointing to an endpoint representing an object that is involved in this `Event`. The maximum number of objects is defined by the `Event`'s type. items: type: string format: uri example: | https://api.opentripmodel.org/api/public/v4/locations/c4a788c7-d86a-4efe-95da-1e345bd73d67 type: type: string description: | The type of the `Event`. Depending on this type, additional fields may be required for this object. See the main [Event section](#tag/Event) for comprehensive documentation on the available event types, their meaning and their variables. example: loadShipmentEvent time: type: string format: date-time description: | The date and time this `Event` happens. The exact meaning depends on the `lifecyclePhase`: - "planned" and "projected": The date and time this event is planned or projected to happen. This is always in the future. - "actual": The date and time this event actually happens. This is always in the near past. - "realized": The date and time this event did actually happen. This is always in the past. All date-time values in OpenTripModel are UTC times, in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) notation: `YYYY-MM-DDThh:mm:ss.sssZ`. See the [Time values](/#section/Technical-notes/Time-values) section for details. eventGenerationTime: type: string format: date-time description: | This field can optionally contain the date and time this event was generated. This can be useful e.g. for events in the `projected` lifecycle phase, that typically are calculated. The generation (calculation) time can be an indicator for the relevance of the event. The `eventGenerationTime` should always be in the past. If the sender of an OTM event does not set the eventGenerationTime, the recipient may set it to the current time. All date-time values in OpenTripModel are UTC times, in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) notation: `YYYY-MM-DDThh:mm:ss.sssZ`. See the [Time values](/#section/Technical-notes/Time-values) section for details. reason: type: string description: | Reason for or cause of this event. example: There was a traffic jam. remarks: type: string description: | Remarks for this event. example: The traffic lights weren't working constraint: allOf: - description: | In the context of an `Event`, a `Constraint` can be used to constrain the order of events. This can be useful if events don't have any timestamp but you need to guarantee that a certain event occurs before another event. The only constraint types that are valid in the context of an `Event` are: - `eventOrderConstraint`; - `andConstraint`; - `orConstraint`; - `constraintReference`. - $ref: '#/components/schemas/constraint' discriminator: propertyName: type required: - type updateEvent_location: type: object description: | The location on which this event is taking place. Note that only inline (_ad hoc_) locations can be used. If you wish to refer to a predefined `Location`, either publish the event on the particular `Location`'s endpoint or reference the particular `Location` in the `involvedObjects` array. (This is changed since version 4.1. Before 4.1 it was possible to reference a `Location` here, but that turned out to be ambiguous.) Note that it might seem superfluous to have a `location` inside a `location`; this structure is kept in place for backward compatibility with OTM 4.0. properties: location: $ref: '#/components/schemas/geoReference' locationUpdateEvent: allOf: - $ref: '#/components/schemas/event' - properties: location: $ref: '#/components/schemas/updateEvent_location' sensorUpdateEvent: allOf: - $ref: '#/components/schemas/event' - properties: location: $ref: '#/components/schemas/updateEvent_location' sensorValue: $ref: '#/components/schemas/valueWithUnit' required: - sensorValue startEngineEvent: allOf: - $ref: '#/components/schemas/event' - properties: location: $ref: '#/components/schemas/updateEvent_location' stopEngineEvent: allOf: - $ref: '#/components/schemas/event' - properties: location: $ref: '#/components/schemas/updateEvent_location' restrictionWarningEvent: allOf: - $ref: '#/components/schemas/event' - properties: location: $ref: '#/components/schemas/updateEvent_location' - properties: warning: type: string description: Restriction warning description required: - warning constraintViolationEvent: allOf: - $ref: '#/components/schemas/event' - properties: location: $ref: '#/components/schemas/updateEvent_location' violatedConstraint: $ref: '#/components/schemas/constraint' trafficWarningEvent: allOf: - $ref: '#/components/schemas/event' - properties: location: $ref: '#/components/schemas/updateEvent_location' - properties: warning: type: string description: Traffic warning description required: - warning startMovingEvent: allOf: - $ref: '#/components/schemas/event' - properties: location: $ref: '#/components/schemas/updateEvent_location' stopMovingEvent: allOf: - $ref: '#/components/schemas/event' - properties: location: $ref: '#/components/schemas/updateEvent_location' startWaitingEvent: allOf: - $ref: '#/components/schemas/event' - properties: location: $ref: '#/components/schemas/updateEvent_location' stopWaitingEvent: allOf: - $ref: '#/components/schemas/event' - properties: location: $ref: '#/components/schemas/updateEvent_location' startLoadingAndUnloadingEvent: allOf: - $ref: '#/components/schemas/event' - properties: location: $ref: '#/components/schemas/updateEvent_location' stopLoadingAndUnloadingEvent: allOf: - $ref: '#/components/schemas/event' - properties: location: $ref: '#/components/schemas/updateEvent_location' pickupTimeWindowStartEvent: allOf: - $ref: '#/components/schemas/event' - properties: location: $ref: '#/components/schemas/updateEvent_location' pickupTimeWindowEndEvent: allOf: - $ref: '#/components/schemas/event' - properties: location: $ref: '#/components/schemas/updateEvent_location' deliveryTimeWindowStartEvent: allOf: - $ref: '#/components/schemas/event' - properties: location: $ref: '#/components/schemas/updateEvent_location' deliveryTimeWindowEndEvent: allOf: - $ref: '#/components/schemas/event' - properties: location: $ref: '#/components/schemas/updateEvent_location' coupleVehiclesEvent: allOf: - $ref: '#/components/schemas/event' - properties: location: $ref: '#/components/schemas/updateEvent_location' decoupleVehiclesEvent: allOf: - $ref: '#/components/schemas/event' - properties: location: $ref: '#/components/schemas/updateEvent_location' assignToTripEvent: allOf: - $ref: '#/components/schemas/event' deassignFromTripEvent: allOf: - $ref: '#/components/schemas/event' assignDriverEvent: allOf: - $ref: '#/components/schemas/event' - properties: location: $ref: '#/components/schemas/updateEvent_location' deassignDriverEvent: allOf: - $ref: '#/components/schemas/event' - properties: location: $ref: '#/components/schemas/updateEvent_location' associateWithActorEvent: allOf: - $ref: '#/components/schemas/event' - properties: actor: type: string format: uri description: | Reference to the `Actor` to which the `involvedObjects` are to be associated example: 'https://api.opentripmodel.org/api/public/v4/actors/45db6ed0-28a7-4e4a-baba-3d5f8d171103' role: type: string description: | The role of the `Actor` with respect to the `involvedObjects`. There are no pre-defined roles, and the role does not have any special meaning in OpenTripModel. example: owner dissociateFromActorEvent: allOf: - $ref: '#/components/schemas/event' - properties: actor: type: string format: uri description: | Reference to the `Actor` from which the `involvedObjects` are to be dissociated example: | https://api.opentripmodel.org/api/public/v4/actors/45db6ed0-28a7-4e4a-baba-3d5f8d171103 role: type: string description: | The role of the `Actor` with respect to the `involvedObjects`. There are no pre-defined roles, and the role does not have any special meaning in OpenTripModel. example: owner loadShipmentEvent: description: | This events models the loading of a `Shipment` in a `Vehicle`. This event often takes place at the same time as a `releaseShipmentEvent`. allOf: - $ref: '#/components/schemas/event' - properties: location: $ref: '#/components/schemas/updateEvent_location' placement: type: string description: | Sometimes a `Vehicle` has multiple compartments, e.g. to have refridgerated zones with different temperatures. You can use the placement value to specify if a `Shipment` should be loaded into a specific compartment of the `Vehicle`. example: Compartment 1 unloadShipmentEvent: description: | This events models the unloading of a `Shipment` from a `Vehicle`. This event often takes place at the same time as a `receiveShipmentEvent`. allOf: - $ref: '#/components/schemas/event' - properties: location: $ref: '#/components/schemas/updateEvent_location' receiveShipmentEvent: description: | This event models the reception of a `Shipment` at a `Location`. This event often takes place at the same time as a `unloadShipmentEvent`. allOf: - $ref: '#/components/schemas/event' - properties: location: $ref: '#/components/schemas/updateEvent_location' releaseShipmentEvent: description: | This event models the release (for pick up) of a `Shipment` at a `Location`. This event often takes place at the same time as a `loadShipmentEvent`. allOf: - $ref: '#/components/schemas/event' - properties: location: $ref: '#/components/schemas/updateEvent_location' linkTripsEvent: allOf: - $ref: '#/components/schemas/event' coupleSensorEvent: allOf: - $ref: '#/components/schemas/event' decoupleSensorEvent: allOf: - $ref: '#/components/schemas/event' cancelEvent: allOf: - $ref: '#/components/schemas/event' cancelAllEntityEvents: allOf: - $ref: '#/components/schemas/event' cancelGroupedEvents: allOf: - $ref: '#/components/schemas/event' - properties: cancelledGroupingIds: type: array description: | All events with the given `groupingId`s will be cancelled. items: type: string example: ceb70302-4379-481c-9591-2c42198a9ac7 example: - a52680d3-18d5-4ad5-baed-ba85bd4ce8dc - 6ebdb45e-d82d-41df-9554-0a1166db9a05 ignoreEvent: allOf: - $ref: '#/components/schemas/event' lifecyclePhase: type: object description: | Lifecycle phase, can be one of "planned", "projected", "actual" or "realized". All entities except `Event` exist in all lifecycle phases. The events on an entity differ depending on the lifecycle phase. E.g. a vehicle in the "planned" lifecycle phase has different events compared to the same vehicle in the "actual" phase. > Note that, when `PUT`-ing a new event, you always `PUT` to an endpoint specific to the lifecycle phase. Thus, the lifecycle phase field is not required when `PUT`-ing an event. When `GET`-ing an event, the OTM-server will always add the field, so you can see the lifecycle phase in the response. It is allowed to add a redundant `lifecyclePhase` field to an event when `PUT`-ing it. Make sure the contents of that field correspond to the endpoint you `PUT` to, otherwise the OTM-server might respond with a `400 - Bad Request` error. properties: phase: type: string description: phase in the lifecycle enum: - planned - projected - actual - realized example: phase: actual valueWithUnit: type: object description: Value with unit properties: value: type: number description: value in the given unit example: 42 unit: type: string description: measurement unit of this value example: kg required: - unit - value dimensions: type: object description: Dimensions of an object. properties: width: $ref: '#/components/schemas/valueWithUnit' height: $ref: '#/components/schemas/valueWithUnit' length: $ref: '#/components/schemas/valueWithUnit' required: - width - height - length idReference: type: object description: | Reference to an ID of an object in another system or according to another standard. properties: schema: type: string format: uri description: | URI, uniquely identifying the scheme of the identifier. Examples: - `http://www.gs1.org/gln`, **[Global Location Number](http://en.wikipedia.org/wiki/Global_Location_Number)**: See http://en.wikipedia.org/wiki/Global_Location_Number and http://www.gs1.org/gln. - `https://opentripmodel.org/types/licensePlate/{countryCode}`, **License plate**: Licence plate identifier. Use the [international vehicle registration code](https://en.wikipedia.org/wiki/List_of_international_vehicle_registration_codes) in the URI, - `https://opentripmodel.org/types/name`, **Name**: Just a name - `https://opentripmodel.org/types/kvknummer`, **Dutch Chamber of Commerce number**: Can be used to identify a company. - `http://www.gs1.org/gsin`, **GSIN**, [Global Shipment Identification Number](http://www.gs1.org/gsin) - identifies a shipment, according to the [GS1 standard](https://en.wikipedia.org/wiki/GS1). - `http://www.gs1.org/sscc`, **SSCC**, [Serial Shipping Container Code](http://www.gs1.org/sscc) - identifies a container within a shipment, in case a shipment consists of more than one container, according to the [GS1 standard](https://en.wikipedia.org/wiki/GS1). - `http://www.gs1.org/gtin`, **GTIN**, [Global Trade Item Number](http://www.gs1.org/gtin), identifies an item in a container within a shipment, according to the [GS1 standard](https://en.wikipedia.org/wiki/GS1). > **Note** that the list above is just a list of examples. E.g. in case of shipments, OpenTripModel doesn't define the granularity of a `Shipment`, while the GS1-references might suggest otherwise. In GS1 terms, a `Shipment` in OpenTripModel can either be a _Shipment_, or a _Shipping Container_ or a _Trade Item_ or neither of those. It all depends on the needs of the logistics operation that is to be modeled in OpenTripModel. Also note that uniqueness of external ID's should not be enforced by an OpenTripModel server. External ID's are for reference only. example: 'https://opentripmodel.org/types/licensePlate/nl' value: type: string description: The unique identifier (ID) in the format defined by the schema. example: AB-12-CD uri: type: string format: uri description: | The (optional) URI that can be used to get additional information about the referenced identifier in an external system. example: 'https://www.kvk.nl/zoeken/#!zoeken&q=57084173' required: - schema - value