openapi: 3.0.0
info:
  title: Open Trip Model
  version: v5.7
  description: >
    ## Why OTM?


    In this day and age more and more information about logistics and traffic is
    shared over the Internet between

    various parties. To make this communication easier the _Open Trip Model_
    specification was created. It is a

    lightweight data model used to exchange real-time logistic trip data on the
    web, and to make it easier for

    shippers, carriers, software vendors, OEMs, and truck manufacturers to
    create new multi-brand applications and

    services.


    To learn more about the what, the why and the how see the

    **[OTM documentation website](https://opentripmodel.org/)**.


    ## Changelog


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

    [OTM5 change requests Github
    page](https://github.com/opentripmodel/otm5-change-requests)


    **Version 5.7 (released on 2025-05-23)**


    * Fix broken link to goods packaging type codes. [See
    87](https://github.com/opentripmodel/otm5-change-requests/issues/87).

    * Fix inconsistent use of plural name 'geoReferences' for non array property
    in route definitions. Add new property 'geoReference' and deprecate
    'geoReferences'. First one is now required. [See
    86](https://github.com/opentripmodel/otm5-change-requests/issues/86).

    * Add enums for location types 'fuelStation', 'serviceStation' and 'other'.
    Add new property 'otherLocationType' to specify the location type in case of
    'other'. [See
    73](https://github.com/opentripmodel/otm5-change-requests/issues/73).

    * Add eight new action result reasons, including 'deliveredElsewhere',
    'deliveredToWrongReceiver' and 'other'. In case of 'other' the result reason
    can be provided as free text in the existing remark property. [See
    89](https://github.com/opentripmodel/otm5-change-requests/issues/89).

    * Add distance property in move action. This can be provided by means of
    value and unit (e.g. 120 km) [See
    90](https://github.com/opentripmodel/otm5-change-requests/issues/90)

    * Add two specializations of actor, i.e. 'peron' and 'company'. Each with an
    additional set of properties. [See
    100](https://github.com/opentripmodel/otm5-change-requests/issues/100)


    **Version 5.6 (released on 2023-11-17)**


    * Add loading and unloading consignment in and from transport equipment.
    [See 63](https://github.com/opentripmodel/otm5-change-requests/issues/63).

    * Add enforceability of a constraint. [See
    75](https://github.com/opentripmodel/otm5-change-requests/issues/75).

    * Add recurring date times & durations on actions & events. [See
    75](https://github.com/opentripmodel/otm5-change-requests/issues/75).

    * Add sub-locations as optional field on a location. [See
    77](https://github.com/opentripmodel/otm5-change-requests/issues/77).

    * Add `owner` as a new type of actor role. [See
    78](https://github.com/opentripmodel/otm5-change-requests/issues/78).

    * Add `routeEntityConstraint` and deprecate `routeConstraint`. [See
    80](https://github.com/opentripmodel/otm5-change-requests/issues/80).


    **Version 5.5 (released on 2023-02-07)**


    * Explain when to use `Consignment` vs `Goods` constraints. [See
    42](https://github.com/opentripmodel/otm5-change-requests/issues/42).

    * Make `fuel` on vehicle an enum instead of a free string. [See
    51](https://github.com/opentripmodel/otm5-change-requests/issues/51).

    * Add `emissionStandardConstraint` as a possible constraint. [See
    52](https://github.com/opentripmodel/otm5-change-requests/issues/52).

    * Add `transportOrder` as a field on `Consignment` to enable the two-way
    relationship. [See
    59](https://github.com/opentripmodel/otm5-change-requests/issues/59).

    * Add `eori` as a possible contact detail option. [See
    60](https://github.com/opentripmodel/otm5-change-requests/issues/60).

    * Add `valueBoundConstraint` as a possible constraint. [See
    61](https://github.com/opentripmodel/otm5-change-requests/issues/61).

    * Add `refuel` as a possible action. [See
    62](https://github.com/opentripmodel/otm5-change-requests/issues/62).

    * Add `accessConstraint` as possible constraint. [See
    69](https://github.com/opentripmodel/otm5-change-requests/issues/69).


    **Version 5.4 (released on 2022-05-09)**


    * _Add a `TransportEquipmentConstraint`. [See
    46](https://github.com/opentripmodel/otm5-change-requests/issues/46).

    * _Add `averageFuelConsumption` to vehicle. [See
    48](https://github.com/opentripmodel/otm5-change-requests/issues/48).

    * _Add fuel consumption and emission events. [See
    49](https://github.com/opentripmodel/otm5-change-requests/issues/49).

    * _Add `contextEvents` on entities. [See
    49](https://github.com/opentripmodel/otm5-change-requests/issues/49).

    * _Add `sequenceNr` to all action types. [See
    50](https://github.com/opentripmodel/otm5-change-requests/issues/50).

    * _Add `cancelled` on action results and `receiverAbsent` as 'reason' type.
    [See 53](https://github.com/opentripmodel/otm5-change-requests/issues/53).

    * _Add `actors` to all event types. [See
    55](https://github.com/opentripmodel/otm5-change-requests/issues/55).

    * _Add `description` to all constraint types. [See
    56](https://github.com/opentripmodel/otm5-change-requests/issues/56).


    **Version 5.3 (released on 2021-12-16)**


    * Support 204 (No Content) for delete requests. [See
    23](https://github.com/opentripmodel/otm5-change-requests/issues/23).

    * Add classification lines to goods. [See
    26](https://github.com/opentripmodel/otm5-change-requests/issues/26).

    * Add a result to actions. [See
    30](https://github.com/opentripmodel/otm5-change-requests/issues/30).

    * Extend ADR with points and transport category. [See
    31](https://github.com/opentripmodel/otm5-change-requests/issues/31).

    * Support `relatedConsignments` in consignments. [See
    32](https://github.com/opentripmodel/otm5-change-requests/issues/32).

    * Support UNCode and GLN in locations. [See
    36](https://github.com/opentripmodel/otm5-change-requests/issues/36).

    * Support `temperatureConstraint` as a possible constraint type. [See
    37](https://github.com/opentripmodel/otm5-change-requests/issues/37).

    * Add some references to existing code lists. [See
    27](https://github.com/opentripmodel/otm5-change-requests/issues/27).
        - Using ISO country codes in the country field in addresses.
        - Using ISO currency codes in 'value-with-unit' fields.
        - Using the metric system as recommend and default system for dealing with mass, velocity, weight and sizes.
        - Using the package material codes from the GS1 standard.

    **Version 5.2 (released on 2021-09-09)**


    * _Add `transportEquipmentSubType` for example to indicate what type of
    pallets you use. [See
    19](https://github.com/opentripmodel/otm5-change-requests/issues/19).

    * _Add `timeWindowConstraint` to replace `startDateTimeConstraint` and
    `endDateTimeConstraint`. [See
    6](https://github.com/opentripmodel/otm5-change-requests/issues/6).

    * _Add `operationalBase` as a location type. [See
    22](https://github.com/opentripmodel/otm5-change-requests/issues/22).

    * _Add more actor role types. [See
    20](https://github.com/opentripmodel/otm5-change-requests/issues/20).

    * _Add new break and wait actions. [See
    17](https://github.com/opentripmodel/otm5-change-requests/issues/17).

    * _Allow for server side UUID generation. [See
    16](https://github.com/opentripmodel/otm5-change-requests/issues/16).


    **Version 5.1 (released on 2021-06-01)**


    * Add an optional `emission` to Vehicle. [See
    13](https://github.com/opentripmodel/otm5-change-requests/issues/13).

    * Add an optional `transportMode` to Trip and Move. [See
    12](https://github.com/opentripmodel/otm5-change-requests/issues/12).

    * Add optional `grossWeight` to Goods. [See
    11](https://github.com/opentripmodel/otm5-change-requests/issues/11).

    * Add`mobilePhone` as contact detail option. [See
    5](https://github.com/opentripmodel/otm5-change-requests/issues/5).

    * Add an optional `lastModified` field to each entity. [See
    2](https://github.com/opentripmodel/otm5-change-requests/issues/2).

    * Add an optional language to contact details. [See
    9](https://github.com/opentripmodel/otm5-change-requests/issues/9).

    * Add a new entity Document to deal with information about files that can be
    shared. [See
    7](https://github.com/opentripmodel/otm5-change-requests/issues/7).

    * Add new statuses to Trip and Consignment. [See
    4](https://github.com/opentripmodel/otm5-change-requests/issues/4).

    * Add an optional sensors association to vehicle. [See
    2](https://github.com/opentripmodel/otm5-change-requests/issues/2).


    **Version 5.0 (only documentation changes)**


    * Add documentation about validation endpoints.

    * Add reference to the otm5-change-requests github.

    * Fix the broken checkbox for actions when choosing the `Stop` action.

    * Document the license plate on a `TransportEquipment` (i.e. a trailer).
servers:
  - url: https://example.com
tags:
  - name: Vehicle
    description: >-
      A `Vehicle` is a means to transport consignments from one location to
      potentially multiple other locations. There

      are various types of vehicles, each with their own unique properties like
      size, dimensions, fuel type and means

      of tranport (by air, on land, over sea).
  - name: Route
    description: >-
      A route models the path going from one location to at least one other
      location.
  - name: Sensor
    description: >-
      A sensor is a device that is able to measure a quantity in a certain unit,
      such as measuring the speed in km/h.
  - name: Location
    description: >-
      Object describing a geographic location. A location can either be a point
      or an area.
  - name: Actor
    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.
  - name: Consignment
    description: >-
      A consignment is a description of an identifiable collection of goods
      items to be transported between the consignor

      and the consignee. This information may be defined within a transport
      contract.
  - name: Trip
    description: >
      A Trip is an aggregate entity that combines various entities to model
      visiting various locations, potentially doing

      one or multiple actions on each location, such as loading or unloading
      consignments. It is optionally coupled to a

      `Vehicle` that is/was driving this trip.
  - name: Event
    description: >-
      Events - like actions - model _dynamic_ entities that couple various
      _static_ entities at a certain moment in
       time. Events are used for either real-time updates, or updates on earlier provided data. Notice that in both
       event types these are _updates_ on earlier provided data, whereas actions are usually used together with the
       entities they dynamically couple.

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

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

      **Both real-time and projected/realized events**

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

      **Updates on earlier provided data**:
       - The **UpdateEvent** that is used to update an earlier provided entity with new information. Note that only the changed data has to be provided.
       - The **AssociationCreatedEvent** and **AssociationRemovedEvent** that allow for _static_ entities to be coupled after the fact. Such as coupling a Vehicle to a Trip.
  - name: Action
    description: >-
      Actions are _dynamic_ entities that are able to couple together various
      _static_ entities at a certain moment in
       time. For instance a Load action couples together a Consignment and a Vehicle at the moment the Loading happens.

       There are various types of Actions:
       - The **Stop** that models visiting a certain location at a certain time and potentially doing several other actions at that location.
       - The **Load** action, that models loading in one or multiple Consignments into a vehicle or some sort of container.
       - The **Unload** action, that models unloading one or multiple Consignments from a vehicle or some other sort of container.
       - The **HandOver** that indicates transferring a consignment from one Actor to another.
       - The **Move** that models moving between two or more locations, potentially with detailed route information on _how_ to move between these locations.
       - The **AttachTransportEquipment** that allows you to attach some equipment to the associated vehicle. Note that you can both
         load/unload and attach/detach TransportEquipments. For instance loading a container on a ship, or attach a trailer to a truck. So choose the one that is most appropriate.
       - The **DetachTransportEquipment** that allows you to detach some previously attached equipment from the associated vehicle.
       - The **Break** action that models a mandatory resting period for the driver of the vehicle. During this period
         the driver is prohibited from doing any driving activities or other work.
       - The **Wait** action that models waiting at a particular location during the trip. This can be due to various
         circumstances such as waiting for the vehicle to be transported by a ferry or train. Or because of waiting at
         frontiers or docks (e.g. the dock of the loading/unload location is occupied) or traffic prohibitions. The
         driver is allowed to leave the vehicle during this period. An important aspect distinguishing this from the
         _break_ action is that waiting times can be shortened because of changing circumstances. For example, if the
         original waiting time was expected to be 15 minutes because of an occupied dock, but the driver is 10 minutes
         late, the waiting time can be shortened to 5 minutes until the dock is free.
       - The **GenericAction** for whenever any of the above actions cannot model the situation appropriately.
  - name: Goods
    description: >-
      Goods are the items to be transported as part of a consignment. Goods can
      be divided into two sub-types
       of goods, depending on the use case and the level of detail. Goods either consists of items, describing the
       actual goods to be transported. Or a transport equipment, which is equipment used to carry the actual goods to
       be transported. Transport equipment is (usually) a means to an end, not something that needs to be transported
       on itself, such as pallets.

       Note that goods can either be or contain dangerous goods. OTM uses the official specification of
       [ADR](https://unece.org/transportdangerous-goods/adr-2021-files) to describe in what manner and how dangerous
       those goods are. The used descriptions in the OTM documentation are extracted from document
       [ADR2021_Vol1e_0.pdf](https://unece.org/sites/default/files/2021-01/ADR2021_Vol1e_0.pdf). The official
       documentation is always leading and should be consulted.
  - name: TransportOrder
    description: >-
      The TransportOrder is the top-level entity to model a group of related
      consignments that might be transported

      separately, but need to be administered together. For consistency, even if
      there is only one consignment,

      it is still required to use a transport order.
  - name: Document
    description: >
      In many logistic operations documents are an important part of the data
      flow. Documents can serve multiple

      purposes, such as proving some package was delivered with help of a photo,
      or some scanned document that

      establishes that the transferred goods are accepted on handover. Documents
      in OTM come in two flavors, either

      you provide the content of the document directly as a base64 encoded
      string, or you provide a link to the

      document where it can be accessed online.
  - name: Constraint
    description: >2
       `Constraints` can do different things, depending on the context they're used in:
        - In the context of a `Location`, access to the location is only allowed if the given constraint applies.
        - In the context of a `Trip`, constraints can be used to define constraints that have to be met during the trip, e.g. if the temperature in
          a refrigerated trailer has to stay below a given maximum during the trip.
        - In the context of a `Shipment`, constraints can be used to e.g. define minimum or maximum temperatures for shipments, or date time
          constraints for delivery.

      Since OTM5.2 the _timeWindowConstraint_ is supported which allows you to
      give (optionally) both the start and end

      time of the window between which something needs to occur. This replaces
      the old style where you had to use an _and_

      constraint in combination with the _startDateTimeConstraint_ and
      _endDateTimeConstraint_. Since the new solution

      is shorter and simpler the _startDateTimeConstraint_ and
      _endDateTimeConstraint_ are **deprecated**.


      Note that constraints can be nested and combined using the
      `andConstraint`, `orConstraint` and `notConstraint`.
paths:
  /api/v5/actors/{UUID}:
    get:
      responses:
        '200':
          description: Returned the entity with the provided UUID
          content:
            application/json:
              schema:
                example:
                  id: 45db6ed0-28a7-4e4a-baba-3d5f8d171103
                  name: Logistics manager
                  contactDetails:
                    - value: Simon Isaac
                      remark: Wants to be called 'Sim'.
                      type: firstName
                    - value: Macan
                      type: lastName
                    - value: '+312012345678'
                      remark: private cellphone of the CEO
                      language: nld
                      type: phone
                    - value: simon@macan
                      type: email
                    - value: NL74BANK5890469479
                      type: iban
                    - value: NL000099998B57
                      type: vatCode
                type: object
                properties:
                  id:
                    description: >-
                      Uniquely identifies this entity. A URI can be assigned by
                      the client to indicate where more information
                       can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
                       required to send it in the request. One can be generated for you by the server.
                    type: string
                  name:
                    description: Name of the entity. For display purposes and search only.
                    type: string
                  creationDate:
                    description: The creation date of this entity.
                    type: string
                  lastModified:
                    description: >-
                      The last modified date of this entity. If none is given
                      the creation date is used instead.
                    type: string
                  contextEvents:
                    description: >-
                      The context events provides some optional information
                      about the events that can provide additional information
                       on the current state of this entity.

                      For example: your system might send ETA information for
                      the arrival of a vehicle on a location. To make it clear

                      what caused this ETA to be updated, we can include some
                      information about what caused this ETA update by including

                      an event as context. If your ETA update was caused by a
                      location update, this event can be included as context. If

                      the ETA was caused by a traffic accident on the route of
                      the vehicle, you can include that event in the context.
                    type: array
                    items:
                      $ref: '#/components/schemas/events'
                  externalAttributes:
                    type: object
                    properties: {}
                    additionalProperties:
                      $ref: '#/components/schemas/unrestricted_json'
                  contactDetails:
                    description: Contact details for this `Actor`.
                    type: array
                    items:
                      oneOf:
                        - $ref: '#/components/schemas/phone'
                        - $ref: '#/components/schemas/mobilePhone'
                        - $ref: '#/components/schemas/email'
                        - $ref: '#/components/schemas/firstName'
                        - $ref: '#/components/schemas/lastName'
                        - $ref: '#/components/schemas/name'
                        - $ref: '#/components/schemas/vatCode'
                        - $ref: '#/components/schemas/gln'
                        - $ref: '#/components/schemas/iban'
                        - $ref: '#/components/schemas/eori'
                        - $ref: '#/components/schemas/other'
                      discriminator:
                        propertyName: type
                        mapping:
                          phone: '#/components/schemas/phone'
                          mobilePhone: '#/components/schemas/mobilePhone'
                          email: '#/components/schemas/email'
                          firstName: '#/components/schemas/firstName'
                          lastName: '#/components/schemas/lastName'
                          name: '#/components/schemas/name'
                          vatCode: '#/components/schemas/vatCode'
                          gln: '#/components/schemas/gln'
                          iban: '#/components/schemas/iban'
                          eori: '#/components/schemas/eori'
                          other: '#/components/schemas/other'
                  locations:
                    description: Locations for this `Actor`.
                    type: array
                    items:
                      oneOf:
                        - $ref: '#/components/schemas/associated-locations-inline'
                        - $ref: '#/components/schemas/reference'
                        - $ref: '#/components/schemas/attributeRestriction'
                      discriminator:
                        propertyName: associationType
                        mapping:
                          inline: '#/components/schemas/associated-locations-inline'
                          reference: '#/components/schemas/reference'
                          attributeRestriction: '#/components/schemas/attributeRestriction'
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientError'
        '404':
          description: ''
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serverError'
      summary: Get a specific Actor by its UUID
      parameters:
        - name: UUID
          in: path
          schema:
            type: string
            format: uuid
          description: The unique UUID of this Actor
          required: true
      tags:
        - Actor
      security:
        - BearerToken: []
    delete:
      responses:
        '204':
          description: Deleted actor with the provided UUID
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientError'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serverError'
      summary: Deletes a Actor
      parameters:
        - name: UUID
          in: path
          schema:
            type: string
            format: uuid
          description: The unique UUID of the Actor to be deleted
          required: true
      tags:
        - Actor
      security:
        - BearerToken: []
  /api/v5/actors:
    put:
      responses:
        '200':
          description: The same entity
          content:
            application/json:
              schema:
                example:
                  id: 45db6ed0-28a7-4e4a-baba-3d5f8d171103
                  name: Logistics manager
                  contactDetails:
                    - value: Simon Isaac
                      remark: Wants to be called 'Sim'.
                      type: firstName
                    - value: Macan
                      type: lastName
                    - value: '+312012345678'
                      remark: private cellphone of the CEO
                      language: nld
                      type: phone
                    - value: simon@macan
                      type: email
                    - value: NL74BANK5890469479
                      type: iban
                    - value: NL000099998B57
                      type: vatCode
                type: object
                properties:
                  id:
                    description: >-
                      Uniquely identifies this entity. A URI can be assigned by
                      the client to indicate where more information
                       can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
                       required to send it in the request. One can be generated for you by the server.
                    type: string
                  name:
                    description: Name of the entity. For display purposes and search only.
                    type: string
                  creationDate:
                    description: The creation date of this entity.
                    type: string
                  lastModified:
                    description: >-
                      The last modified date of this entity. If none is given
                      the creation date is used instead.
                    type: string
                  contextEvents:
                    description: >-
                      The context events provides some optional information
                      about the events that can provide additional information
                       on the current state of this entity.

                      For example: your system might send ETA information for
                      the arrival of a vehicle on a location. To make it clear

                      what caused this ETA to be updated, we can include some
                      information about what caused this ETA update by including

                      an event as context. If your ETA update was caused by a
                      location update, this event can be included as context. If

                      the ETA was caused by a traffic accident on the route of
                      the vehicle, you can include that event in the context.
                    type: array
                    items:
                      $ref: '#/components/schemas/events'
                  externalAttributes:
                    type: object
                    properties: {}
                    additionalProperties:
                      $ref: '#/components/schemas/unrestricted_json'
                  contactDetails:
                    description: Contact details for this `Actor`.
                    type: array
                    items:
                      oneOf:
                        - $ref: '#/components/schemas/phone'
                        - $ref: '#/components/schemas/mobilePhone'
                        - $ref: '#/components/schemas/email'
                        - $ref: '#/components/schemas/firstName'
                        - $ref: '#/components/schemas/lastName'
                        - $ref: '#/components/schemas/name'
                        - $ref: '#/components/schemas/vatCode'
                        - $ref: '#/components/schemas/gln'
                        - $ref: '#/components/schemas/iban'
                        - $ref: '#/components/schemas/eori'
                        - $ref: '#/components/schemas/other'
                      discriminator:
                        propertyName: type
                        mapping:
                          phone: '#/components/schemas/phone'
                          mobilePhone: '#/components/schemas/mobilePhone'
                          email: '#/components/schemas/email'
                          firstName: '#/components/schemas/firstName'
                          lastName: '#/components/schemas/lastName'
                          name: '#/components/schemas/name'
                          vatCode: '#/components/schemas/vatCode'
                          gln: '#/components/schemas/gln'
                          iban: '#/components/schemas/iban'
                          eori: '#/components/schemas/eori'
                          other: '#/components/schemas/other'
                  locations:
                    description: Locations for this `Actor`.
                    type: array
                    items:
                      oneOf:
                        - $ref: '#/components/schemas/associated-locations-inline'
                        - $ref: '#/components/schemas/reference'
                        - $ref: '#/components/schemas/attributeRestriction'
                      discriminator:
                        propertyName: associationType
                        mapping:
                          inline: '#/components/schemas/associated-locations-inline'
                          reference: '#/components/schemas/reference'
                          attributeRestriction: '#/components/schemas/attributeRestriction'
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientError'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serverError'
      summary: Adds a new Actor
      requestBody:
        content:
          application/json:
            schema:
              example:
                id: 45db6ed0-28a7-4e4a-baba-3d5f8d171103
                name: Logistics manager
                contactDetails:
                  - value: Simon Isaac
                    remark: Wants to be called 'Sim'.
                    type: firstName
                  - value: Macan
                    type: lastName
                  - value: '+312012345678'
                    remark: private cellphone of the CEO
                    language: nld
                    type: phone
                  - value: simon@macan
                    type: email
                  - value: NL74BANK5890469479
                    type: iban
                  - value: NL000099998B57
                    type: vatCode
              type: object
              properties:
                id:
                  description: >-
                    Uniquely identifies this entity. A URI can be assigned by
                    the client to indicate where more information
                     can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
                     required to send it in the request. One can be generated for you by the server.
                  type: string
                name:
                  description: Name of the entity. For display purposes and search only.
                  type: string
                creationDate:
                  description: The creation date of this entity.
                  type: string
                lastModified:
                  description: >-
                    The last modified date of this entity. If none is given the
                    creation date is used instead.
                  type: string
                contextEvents:
                  description: >-
                    The context events provides some optional information about
                    the events that can provide additional information
                     on the current state of this entity.

                    For example: your system might send ETA information for the
                    arrival of a vehicle on a location. To make it clear

                    what caused this ETA to be updated, we can include some
                    information about what caused this ETA update by including

                    an event as context. If your ETA update was caused by a
                    location update, this event can be included as context. If

                    the ETA was caused by a traffic accident on the route of the
                    vehicle, you can include that event in the context.
                  type: array
                  items:
                    $ref: '#/components/schemas/events'
                externalAttributes:
                  type: object
                  properties: {}
                  additionalProperties:
                    $ref: '#/components/schemas/unrestricted_json'
                contactDetails:
                  description: Contact details for this `Actor`.
                  type: array
                  items:
                    oneOf:
                      - $ref: '#/components/schemas/phone'
                      - $ref: '#/components/schemas/mobilePhone'
                      - $ref: '#/components/schemas/email'
                      - $ref: '#/components/schemas/firstName'
                      - $ref: '#/components/schemas/lastName'
                      - $ref: '#/components/schemas/name'
                      - $ref: '#/components/schemas/vatCode'
                      - $ref: '#/components/schemas/gln'
                      - $ref: '#/components/schemas/iban'
                      - $ref: '#/components/schemas/eori'
                      - $ref: '#/components/schemas/other'
                    discriminator:
                      propertyName: type
                      mapping:
                        phone: '#/components/schemas/phone'
                        mobilePhone: '#/components/schemas/mobilePhone'
                        email: '#/components/schemas/email'
                        firstName: '#/components/schemas/firstName'
                        lastName: '#/components/schemas/lastName'
                        name: '#/components/schemas/name'
                        vatCode: '#/components/schemas/vatCode'
                        gln: '#/components/schemas/gln'
                        iban: '#/components/schemas/iban'
                        eori: '#/components/schemas/eori'
                        other: '#/components/schemas/other'
                locations:
                  description: Locations for this `Actor`.
                  type: array
                  items:
                    oneOf:
                      - $ref: '#/components/schemas/associated-locations-inline'
                      - $ref: '#/components/schemas/reference'
                      - $ref: '#/components/schemas/attributeRestriction'
                    discriminator:
                      propertyName: associationType
                      mapping:
                        inline: '#/components/schemas/associated-locations-inline'
                        reference: '#/components/schemas/reference'
                        attributeRestriction: '#/components/schemas/attributeRestriction'
      tags:
        - Actor
      security:
        - BearerToken: []
  /api/v5/constraints/{UUID}:
    get:
      responses:
        '200':
          description: Returned the entity with the provided UUID
          content:
            application/json:
              schema:
                example:
                  id: 89a7bb4d-8720-4db9-aef7-4c3309186c3e
                  name: Example combined constraint
                  value:
                    and:
                      - startTime: '2021-06-23T10:00:00Z'
                        endTime: '2021-06-23T13:00:00Z'
                        description: alert-threshold
                        type: timeWindowConstraint
                      - constraintType: maximum
                        maximum:
                          value: 5
                          unit: C
                        type: temperatureConstraint
                      - or:
                          - fuelTypes:
                              - battery
                            type: fuelTypeConstraint
                          - fuelTypes:
                              - biodiesel
                            type: fuelTypeConstraint
                          - minimum: euro5
                            type: emissionStandardConstraint
                        type: orConstraint
                    type: andConstraint
                type: object
                properties:
                  id:
                    description: >-
                      Uniquely identifies this entity. A URI can be assigned by
                      the client to indicate where more information
                       can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
                       required to send it in the request. One can be generated for you by the server.
                    type: string
                  name:
                    description: Name of the entity. For display purposes and search only.
                    type: string
                  creationDate:
                    description: The creation date of this entity.
                    type: string
                  lastModified:
                    description: >-
                      The last modified date of this entity. If none is given
                      the creation date is used instead.
                    type: string
                  contextEvents:
                    description: >-
                      The context events provides some optional information
                      about the events that can provide additional information
                       on the current state of this entity.

                      For example: your system might send ETA information for
                      the arrival of a vehicle on a location. To make it clear

                      what caused this ETA to be updated, we can include some
                      information about what caused this ETA update by including

                      an event as context. If your ETA update was caused by a
                      location update, this event can be included as context. If

                      the ETA was caused by a traffic accident on the route of
                      the vehicle, you can include that event in the context.
                    type: array
                    items:
                      $ref: '#/components/schemas/events'
                  value:
                    $ref: '#/components/schemas/constraintValue'
                  enforceability:
                    description: >-
                      The enforceability of the constraint. Indicates whether or
                      not the constraint is a suggestion/preference or something
                      that is mandatory to adhere to.
                    default: enforced
                    type: string
                    enum:
                      - enforced
                      - preference
                  externalAttributes:
                    description: >
                      External attributes are a simple way to add information in
                      an OpenTripModel message that could not fit into one of
                        the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
                        ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

                       > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
                         it was intended.
                    type: object
                    properties: {}
                    additionalProperties:
                      $ref: '#/components/schemas/unrestricted_json'
                required:
                  - value
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientError'
        '404':
          description: ''
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serverError'
      summary: Get a specific Constraint by its UUID
      parameters:
        - name: UUID
          in: path
          schema:
            type: string
            format: uuid
          description: The unique UUID of this Constraint
          required: true
      tags:
        - Constraint
      security:
        - BearerToken: []
    delete:
      responses:
        '204':
          description: Deleted constraint with the provided UUID
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientError'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serverError'
      summary: Deletes a Constraint
      parameters:
        - name: UUID
          in: path
          schema:
            type: string
            format: uuid
          description: The unique UUID of the Constraint to be deleted
          required: true
      tags:
        - Constraint
      security:
        - BearerToken: []
  /api/v5/constraints:
    put:
      responses:
        '200':
          description: The same entity
          content:
            application/json:
              schema:
                example:
                  id: 89a7bb4d-8720-4db9-aef7-4c3309186c3e
                  name: Example combined constraint
                  value:
                    and:
                      - startTime: '2021-06-23T10:00:00Z'
                        endTime: '2021-06-23T13:00:00Z'
                        description: alert-threshold
                        type: timeWindowConstraint
                      - constraintType: maximum
                        maximum:
                          value: 5
                          unit: C
                        type: temperatureConstraint
                      - or:
                          - fuelTypes:
                              - battery
                            type: fuelTypeConstraint
                          - fuelTypes:
                              - biodiesel
                            type: fuelTypeConstraint
                          - minimum: euro5
                            type: emissionStandardConstraint
                        type: orConstraint
                    type: andConstraint
                type: object
                properties:
                  id:
                    description: >-
                      Uniquely identifies this entity. A URI can be assigned by
                      the client to indicate where more information
                       can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
                       required to send it in the request. One can be generated for you by the server.
                    type: string
                  name:
                    description: Name of the entity. For display purposes and search only.
                    type: string
                  creationDate:
                    description: The creation date of this entity.
                    type: string
                  lastModified:
                    description: >-
                      The last modified date of this entity. If none is given
                      the creation date is used instead.
                    type: string
                  contextEvents:
                    description: >-
                      The context events provides some optional information
                      about the events that can provide additional information
                       on the current state of this entity.

                      For example: your system might send ETA information for
                      the arrival of a vehicle on a location. To make it clear

                      what caused this ETA to be updated, we can include some
                      information about what caused this ETA update by including

                      an event as context. If your ETA update was caused by a
                      location update, this event can be included as context. If

                      the ETA was caused by a traffic accident on the route of
                      the vehicle, you can include that event in the context.
                    type: array
                    items:
                      $ref: '#/components/schemas/events'
                  value:
                    $ref: '#/components/schemas/constraintValue'
                  enforceability:
                    description: >-
                      The enforceability of the constraint. Indicates whether or
                      not the constraint is a suggestion/preference or something
                      that is mandatory to adhere to.
                    default: enforced
                    type: string
                    enum:
                      - enforced
                      - preference
                  externalAttributes:
                    description: >
                      External attributes are a simple way to add information in
                      an OpenTripModel message that could not fit into one of
                        the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
                        ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

                       > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
                         it was intended.
                    type: object
                    properties: {}
                    additionalProperties:
                      $ref: '#/components/schemas/unrestricted_json'
                required:
                  - value
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientError'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serverError'
      summary: Adds a new Constraint
      requestBody:
        content:
          application/json:
            schema:
              example:
                id: 89a7bb4d-8720-4db9-aef7-4c3309186c3e
                name: Example combined constraint
                value:
                  and:
                    - startTime: '2021-06-23T10:00:00Z'
                      endTime: '2021-06-23T13:00:00Z'
                      description: alert-threshold
                      type: timeWindowConstraint
                    - constraintType: maximum
                      maximum:
                        value: 5
                        unit: C
                      type: temperatureConstraint
                    - or:
                        - fuelTypes:
                            - battery
                          type: fuelTypeConstraint
                        - fuelTypes:
                            - biodiesel
                          type: fuelTypeConstraint
                        - minimum: euro5
                          type: emissionStandardConstraint
                      type: orConstraint
                  type: andConstraint
              type: object
              properties:
                id:
                  description: >-
                    Uniquely identifies this entity. A URI can be assigned by
                    the client to indicate where more information
                     can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
                     required to send it in the request. One can be generated for you by the server.
                  type: string
                name:
                  description: Name of the entity. For display purposes and search only.
                  type: string
                creationDate:
                  description: The creation date of this entity.
                  type: string
                lastModified:
                  description: >-
                    The last modified date of this entity. If none is given the
                    creation date is used instead.
                  type: string
                contextEvents:
                  description: >-
                    The context events provides some optional information about
                    the events that can provide additional information
                     on the current state of this entity.

                    For example: your system might send ETA information for the
                    arrival of a vehicle on a location. To make it clear

                    what caused this ETA to be updated, we can include some
                    information about what caused this ETA update by including

                    an event as context. If your ETA update was caused by a
                    location update, this event can be included as context. If

                    the ETA was caused by a traffic accident on the route of the
                    vehicle, you can include that event in the context.
                  type: array
                  items:
                    $ref: '#/components/schemas/events'
                value:
                  $ref: '#/components/schemas/constraintValue'
                enforceability:
                  description: >-
                    The enforceability of the constraint. Indicates whether or
                    not the constraint is a suggestion/preference or something
                    that is mandatory to adhere to.
                  default: enforced
                  type: string
                  enum:
                    - enforced
                    - preference
                externalAttributes:
                  description: >
                    External attributes are a simple way to add information in
                    an OpenTripModel message that could not fit into one of
                      the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
                      ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

                     > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
                       it was intended.
                  type: object
                  properties: {}
                  additionalProperties:
                    $ref: '#/components/schemas/unrestricted_json'
              required:
                - value
      tags:
        - Constraint
      security:
        - BearerToken: []
  /api/v5/locations/{UUID}:
    get:
      responses:
        '200':
          description: Returned the entity with the provided UUID
          content:
            application/json:
              schema:
                example:
                  id: 11c11d75-e114-4b5f-9751-b3a4afa23ecf
                  name: Main warehouse
                  geoReference:
                    lat: 5.4126792
                    lon: 52.1956251
                    type: latLonPointGeoReference
                  type: warehouse
                  administrativeReference:
                    name: Supermarket warehouse
                    street: Valutaboulevard
                    houseNumber: '16'
                    houseNumberAddition: C
                    postalCode: 1825BT
                    city: Amersfoort
                    country: NL
                  contactDetails:
                    - value: '+312012345678'
                      remark: private cellphone of the CEO
                      language: nld
                      type: phone
                  remark: The cafe around the corner has the best coffee in town.
                type: object
                properties:
                  id:
                    description: >-
                      Uniquely identifies this entity. A URI can be assigned by
                      the client to indicate where more information
                       can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
                       required to send it in the request. One can be generated for you by the server.
                    type: string
                  name:
                    description: Name of the entity. For display purposes and search only.
                    type: string
                  creationDate:
                    description: The creation date of this entity.
                    type: string
                  lastModified:
                    description: >-
                      The last modified date of this entity. If none is given
                      the creation date is used instead.
                    type: string
                  contextEvents:
                    description: >-
                      The context events provides some optional information
                      about the events that can provide additional information
                       on the current state of this entity.

                      For example: your system might send ETA information for
                      the arrival of a vehicle on a location. To make it clear

                      what caused this ETA to be updated, we can include some
                      information about what caused this ETA update by including

                      an event as context. If your ETA update was caused by a
                      location update, this event can be included as context. If

                      the ETA was caused by a traffic accident on the route of
                      the vehicle, you can include that event in the context.
                    type: array
                    items:
                      $ref: '#/components/schemas/events'
                  geoReference:
                    description: >-
                      Describes a geographic reference, this is the primary way
                      to link a `Location` entity to a physical, geographic
                      location.
                    oneOf:
                      - $ref: '#/components/schemas/latLonPointGeoReference'
                      - $ref: '#/components/schemas/latLonArrayGeoReference'
                      - $ref: '#/components/schemas/Feature'
                      - $ref: '#/components/schemas/openLRGeoReference'
                      - $ref: '#/components/schemas/tmcLocationGeoReference'
                      - $ref: '#/components/schemas/tmcArrayGeoReference'
                      - $ref: '#/components/schemas/addressGeoReference'
                    discriminator:
                      propertyName: type
                      mapping:
                        latLonPointGeoReference: '#/components/schemas/latLonPointGeoReference'
                        latLonArrayGeoReference: '#/components/schemas/latLonArrayGeoReference'
                        Feature: '#/components/schemas/Feature'
                        openLRGeoReference: '#/components/schemas/openLRGeoReference'
                        tmcLocationGeoReference: '#/components/schemas/tmcLocationGeoReference'
                        tmcArrayGeoReference: '#/components/schemas/tmcArrayGeoReference'
                        addressGeoReference: '#/components/schemas/addressGeoReference'
                  externalAttributes:
                    type: object
                    properties: {}
                    additionalProperties:
                      $ref: '#/components/schemas/unrestricted_json'
                  unCode:
                    description: >-
                      the United Nations Code for Trade and Transport Locations,
                      is a geographic coding scheme developed and
                       maintained by United Nations Economic Commission for Europe (UNECE) to uniquely identify locations. See
                       [this Wikipedia page](https://en.wikipedia.org/wiki/UN/LOCODE).
                    type: string
                  gln:
                    description: >-
                      The Global Location Number (GLN) is part of the GS1
                      systems of standards to uniquely identify a location. See
                       also this [Wikipedia page](https://en.wikipedia.org/wiki/Global_Location_Number)
                    type: string
                  type:
                    description: The type of location.
                    type: string
                    enum:
                      - warehouse
                      - store
                      - environmentalZone
                      - restrictedArea
                      - customer
                      - operationalBase
                      - fuelStation
                      - serviceStation
                      - other
                  otherLocationType:
                    description: >-
                      Description of the location in case type of location is
                      set to 'other'.
                    type: string
                  administrativeReference:
                    description: >-
                      Address information that is used as an administrative
                      reference. For example: when the actual load location is
                      different from the officially registered location, this
                      holds the latter
                    allOf:
                      - $ref: '#/components/schemas/Address'
                  contactDetails:
                    description: Contact details for this `Location`.
                    type: array
                    items:
                      oneOf:
                        - $ref: '#/components/schemas/phone'
                        - $ref: '#/components/schemas/mobilePhone'
                        - $ref: '#/components/schemas/email'
                        - $ref: '#/components/schemas/firstName'
                        - $ref: '#/components/schemas/lastName'
                        - $ref: '#/components/schemas/name'
                        - $ref: '#/components/schemas/vatCode'
                        - $ref: '#/components/schemas/gln'
                        - $ref: '#/components/schemas/iban'
                        - $ref: '#/components/schemas/eori'
                        - $ref: '#/components/schemas/other'
                      discriminator:
                        propertyName: type
                        mapping:
                          phone: '#/components/schemas/phone'
                          mobilePhone: '#/components/schemas/mobilePhone'
                          email: '#/components/schemas/email'
                          firstName: '#/components/schemas/firstName'
                          lastName: '#/components/schemas/lastName'
                          name: '#/components/schemas/name'
                          vatCode: '#/components/schemas/vatCode'
                          gln: '#/components/schemas/gln'
                          iban: '#/components/schemas/iban'
                          eori: '#/components/schemas/eori'
                          other: '#/components/schemas/other'
                  remark:
                    description: >-
                      Remark about the location. Please don't misuse this field
                      for external references, use the `externalAttributes`
                      field instead.
                    type: string
                  subLocations:
                    description: >-
                      The locations that are can be identified on their own, but
                      are also part of this location. For example a dock at

                      a large distribution area. Sub-locations can also be seen
                      as 'points of interest' on a larger location.
                    type: array
                    items:
                      oneOf:
                        - $ref: '#/components/schemas/associated-locations-inline'
                        - $ref: '#/components/schemas/reference'
                        - $ref: '#/components/schemas/attributeRestriction'
                      discriminator:
                        propertyName: associationType
                        mapping:
                          inline: '#/components/schemas/associated-locations-inline'
                          reference: '#/components/schemas/reference'
                          attributeRestriction: '#/components/schemas/attributeRestriction'
                  actors:
                    description: >-
                      Locations can be associated with actors in multiple ways,
                      though the most common one is the _owner_ of the location,
                      either a person or a legal entity.
                    type: array
                    items:
                      oneOf:
                        - $ref: '#/components/schemas/associated-actors-inline'
                        - $ref: '#/components/schemas/reference-roles'
                        - $ref: '#/components/schemas/attributeRestriction-roles'
                      discriminator:
                        propertyName: associationType
                        mapping:
                          inline: '#/components/schemas/associated-actors-inline'
                          reference: '#/components/schemas/reference-roles'
                          attributeRestriction: '#/components/schemas/attributeRestriction-roles'
                  actions:
                    description: >-
                      Multiple actions can be associated with a location, such
                      as a Last-Mile guidance that should be followed to reach
                      that location.
                    type: array
                    items:
                      $ref: '#/components/schemas/associations-actions'
                  constraint:
                    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`.
                    oneOf:
                      - $ref: '#/components/schemas/location-constraint-inline'
                      - $ref: '#/components/schemas/reference'
                      - $ref: '#/components/schemas/attributeRestriction'
                    discriminator:
                      propertyName: associationType
                      mapping:
                        inline: '#/components/schemas/location-constraint-inline'
                        reference: '#/components/schemas/reference'
                        attributeRestriction: '#/components/schemas/attributeRestriction'
                required:
                  - geoReference
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientError'
        '404':
          description: ''
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serverError'
      summary: Get a specific Location by its UUID
      parameters:
        - name: UUID
          in: path
          schema:
            type: string
            format: uuid
          description: The unique UUID of this Location
          required: true
      tags:
        - Location
      security:
        - BearerToken: []
    delete:
      responses:
        '204':
          description: Deleted location with the provided UUID
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientError'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serverError'
      summary: Deletes a Location
      parameters:
        - name: UUID
          in: path
          schema:
            type: string
            format: uuid
          description: The unique UUID of the Location to be deleted
          required: true
      tags:
        - Location
      security:
        - BearerToken: []
  /api/v5/locations:
    put:
      responses:
        '200':
          description: The same entity
          content:
            application/json:
              schema:
                example:
                  id: 11c11d75-e114-4b5f-9751-b3a4afa23ecf
                  name: Main warehouse
                  geoReference:
                    lat: 5.4126792
                    lon: 52.1956251
                    type: latLonPointGeoReference
                  type: warehouse
                  administrativeReference:
                    name: Supermarket warehouse
                    street: Valutaboulevard
                    houseNumber: '16'
                    houseNumberAddition: C
                    postalCode: 1825BT
                    city: Amersfoort
                    country: NL
                  contactDetails:
                    - value: '+312012345678'
                      remark: private cellphone of the CEO
                      language: nld
                      type: phone
                  remark: The cafe around the corner has the best coffee in town.
                type: object
                properties:
                  id:
                    description: >-
                      Uniquely identifies this entity. A URI can be assigned by
                      the client to indicate where more information
                       can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
                       required to send it in the request. One can be generated for you by the server.
                    type: string
                  name:
                    description: Name of the entity. For display purposes and search only.
                    type: string
                  creationDate:
                    description: The creation date of this entity.
                    type: string
                  lastModified:
                    description: >-
                      The last modified date of this entity. If none is given
                      the creation date is used instead.
                    type: string
                  contextEvents:
                    description: >-
                      The context events provides some optional information
                      about the events that can provide additional information
                       on the current state of this entity.

                      For example: your system might send ETA information for
                      the arrival of a vehicle on a location. To make it clear

                      what caused this ETA to be updated, we can include some
                      information about what caused this ETA update by including

                      an event as context. If your ETA update was caused by a
                      location update, this event can be included as context. If

                      the ETA was caused by a traffic accident on the route of
                      the vehicle, you can include that event in the context.
                    type: array
                    items:
                      $ref: '#/components/schemas/events'
                  geoReference:
                    description: >-
                      Describes a geographic reference, this is the primary way
                      to link a `Location` entity to a physical, geographic
                      location.
                    oneOf:
                      - $ref: '#/components/schemas/latLonPointGeoReference'
                      - $ref: '#/components/schemas/latLonArrayGeoReference'
                      - $ref: '#/components/schemas/Feature'
                      - $ref: '#/components/schemas/openLRGeoReference'
                      - $ref: '#/components/schemas/tmcLocationGeoReference'
                      - $ref: '#/components/schemas/tmcArrayGeoReference'
                      - $ref: '#/components/schemas/addressGeoReference'
                    discriminator:
                      propertyName: type
                      mapping:
                        latLonPointGeoReference: '#/components/schemas/latLonPointGeoReference'
                        latLonArrayGeoReference: '#/components/schemas/latLonArrayGeoReference'
                        Feature: '#/components/schemas/Feature'
                        openLRGeoReference: '#/components/schemas/openLRGeoReference'
                        tmcLocationGeoReference: '#/components/schemas/tmcLocationGeoReference'
                        tmcArrayGeoReference: '#/components/schemas/tmcArrayGeoReference'
                        addressGeoReference: '#/components/schemas/addressGeoReference'
                  externalAttributes:
                    type: object
                    properties: {}
                    additionalProperties:
                      $ref: '#/components/schemas/unrestricted_json'
                  unCode:
                    description: >-
                      the United Nations Code for Trade and Transport Locations,
                      is a geographic coding scheme developed and
                       maintained by United Nations Economic Commission for Europe (UNECE) to uniquely identify locations. See
                       [this Wikipedia page](https://en.wikipedia.org/wiki/UN/LOCODE).
                    type: string
                  gln:
                    description: >-
                      The Global Location Number (GLN) is part of the GS1
                      systems of standards to uniquely identify a location. See
                       also this [Wikipedia page](https://en.wikipedia.org/wiki/Global_Location_Number)
                    type: string
                  type:
                    description: The type of location.
                    type: string
                    enum:
                      - warehouse
                      - store
                      - environmentalZone
                      - restrictedArea
                      - customer
                      - operationalBase
                      - fuelStation
                      - serviceStation
                      - other
                  otherLocationType:
                    description: >-
                      Description of the location in case type of location is
                      set to 'other'.
                    type: string
                  administrativeReference:
                    description: >-
                      Address information that is used as an administrative
                      reference. For example: when the actual load location is
                      different from the officially registered location, this
                      holds the latter
                    allOf:
                      - $ref: '#/components/schemas/Address'
                  contactDetails:
                    description: Contact details for this `Location`.
                    type: array
                    items:
                      oneOf:
                        - $ref: '#/components/schemas/phone'
                        - $ref: '#/components/schemas/mobilePhone'
                        - $ref: '#/components/schemas/email'
                        - $ref: '#/components/schemas/firstName'
                        - $ref: '#/components/schemas/lastName'
                        - $ref: '#/components/schemas/name'
                        - $ref: '#/components/schemas/vatCode'
                        - $ref: '#/components/schemas/gln'
                        - $ref: '#/components/schemas/iban'
                        - $ref: '#/components/schemas/eori'
                        - $ref: '#/components/schemas/other'
                      discriminator:
                        propertyName: type
                        mapping:
                          phone: '#/components/schemas/phone'
                          mobilePhone: '#/components/schemas/mobilePhone'
                          email: '#/components/schemas/email'
                          firstName: '#/components/schemas/firstName'
                          lastName: '#/components/schemas/lastName'
                          name: '#/components/schemas/name'
                          vatCode: '#/components/schemas/vatCode'
                          gln: '#/components/schemas/gln'
                          iban: '#/components/schemas/iban'
                          eori: '#/components/schemas/eori'
                          other: '#/components/schemas/other'
                  remark:
                    description: >-
                      Remark about the location. Please don't misuse this field
                      for external references, use the `externalAttributes`
                      field instead.
                    type: string
                  subLocations:
                    description: >-
                      The locations that are can be identified on their own, but
                      are also part of this location. For example a dock at

                      a large distribution area. Sub-locations can also be seen
                      as 'points of interest' on a larger location.
                    type: array
                    items:
                      oneOf:
                        - $ref: '#/components/schemas/associated-locations-inline'
                        - $ref: '#/components/schemas/reference'
                        - $ref: '#/components/schemas/attributeRestriction'
                      discriminator:
                        propertyName: associationType
                        mapping:
                          inline: '#/components/schemas/associated-locations-inline'
                          reference: '#/components/schemas/reference'
                          attributeRestriction: '#/components/schemas/attributeRestriction'
                  actors:
                    description: >-
                      Locations can be associated with actors in multiple ways,
                      though the most common one is the _owner_ of the location,
                      either a person or a legal entity.
                    type: array
                    items:
                      oneOf:
                        - $ref: '#/components/schemas/associated-actors-inline'
                        - $ref: '#/components/schemas/reference-roles'
                        - $ref: '#/components/schemas/attributeRestriction-roles'
                      discriminator:
                        propertyName: associationType
                        mapping:
                          inline: '#/components/schemas/associated-actors-inline'
                          reference: '#/components/schemas/reference-roles'
                          attributeRestriction: '#/components/schemas/attributeRestriction-roles'
                  actions:
                    description: >-
                      Multiple actions can be associated with a location, such
                      as a Last-Mile guidance that should be followed to reach
                      that location.
                    type: array
                    items:
                      $ref: '#/components/schemas/associations-actions'
                  constraint:
                    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`.
                    oneOf:
                      - $ref: '#/components/schemas/location-constraint-inline'
                      - $ref: '#/components/schemas/reference'
                      - $ref: '#/components/schemas/attributeRestriction'
                    discriminator:
                      propertyName: associationType
                      mapping:
                        inline: '#/components/schemas/location-constraint-inline'
                        reference: '#/components/schemas/reference'
                        attributeRestriction: '#/components/schemas/attributeRestriction'
                required:
                  - geoReference
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientError'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serverError'
      summary: Adds a new Location
      requestBody:
        content:
          application/json:
            schema:
              example:
                id: 11c11d75-e114-4b5f-9751-b3a4afa23ecf
                name: Main warehouse
                geoReference:
                  lat: 5.4126792
                  lon: 52.1956251
                  type: latLonPointGeoReference
                type: warehouse
                administrativeReference:
                  name: Supermarket warehouse
                  street: Valutaboulevard
                  houseNumber: '16'
                  houseNumberAddition: C
                  postalCode: 1825BT
                  city: Amersfoort
                  country: NL
                contactDetails:
                  - value: '+312012345678'
                    remark: private cellphone of the CEO
                    language: nld
                    type: phone
                remark: The cafe around the corner has the best coffee in town.
              type: object
              properties:
                id:
                  description: >-
                    Uniquely identifies this entity. A URI can be assigned by
                    the client to indicate where more information
                     can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
                     required to send it in the request. One can be generated for you by the server.
                  type: string
                name:
                  description: Name of the entity. For display purposes and search only.
                  type: string
                creationDate:
                  description: The creation date of this entity.
                  type: string
                lastModified:
                  description: >-
                    The last modified date of this entity. If none is given the
                    creation date is used instead.
                  type: string
                contextEvents:
                  description: >-
                    The context events provides some optional information about
                    the events that can provide additional information
                     on the current state of this entity.

                    For example: your system might send ETA information for the
                    arrival of a vehicle on a location. To make it clear

                    what caused this ETA to be updated, we can include some
                    information about what caused this ETA update by including

                    an event as context. If your ETA update was caused by a
                    location update, this event can be included as context. If

                    the ETA was caused by a traffic accident on the route of the
                    vehicle, you can include that event in the context.
                  type: array
                  items:
                    $ref: '#/components/schemas/events'
                geoReference:
                  description: >-
                    Describes a geographic reference, this is the primary way to
                    link a `Location` entity to a physical, geographic location.
                  oneOf:
                    - $ref: '#/components/schemas/latLonPointGeoReference'
                    - $ref: '#/components/schemas/latLonArrayGeoReference'
                    - $ref: '#/components/schemas/Feature'
                    - $ref: '#/components/schemas/openLRGeoReference'
                    - $ref: '#/components/schemas/tmcLocationGeoReference'
                    - $ref: '#/components/schemas/tmcArrayGeoReference'
                    - $ref: '#/components/schemas/addressGeoReference'
                  discriminator:
                    propertyName: type
                    mapping:
                      latLonPointGeoReference: '#/components/schemas/latLonPointGeoReference'
                      latLonArrayGeoReference: '#/components/schemas/latLonArrayGeoReference'
                      Feature: '#/components/schemas/Feature'
                      openLRGeoReference: '#/components/schemas/openLRGeoReference'
                      tmcLocationGeoReference: '#/components/schemas/tmcLocationGeoReference'
                      tmcArrayGeoReference: '#/components/schemas/tmcArrayGeoReference'
                      addressGeoReference: '#/components/schemas/addressGeoReference'
                externalAttributes:
                  type: object
                  properties: {}
                  additionalProperties:
                    $ref: '#/components/schemas/unrestricted_json'
                unCode:
                  description: >-
                    the United Nations Code for Trade and Transport Locations,
                    is a geographic coding scheme developed and
                     maintained by United Nations Economic Commission for Europe (UNECE) to uniquely identify locations. See
                     [this Wikipedia page](https://en.wikipedia.org/wiki/UN/LOCODE).
                  type: string
                gln:
                  description: >-
                    The Global Location Number (GLN) is part of the GS1 systems
                    of standards to uniquely identify a location. See
                     also this [Wikipedia page](https://en.wikipedia.org/wiki/Global_Location_Number)
                  type: string
                type:
                  description: The type of location.
                  type: string
                  enum:
                    - warehouse
                    - store
                    - environmentalZone
                    - restrictedArea
                    - customer
                    - operationalBase
                    - fuelStation
                    - serviceStation
                    - other
                otherLocationType:
                  description: >-
                    Description of the location in case type of location is set
                    to 'other'.
                  type: string
                administrativeReference:
                  description: >-
                    Address information that is used as an administrative
                    reference. For example: when the actual load location is
                    different from the officially registered location, this
                    holds the latter
                  allOf:
                    - $ref: '#/components/schemas/Address'
                contactDetails:
                  description: Contact details for this `Location`.
                  type: array
                  items:
                    oneOf:
                      - $ref: '#/components/schemas/phone'
                      - $ref: '#/components/schemas/mobilePhone'
                      - $ref: '#/components/schemas/email'
                      - $ref: '#/components/schemas/firstName'
                      - $ref: '#/components/schemas/lastName'
                      - $ref: '#/components/schemas/name'
                      - $ref: '#/components/schemas/vatCode'
                      - $ref: '#/components/schemas/gln'
                      - $ref: '#/components/schemas/iban'
                      - $ref: '#/components/schemas/eori'
                      - $ref: '#/components/schemas/other'
                    discriminator:
                      propertyName: type
                      mapping:
                        phone: '#/components/schemas/phone'
                        mobilePhone: '#/components/schemas/mobilePhone'
                        email: '#/components/schemas/email'
                        firstName: '#/components/schemas/firstName'
                        lastName: '#/components/schemas/lastName'
                        name: '#/components/schemas/name'
                        vatCode: '#/components/schemas/vatCode'
                        gln: '#/components/schemas/gln'
                        iban: '#/components/schemas/iban'
                        eori: '#/components/schemas/eori'
                        other: '#/components/schemas/other'
                remark:
                  description: >-
                    Remark about the location. Please don't misuse this field
                    for external references, use the `externalAttributes` field
                    instead.
                  type: string
                subLocations:
                  description: >-
                    The locations that are can be identified on their own, but
                    are also part of this location. For example a dock at

                    a large distribution area. Sub-locations can also be seen as
                    'points of interest' on a larger location.
                  type: array
                  items:
                    oneOf:
                      - $ref: '#/components/schemas/associated-locations-inline'
                      - $ref: '#/components/schemas/reference'
                      - $ref: '#/components/schemas/attributeRestriction'
                    discriminator:
                      propertyName: associationType
                      mapping:
                        inline: '#/components/schemas/associated-locations-inline'
                        reference: '#/components/schemas/reference'
                        attributeRestriction: '#/components/schemas/attributeRestriction'
                actors:
                  description: >-
                    Locations can be associated with actors in multiple ways,
                    though the most common one is the _owner_ of the location,
                    either a person or a legal entity.
                  type: array
                  items:
                    oneOf:
                      - $ref: '#/components/schemas/associated-actors-inline'
                      - $ref: '#/components/schemas/reference-roles'
                      - $ref: '#/components/schemas/attributeRestriction-roles'
                    discriminator:
                      propertyName: associationType
                      mapping:
                        inline: '#/components/schemas/associated-actors-inline'
                        reference: '#/components/schemas/reference-roles'
                        attributeRestriction: '#/components/schemas/attributeRestriction-roles'
                actions:
                  description: >-
                    Multiple actions can be associated with a location, such as
                    a Last-Mile guidance that should be followed to reach that
                    location.
                  type: array
                  items:
                    $ref: '#/components/schemas/associations-actions'
                constraint:
                  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`.
                  oneOf:
                    - $ref: '#/components/schemas/location-constraint-inline'
                    - $ref: '#/components/schemas/reference'
                    - $ref: '#/components/schemas/attributeRestriction'
                  discriminator:
                    propertyName: associationType
                    mapping:
                      inline: '#/components/schemas/location-constraint-inline'
                      reference: '#/components/schemas/reference'
                      attributeRestriction: '#/components/schemas/attributeRestriction'
              required:
                - geoReference
      tags:
        - Location
      security:
        - BearerToken: []
  /api/v5/routes/{UUID}:
    get:
      responses:
        '200':
          description: Returned the entity with the provided UUID
          content:
            application/json:
              schema:
                example:
                  id: beb9a25f-3f64-42ae-b1c6-e89cd450f66b
                  name: An example route using coordinates to indicate how to drive.
                  geoReference:
                    geometry:
                      coordinates:
                        - - 1
                          - 0
                        - - 5
                          - 0
                        - - 5
                          - 3
                        - - 13
                          - 3
                        - - 13
                          - 7
                      type: LineString
                    type: Feature
                type: object
                properties:
                  id:
                    description: >-
                      Uniquely identifies this entity. A URI can be assigned by
                      the client to indicate where more information
                       can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
                       required to send it in the request. One can be generated for you by the server.
                    type: string
                  name:
                    description: Name of the entity. For display purposes and search only.
                    type: string
                  creationDate:
                    description: The creation date of this entity.
                    type: string
                  lastModified:
                    description: >-
                      The last modified date of this entity. If none is given
                      the creation date is used instead.
                    type: string
                  contextEvents:
                    description: >-
                      The context events provides some optional information
                      about the events that can provide additional information
                       on the current state of this entity.

                      For example: your system might send ETA information for
                      the arrival of a vehicle on a location. To make it clear

                      what caused this ETA to be updated, we can include some
                      information about what caused this ETA update by including

                      an event as context. If your ETA update was caused by a
                      location update, this event can be included as context. If

                      the ETA was caused by a traffic accident on the route of
                      the vehicle, you can include that event in the context.
                    type: array
                    items:
                      $ref: '#/components/schemas/events'
                  externalAttributes:
                    description: >
                      External attributes are a simple way to add information in
                      an OpenTripModel message that could not fit into one of
                        the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
                        ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

                       > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
                         it was intended.
                    type: object
                    properties: {}
                    additionalProperties:
                      $ref: '#/components/schemas/unrestricted_json'
                  geoReference:
                    description: Geographic representation of this route.
                    oneOf:
                      - $ref: '#/components/schemas/latLonPointGeoReference'
                      - $ref: '#/components/schemas/latLonArrayGeoReference'
                      - $ref: '#/components/schemas/Feature'
                      - $ref: '#/components/schemas/openLRGeoReference'
                      - $ref: '#/components/schemas/tmcLocationGeoReference'
                      - $ref: '#/components/schemas/tmcArrayGeoReference'
                      - $ref: '#/components/schemas/addressGeoReference'
                    discriminator:
                      propertyName: type
                      mapping:
                        latLonPointGeoReference: '#/components/schemas/latLonPointGeoReference'
                        latLonArrayGeoReference: '#/components/schemas/latLonArrayGeoReference'
                        Feature: '#/components/schemas/Feature'
                        openLRGeoReference: '#/components/schemas/openLRGeoReference'
                        tmcLocationGeoReference: '#/components/schemas/tmcLocationGeoReference'
                        tmcArrayGeoReference: '#/components/schemas/tmcArrayGeoReference'
                        addressGeoReference: '#/components/schemas/addressGeoReference'
                  geoReferences:
                    deprecated: true
                    description: >-
                      Geographic representation of this route. This property is
                      deprecated; use geoReferece (not plural) instead.
                    oneOf:
                      - $ref: '#/components/schemas/latLonPointGeoReference'
                      - $ref: '#/components/schemas/latLonArrayGeoReference'
                      - $ref: '#/components/schemas/Feature'
                      - $ref: '#/components/schemas/openLRGeoReference'
                      - $ref: '#/components/schemas/tmcLocationGeoReference'
                      - $ref: '#/components/schemas/tmcArrayGeoReference'
                      - $ref: '#/components/schemas/addressGeoReference'
                    discriminator:
                      propertyName: type
                      mapping:
                        latLonPointGeoReference: '#/components/schemas/latLonPointGeoReference'
                        latLonArrayGeoReference: '#/components/schemas/latLonArrayGeoReference'
                        Feature: '#/components/schemas/Feature'
                        openLRGeoReference: '#/components/schemas/openLRGeoReference'
                        tmcLocationGeoReference: '#/components/schemas/tmcLocationGeoReference'
                        tmcArrayGeoReference: '#/components/schemas/tmcArrayGeoReference'
                        addressGeoReference: '#/components/schemas/addressGeoReference'
                  actors:
                    description: >-
                      Actors associated with this route, for instance the
                      Company that requires this route as a Last-Mile guidance.
                    type: array
                    items:
                      oneOf:
                        - $ref: '#/components/schemas/associated-actors-inline'
                        - $ref: '#/components/schemas/reference-roles'
                        - $ref: '#/components/schemas/attributeRestriction-roles'
                      discriminator:
                        propertyName: associationType
                        mapping:
                          inline: '#/components/schemas/associated-actors-inline'
                          reference: '#/components/schemas/reference-roles'
                          attributeRestriction: '#/components/schemas/attributeRestriction-roles'
                  actions:
                    description: All the actions that need to be executed on this route.
                    type: array
                    items:
                      $ref: '#/components/schemas/associations-actions'
                  constraint:
                    description: >-
                      Constraints of using this route, for instance it might
                      only be used by vehicles with below a certain weight.
                    oneOf:
                      - $ref: '#/components/schemas/route-constraint-inline'
                      - $ref: '#/components/schemas/reference'
                      - $ref: '#/components/schemas/attributeRestriction'
                    discriminator:
                      propertyName: associationType
                      mapping:
                        inline: '#/components/schemas/route-constraint-inline'
                        reference: '#/components/schemas/reference'
                        attributeRestriction: '#/components/schemas/attributeRestriction'
                required:
                  - geoReference
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientError'
        '404':
          description: ''
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serverError'
      summary: Get a specific Route by its UUID
      parameters:
        - name: UUID
          in: path
          schema:
            type: string
            format: uuid
          description: The unique UUID of this Route
          required: true
      tags:
        - Route
      security:
        - BearerToken: []
    delete:
      responses:
        '204':
          description: Deleted route with the provided UUID
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientError'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serverError'
      summary: Deletes a Route
      parameters:
        - name: UUID
          in: path
          schema:
            type: string
            format: uuid
          description: The unique UUID of the Route to be deleted
          required: true
      tags:
        - Route
      security:
        - BearerToken: []
  /api/v5/routes:
    put:
      responses:
        '200':
          description: The same entity
          content:
            application/json:
              schema:
                example:
                  id: beb9a25f-3f64-42ae-b1c6-e89cd450f66b
                  name: An example route using coordinates to indicate how to drive.
                  geoReference:
                    geometry:
                      coordinates:
                        - - 1
                          - 0
                        - - 5
                          - 0
                        - - 5
                          - 3
                        - - 13
                          - 3
                        - - 13
                          - 7
                      type: LineString
                    type: Feature
                type: object
                properties:
                  id:
                    description: >-
                      Uniquely identifies this entity. A URI can be assigned by
                      the client to indicate where more information
                       can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
                       required to send it in the request. One can be generated for you by the server.
                    type: string
                  name:
                    description: Name of the entity. For display purposes and search only.
                    type: string
                  creationDate:
                    description: The creation date of this entity.
                    type: string
                  lastModified:
                    description: >-
                      The last modified date of this entity. If none is given
                      the creation date is used instead.
                    type: string
                  contextEvents:
                    description: >-
                      The context events provides some optional information
                      about the events that can provide additional information
                       on the current state of this entity.

                      For example: your system might send ETA information for
                      the arrival of a vehicle on a location. To make it clear

                      what caused this ETA to be updated, we can include some
                      information about what caused this ETA update by including

                      an event as context. If your ETA update was caused by a
                      location update, this event can be included as context. If

                      the ETA was caused by a traffic accident on the route of
                      the vehicle, you can include that event in the context.
                    type: array
                    items:
                      $ref: '#/components/schemas/events'
                  externalAttributes:
                    description: >
                      External attributes are a simple way to add information in
                      an OpenTripModel message that could not fit into one of
                        the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
                        ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

                       > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
                         it was intended.
                    type: object
                    properties: {}
                    additionalProperties:
                      $ref: '#/components/schemas/unrestricted_json'
                  geoReference:
                    description: Geographic representation of this route.
                    oneOf:
                      - $ref: '#/components/schemas/latLonPointGeoReference'
                      - $ref: '#/components/schemas/latLonArrayGeoReference'
                      - $ref: '#/components/schemas/Feature'
                      - $ref: '#/components/schemas/openLRGeoReference'
                      - $ref: '#/components/schemas/tmcLocationGeoReference'
                      - $ref: '#/components/schemas/tmcArrayGeoReference'
                      - $ref: '#/components/schemas/addressGeoReference'
                    discriminator:
                      propertyName: type
                      mapping:
                        latLonPointGeoReference: '#/components/schemas/latLonPointGeoReference'
                        latLonArrayGeoReference: '#/components/schemas/latLonArrayGeoReference'
                        Feature: '#/components/schemas/Feature'
                        openLRGeoReference: '#/components/schemas/openLRGeoReference'
                        tmcLocationGeoReference: '#/components/schemas/tmcLocationGeoReference'
                        tmcArrayGeoReference: '#/components/schemas/tmcArrayGeoReference'
                        addressGeoReference: '#/components/schemas/addressGeoReference'
                  geoReferences:
                    deprecated: true
                    description: >-
                      Geographic representation of this route. This property is
                      deprecated; use geoReferece (not plural) instead.
                    oneOf:
                      - $ref: '#/components/schemas/latLonPointGeoReference'
                      - $ref: '#/components/schemas/latLonArrayGeoReference'
                      - $ref: '#/components/schemas/Feature'
                      - $ref: '#/components/schemas/openLRGeoReference'
                      - $ref: '#/components/schemas/tmcLocationGeoReference'
                      - $ref: '#/components/schemas/tmcArrayGeoReference'
                      - $ref: '#/components/schemas/addressGeoReference'
                    discriminator:
                      propertyName: type
                      mapping:
                        latLonPointGeoReference: '#/components/schemas/latLonPointGeoReference'
                        latLonArrayGeoReference: '#/components/schemas/latLonArrayGeoReference'
                        Feature: '#/components/schemas/Feature'
                        openLRGeoReference: '#/components/schemas/openLRGeoReference'
                        tmcLocationGeoReference: '#/components/schemas/tmcLocationGeoReference'
                        tmcArrayGeoReference: '#/components/schemas/tmcArrayGeoReference'
                        addressGeoReference: '#/components/schemas/addressGeoReference'
                  actors:
                    description: >-
                      Actors associated with this route, for instance the
                      Company that requires this route as a Last-Mile guidance.
                    type: array
                    items:
                      oneOf:
                        - $ref: '#/components/schemas/associated-actors-inline'
                        - $ref: '#/components/schemas/reference-roles'
                        - $ref: '#/components/schemas/attributeRestriction-roles'
                      discriminator:
                        propertyName: associationType
                        mapping:
                          inline: '#/components/schemas/associated-actors-inline'
                          reference: '#/components/schemas/reference-roles'
                          attributeRestriction: '#/components/schemas/attributeRestriction-roles'
                  actions:
                    description: All the actions that need to be executed on this route.
                    type: array
                    items:
                      $ref: '#/components/schemas/associations-actions'
                  constraint:
                    description: >-
                      Constraints of using this route, for instance it might
                      only be used by vehicles with below a certain weight.
                    oneOf:
                      - $ref: '#/components/schemas/route-constraint-inline'
                      - $ref: '#/components/schemas/reference'
                      - $ref: '#/components/schemas/attributeRestriction'
                    discriminator:
                      propertyName: associationType
                      mapping:
                        inline: '#/components/schemas/route-constraint-inline'
                        reference: '#/components/schemas/reference'
                        attributeRestriction: '#/components/schemas/attributeRestriction'
                required:
                  - geoReference
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientError'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serverError'
      summary: Adds a new Route
      requestBody:
        content:
          application/json:
            schema:
              example:
                id: beb9a25f-3f64-42ae-b1c6-e89cd450f66b
                name: An example route using coordinates to indicate how to drive.
                geoReference:
                  geometry:
                    coordinates:
                      - - 1
                        - 0
                      - - 5
                        - 0
                      - - 5
                        - 3
                      - - 13
                        - 3
                      - - 13
                        - 7
                    type: LineString
                  type: Feature
              type: object
              properties:
                id:
                  description: >-
                    Uniquely identifies this entity. A URI can be assigned by
                    the client to indicate where more information
                     can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
                     required to send it in the request. One can be generated for you by the server.
                  type: string
                name:
                  description: Name of the entity. For display purposes and search only.
                  type: string
                creationDate:
                  description: The creation date of this entity.
                  type: string
                lastModified:
                  description: >-
                    The last modified date of this entity. If none is given the
                    creation date is used instead.
                  type: string
                contextEvents:
                  description: >-
                    The context events provides some optional information about
                    the events that can provide additional information
                     on the current state of this entity.

                    For example: your system might send ETA information for the
                    arrival of a vehicle on a location. To make it clear

                    what caused this ETA to be updated, we can include some
                    information about what caused this ETA update by including

                    an event as context. If your ETA update was caused by a
                    location update, this event can be included as context. If

                    the ETA was caused by a traffic accident on the route of the
                    vehicle, you can include that event in the context.
                  type: array
                  items:
                    $ref: '#/components/schemas/events'
                externalAttributes:
                  description: >
                    External attributes are a simple way to add information in
                    an OpenTripModel message that could not fit into one of
                      the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
                      ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

                     > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
                       it was intended.
                  type: object
                  properties: {}
                  additionalProperties:
                    $ref: '#/components/schemas/unrestricted_json'
                geoReference:
                  description: Geographic representation of this route.
                  oneOf:
                    - $ref: '#/components/schemas/latLonPointGeoReference'
                    - $ref: '#/components/schemas/latLonArrayGeoReference'
                    - $ref: '#/components/schemas/Feature'
                    - $ref: '#/components/schemas/openLRGeoReference'
                    - $ref: '#/components/schemas/tmcLocationGeoReference'
                    - $ref: '#/components/schemas/tmcArrayGeoReference'
                    - $ref: '#/components/schemas/addressGeoReference'
                  discriminator:
                    propertyName: type
                    mapping:
                      latLonPointGeoReference: '#/components/schemas/latLonPointGeoReference'
                      latLonArrayGeoReference: '#/components/schemas/latLonArrayGeoReference'
                      Feature: '#/components/schemas/Feature'
                      openLRGeoReference: '#/components/schemas/openLRGeoReference'
                      tmcLocationGeoReference: '#/components/schemas/tmcLocationGeoReference'
                      tmcArrayGeoReference: '#/components/schemas/tmcArrayGeoReference'
                      addressGeoReference: '#/components/schemas/addressGeoReference'
                geoReferences:
                  deprecated: true
                  description: >-
                    Geographic representation of this route. This property is
                    deprecated; use geoReferece (not plural) instead.
                  oneOf:
                    - $ref: '#/components/schemas/latLonPointGeoReference'
                    - $ref: '#/components/schemas/latLonArrayGeoReference'
                    - $ref: '#/components/schemas/Feature'
                    - $ref: '#/components/schemas/openLRGeoReference'
                    - $ref: '#/components/schemas/tmcLocationGeoReference'
                    - $ref: '#/components/schemas/tmcArrayGeoReference'
                    - $ref: '#/components/schemas/addressGeoReference'
                  discriminator:
                    propertyName: type
                    mapping:
                      latLonPointGeoReference: '#/components/schemas/latLonPointGeoReference'
                      latLonArrayGeoReference: '#/components/schemas/latLonArrayGeoReference'
                      Feature: '#/components/schemas/Feature'
                      openLRGeoReference: '#/components/schemas/openLRGeoReference'
                      tmcLocationGeoReference: '#/components/schemas/tmcLocationGeoReference'
                      tmcArrayGeoReference: '#/components/schemas/tmcArrayGeoReference'
                      addressGeoReference: '#/components/schemas/addressGeoReference'
                actors:
                  description: >-
                    Actors associated with this route, for instance the Company
                    that requires this route as a Last-Mile guidance.
                  type: array
                  items:
                    oneOf:
                      - $ref: '#/components/schemas/associated-actors-inline'
                      - $ref: '#/components/schemas/reference-roles'
                      - $ref: '#/components/schemas/attributeRestriction-roles'
                    discriminator:
                      propertyName: associationType
                      mapping:
                        inline: '#/components/schemas/associated-actors-inline'
                        reference: '#/components/schemas/reference-roles'
                        attributeRestriction: '#/components/schemas/attributeRestriction-roles'
                actions:
                  description: All the actions that need to be executed on this route.
                  type: array
                  items:
                    $ref: '#/components/schemas/associations-actions'
                constraint:
                  description: >-
                    Constraints of using this route, for instance it might only
                    be used by vehicles with below a certain weight.
                  oneOf:
                    - $ref: '#/components/schemas/route-constraint-inline'
                    - $ref: '#/components/schemas/reference'
                    - $ref: '#/components/schemas/attributeRestriction'
                  discriminator:
                    propertyName: associationType
                    mapping:
                      inline: '#/components/schemas/route-constraint-inline'
                      reference: '#/components/schemas/reference'
                      attributeRestriction: '#/components/schemas/attributeRestriction'
              required:
                - geoReference
      tags:
        - Route
      security:
        - BearerToken: []
  /api/v5/sensors/{UUID}:
    get:
      responses:
        '200':
          description: Returned the entity with the provided UUID
          content:
            application/json:
              schema:
                example:
                  id: 6666f00c-1332-472c-aff9-bc11b3d53296
                  name: Temperature sensor in trailer x
                  placement: Compartment 1
                  sensorType: accelerometer
                  actors:
                    - entity:
                        id: 45db6ed0-28a7-4e4a-baba-3d5f8d171103
                        name: Logistics manager
                        contactDetails:
                          - value: Simon Isaac
                            remark: Wants to be called 'Sim'.
                            type: firstName
                          - value: Macan
                            type: lastName
                          - value: '+312012345678'
                            remark: private cellphone of the CEO
                            language: nld
                            type: phone
                          - value: simon@macan
                            type: email
                          - value: NL74BANK5890469479
                            type: iban
                          - value: NL000099998B57
                            type: vatCode
                      associationType: inline
                type: object
                properties:
                  id:
                    description: >-
                      Uniquely identifies this entity. A URI can be assigned by
                      the client to indicate where more information
                       can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
                       required to send it in the request. One can be generated for you by the server.
                    type: string
                  name:
                    description: Name of the entity. For display purposes and search only.
                    type: string
                  creationDate:
                    description: The creation date of this entity.
                    type: string
                  lastModified:
                    description: >-
                      The last modified date of this entity. If none is given
                      the creation date is used instead.
                    type: string
                  contextEvents:
                    description: >-
                      The context events provides some optional information
                      about the events that can provide additional information
                       on the current state of this entity.

                      For example: your system might send ETA information for
                      the arrival of a vehicle on a location. To make it clear

                      what caused this ETA to be updated, we can include some
                      information about what caused this ETA update by including

                      an event as context. If your ETA update was caused by a
                      location update, this event can be included as context. If

                      the ETA was caused by a traffic accident on the route of
                      the vehicle, you can include that event in the context.
                    type: array
                    items:
                      $ref: '#/components/schemas/events'
                  externalAttributes:
                    type: object
                    properties: {}
                    additionalProperties:
                      $ref: '#/components/schemas/unrestricted_json'
                  placement:
                    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.
                    type: string
                  sensorType:
                    description: The type of sensor.
                    type: string
                  actors:
                    description: >-
                      The actors associated with this sensor, for instance the
                      owners, the producers or the users of this sensor.
                    type: array
                    items:
                      oneOf:
                        - $ref: '#/components/schemas/associated-actors-inline'
                        - $ref: '#/components/schemas/reference-roles'
                        - $ref: '#/components/schemas/attributeRestriction-roles'
                      discriminator:
                        propertyName: associationType
                        mapping:
                          inline: '#/components/schemas/associated-actors-inline'
                          reference: '#/components/schemas/reference-roles'
                          attributeRestriction: '#/components/schemas/attributeRestriction-roles'
                  constraint:
                    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`.
                    oneOf:
                      - $ref: '#/components/schemas/sensor-constraint-inline'
                      - $ref: '#/components/schemas/reference'
                      - $ref: '#/components/schemas/attributeRestriction'
                    discriminator:
                      propertyName: associationType
                      mapping:
                        inline: '#/components/schemas/sensor-constraint-inline'
                        reference: '#/components/schemas/reference'
                        attributeRestriction: '#/components/schemas/attributeRestriction'
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientError'
        '404':
          description: ''
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serverError'
      summary: Get a specific Sensor by its UUID
      parameters:
        - name: UUID
          in: path
          schema:
            type: string
            format: uuid
          description: The unique UUID of this Sensor
          required: true
      tags:
        - Sensor
      security:
        - BearerToken: []
    delete:
      responses:
        '204':
          description: Deleted sensor with the provided UUID
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientError'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serverError'
      summary: Deletes a Sensor
      parameters:
        - name: UUID
          in: path
          schema:
            type: string
            format: uuid
          description: The unique UUID of the Sensor to be deleted
          required: true
      tags:
        - Sensor
      security:
        - BearerToken: []
  /api/v5/sensors:
    put:
      responses:
        '200':
          description: The same entity
          content:
            application/json:
              schema:
                example:
                  id: 6666f00c-1332-472c-aff9-bc11b3d53296
                  name: Temperature sensor in trailer x
                  placement: Compartment 1
                  sensorType: accelerometer
                  actors:
                    - entity:
                        id: 45db6ed0-28a7-4e4a-baba-3d5f8d171103
                        name: Logistics manager
                        contactDetails:
                          - value: Simon Isaac
                            remark: Wants to be called 'Sim'.
                            type: firstName
                          - value: Macan
                            type: lastName
                          - value: '+312012345678'
                            remark: private cellphone of the CEO
                            language: nld
                            type: phone
                          - value: simon@macan
                            type: email
                          - value: NL74BANK5890469479
                            type: iban
                          - value: NL000099998B57
                            type: vatCode
                      associationType: inline
                type: object
                properties:
                  id:
                    description: >-
                      Uniquely identifies this entity. A URI can be assigned by
                      the client to indicate where more information
                       can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
                       required to send it in the request. One can be generated for you by the server.
                    type: string
                  name:
                    description: Name of the entity. For display purposes and search only.
                    type: string
                  creationDate:
                    description: The creation date of this entity.
                    type: string
                  lastModified:
                    description: >-
                      The last modified date of this entity. If none is given
                      the creation date is used instead.
                    type: string
                  contextEvents:
                    description: >-
                      The context events provides some optional information
                      about the events that can provide additional information
                       on the current state of this entity.

                      For example: your system might send ETA information for
                      the arrival of a vehicle on a location. To make it clear

                      what caused this ETA to be updated, we can include some
                      information about what caused this ETA update by including

                      an event as context. If your ETA update was caused by a
                      location update, this event can be included as context. If

                      the ETA was caused by a traffic accident on the route of
                      the vehicle, you can include that event in the context.
                    type: array
                    items:
                      $ref: '#/components/schemas/events'
                  externalAttributes:
                    type: object
                    properties: {}
                    additionalProperties:
                      $ref: '#/components/schemas/unrestricted_json'
                  placement:
                    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.
                    type: string
                  sensorType:
                    description: The type of sensor.
                    type: string
                  actors:
                    description: >-
                      The actors associated with this sensor, for instance the
                      owners, the producers or the users of this sensor.
                    type: array
                    items:
                      oneOf:
                        - $ref: '#/components/schemas/associated-actors-inline'
                        - $ref: '#/components/schemas/reference-roles'
                        - $ref: '#/components/schemas/attributeRestriction-roles'
                      discriminator:
                        propertyName: associationType
                        mapping:
                          inline: '#/components/schemas/associated-actors-inline'
                          reference: '#/components/schemas/reference-roles'
                          attributeRestriction: '#/components/schemas/attributeRestriction-roles'
                  constraint:
                    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`.
                    oneOf:
                      - $ref: '#/components/schemas/sensor-constraint-inline'
                      - $ref: '#/components/schemas/reference'
                      - $ref: '#/components/schemas/attributeRestriction'
                    discriminator:
                      propertyName: associationType
                      mapping:
                        inline: '#/components/schemas/sensor-constraint-inline'
                        reference: '#/components/schemas/reference'
                        attributeRestriction: '#/components/schemas/attributeRestriction'
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientError'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serverError'
      summary: Adds a new Sensor
      requestBody:
        content:
          application/json:
            schema:
              example:
                id: 6666f00c-1332-472c-aff9-bc11b3d53296
                name: Temperature sensor in trailer x
                placement: Compartment 1
                sensorType: accelerometer
                actors:
                  - entity:
                      id: 45db6ed0-28a7-4e4a-baba-3d5f8d171103
                      name: Logistics manager
                      contactDetails:
                        - value: Simon Isaac
                          remark: Wants to be called 'Sim'.
                          type: firstName
                        - value: Macan
                          type: lastName
                        - value: '+312012345678'
                          remark: private cellphone of the CEO
                          language: nld
                          type: phone
                        - value: simon@macan
                          type: email
                        - value: NL74BANK5890469479
                          type: iban
                        - value: NL000099998B57
                          type: vatCode
                    associationType: inline
              type: object
              properties:
                id:
                  description: >-
                    Uniquely identifies this entity. A URI can be assigned by
                    the client to indicate where more information
                     can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
                     required to send it in the request. One can be generated for you by the server.
                  type: string
                name:
                  description: Name of the entity. For display purposes and search only.
                  type: string
                creationDate:
                  description: The creation date of this entity.
                  type: string
                lastModified:
                  description: >-
                    The last modified date of this entity. If none is given the
                    creation date is used instead.
                  type: string
                contextEvents:
                  description: >-
                    The context events provides some optional information about
                    the events that can provide additional information
                     on the current state of this entity.

                    For example: your system might send ETA information for the
                    arrival of a vehicle on a location. To make it clear

                    what caused this ETA to be updated, we can include some
                    information about what caused this ETA update by including

                    an event as context. If your ETA update was caused by a
                    location update, this event can be included as context. If

                    the ETA was caused by a traffic accident on the route of the
                    vehicle, you can include that event in the context.
                  type: array
                  items:
                    $ref: '#/components/schemas/events'
                externalAttributes:
                  type: object
                  properties: {}
                  additionalProperties:
                    $ref: '#/components/schemas/unrestricted_json'
                placement:
                  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.
                  type: string
                sensorType:
                  description: The type of sensor.
                  type: string
                actors:
                  description: >-
                    The actors associated with this sensor, for instance the
                    owners, the producers or the users of this sensor.
                  type: array
                  items:
                    oneOf:
                      - $ref: '#/components/schemas/associated-actors-inline'
                      - $ref: '#/components/schemas/reference-roles'
                      - $ref: '#/components/schemas/attributeRestriction-roles'
                    discriminator:
                      propertyName: associationType
                      mapping:
                        inline: '#/components/schemas/associated-actors-inline'
                        reference: '#/components/schemas/reference-roles'
                        attributeRestriction: '#/components/schemas/attributeRestriction-roles'
                constraint:
                  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`.
                  oneOf:
                    - $ref: '#/components/schemas/sensor-constraint-inline'
                    - $ref: '#/components/schemas/reference'
                    - $ref: '#/components/schemas/attributeRestriction'
                  discriminator:
                    propertyName: associationType
                    mapping:
                      inline: '#/components/schemas/sensor-constraint-inline'
                      reference: '#/components/schemas/reference'
                      attributeRestriction: '#/components/schemas/attributeRestriction'
      tags:
        - Sensor
      security:
        - BearerToken: []
  /api/v5/consignments/{UUID}:
    get:
      responses:
        '200':
          description: Returned the entity with the provided UUID
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    description: >-
                      Uniquely identifies this entity. A URI can be assigned by
                      the client to indicate where more information
                       can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
                       required to send it in the request. One can be generated for you by the server.
                    type: string
                  name:
                    description: Name of the entity. For display purposes and search only.
                    type: string
                  creationDate:
                    description: The creation date of this entity.
                    type: string
                  lastModified:
                    description: >-
                      The last modified date of this entity. If none is given
                      the creation date is used instead.
                    type: string
                  contextEvents:
                    description: >-
                      The context events provides some optional information
                      about the events that can provide additional information
                       on the current state of this entity.

                      For example: your system might send ETA information for
                      the arrival of a vehicle on a location. To make it clear

                      what caused this ETA to be updated, we can include some
                      information about what caused this ETA update by including

                      an event as context. If your ETA update was caused by a
                      location update, this event can be included as context. If

                      the ETA was caused by a traffic accident on the route of
                      the vehicle, you can include that event in the context.
                    type: array
                    items:
                      $ref: '#/components/schemas/events'
                  externalAttributes:
                    type: object
                    properties: {}
                    additionalProperties:
                      $ref: '#/components/schemas/unrestricted_json'
                  description:
                    description: >-
                      General description of consignment in Free text. e.g 20
                      europallets fruit. Meant for human inspection, not for
                      automating processes.
                    type: string
                  status:
                    description: >-
                      Whether this consignment is a draft, requested, confirmed,
                      in transit, completed or cancelled. The values accepted

                      (replaced by confirmed) and modified (replaced the
                      lastModified field on every entity) are deprecated since

                      OTM5.1, but will be supported for the whole OTM5.X line.
                    type: string
                    enum:
                      - draft
                      - requested
                      - confirmed
                      - inTransit
                      - completed
                      - cancelled
                      - accepted
                      - modified
                  type:
                    description: >-
                      Free text to describe type of consignment. Usually used to
                      indicate the property types of the products being
                      transported (e.g. frozen, fragile, etc.).
                    type: string
                  goods:
                    description: >-
                      The various goods that need to be transported, together
                      they are part of this consignment.
                    type: array
                    items:
                      oneOf:
                        - $ref: '#/components/schemas/goods-inline'
                        - $ref: '#/components/schemas/reference'
                        - $ref: '#/components/schemas/attributeRestriction'
                      discriminator:
                        propertyName: associationType
                        mapping:
                          inline: '#/components/schemas/goods-inline'
                          reference: '#/components/schemas/reference'
                          attributeRestriction: '#/components/schemas/attributeRestriction'
                  transportOrder:
                    description: The transport order this consignment belongs to.
                    oneOf:
                      - $ref: '#/components/schemas/transportOrder-association-inline'
                      - $ref: '#/components/schemas/reference'
                      - $ref: '#/components/schemas/attributeRestriction'
                    discriminator:
                      propertyName: associationType
                      mapping:
                        inline: '#/components/schemas/transportOrder-association-inline'
                        reference: '#/components/schemas/reference'
                        attributeRestriction: '#/components/schemas/attributeRestriction'
                  documents:
                    description: >-
                      Documents that are relevant for this consignment. Such as
                      an official agreement between consignee and consignor.
                    type: array
                    items:
                      oneOf:
                        - $ref: '#/components/schemas/documents-inline'
                        - $ref: '#/components/schemas/reference'
                        - $ref: '#/components/schemas/attributeRestriction'
                      discriminator:
                        propertyName: associationType
                        mapping:
                          inline: '#/components/schemas/documents-inline'
                          reference: '#/components/schemas/reference'
                          attributeRestriction: '#/components/schemas/attributeRestriction'
                  remark:
                    description: >-
                      Remark concerning the complete consignment, to be printed
                      on the transport document.
                    type: string
                  actors:
                    description: >-
                      The actors associated with this consignment, for instance
                      the shipper and carrier. One should inline the actors only
                      on the top-level entity (such as the transportOrder or
                      trip)
                    type: array
                    items:
                      oneOf:
                        - $ref: '#/components/schemas/associated-actors-inline'
                        - $ref: '#/components/schemas/reference-roles'
                        - $ref: '#/components/schemas/attributeRestriction-roles'
                      discriminator:
                        propertyName: associationType
                        mapping:
                          inline: '#/components/schemas/associated-actors-inline'
                          reference: '#/components/schemas/reference-roles'
                          attributeRestriction: '#/components/schemas/attributeRestriction-roles'
                  actions:
                    description: >-
                      General description of actions related to the consignment
                      f.e. loading, unloading, hand over, drop of.
                    type: array
                    items:
                      $ref: '#/components/schemas/associations-actions'
                  constraint:
                    description: >-
                      Constraints this consignment has to abide to, such special
                      equipment (tail lift, truck mounted forklift), special

                      vehicle, special instructions related to consignor and
                      consignee. Note that you can put the constraints on the

                      individual goods. However using constraints on the
                      consignment is simpler and therefore recommended when

                      possible.
                    oneOf:
                      - $ref: '#/components/schemas/consignment-constraint-inline'
                      - $ref: '#/components/schemas/reference'
                      - $ref: '#/components/schemas/attributeRestriction'
                    discriminator:
                      propertyName: associationType
                      mapping:
                        inline: '#/components/schemas/consignment-constraint-inline'
                        reference: '#/components/schemas/reference'
                        attributeRestriction: '#/components/schemas/attributeRestriction'
                  relatedConsignments:
                    description: >-
                      Consignments that have replaced the current consignment.
                      Because of various reasons a consignment can be

                      cancelled and replaced by one or more other consignments.
                      An example is that the consignment is too large

                      to be transported as a single 'transportable unit'. You
                      can use the `relation` field in the association to

                      indicate the type of relationship.
                    type: array
                    items:
                      oneOf:
                        - $ref: >-
                            #/components/schemas/relatedConsignments-association-inline
                        - $ref: '#/components/schemas/reference'
                        - $ref: '#/components/schemas/attributeRestriction'
                      discriminator:
                        propertyName: associationType
                        mapping:
                          inline: >-
                            #/components/schemas/relatedConsignments-association-inline
                          reference: '#/components/schemas/reference'
                          attributeRestriction: '#/components/schemas/attributeRestriction'
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientError'
        '404':
          description: ''
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serverError'
      summary: Get a specific Consignment by its UUID
      parameters:
        - name: UUID
          in: path
          schema:
            type: string
            format: uuid
          description: The unique UUID of this Consignment
          required: true
      tags:
        - Consignment
      security:
        - BearerToken: []
    delete:
      responses:
        '204':
          description: Deleted consignment with the provided UUID
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientError'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serverError'
      summary: Deletes a Consignment
      parameters:
        - name: UUID
          in: path
          schema:
            type: string
            format: uuid
          description: The unique UUID of the Consignment to be deleted
          required: true
      tags:
        - Consignment
      security:
        - BearerToken: []
  /api/v5/consignments:
    put:
      responses:
        '200':
          description: The same entity
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    description: >-
                      Uniquely identifies this entity. A URI can be assigned by
                      the client to indicate where more information
                       can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
                       required to send it in the request. One can be generated for you by the server.
                    type: string
                  name:
                    description: Name of the entity. For display purposes and search only.
                    type: string
                  creationDate:
                    description: The creation date of this entity.
                    type: string
                  lastModified:
                    description: >-
                      The last modified date of this entity. If none is given
                      the creation date is used instead.
                    type: string
                  contextEvents:
                    description: >-
                      The context events provides some optional information
                      about the events that can provide additional information
                       on the current state of this entity.

                      For example: your system might send ETA information for
                      the arrival of a vehicle on a location. To make it clear

                      what caused this ETA to be updated, we can include some
                      information about what caused this ETA update by including

                      an event as context. If your ETA update was caused by a
                      location update, this event can be included as context. If

                      the ETA was caused by a traffic accident on the route of
                      the vehicle, you can include that event in the context.
                    type: array
                    items:
                      $ref: '#/components/schemas/events'
                  externalAttributes:
                    type: object
                    properties: {}
                    additionalProperties:
                      $ref: '#/components/schemas/unrestricted_json'
                  description:
                    description: >-
                      General description of consignment in Free text. e.g 20
                      europallets fruit. Meant for human inspection, not for
                      automating processes.
                    type: string
                  status:
                    description: >-
                      Whether this consignment is a draft, requested, confirmed,
                      in transit, completed or cancelled. The values accepted

                      (replaced by confirmed) and modified (replaced the
                      lastModified field on every entity) are deprecated since

                      OTM5.1, but will be supported for the whole OTM5.X line.
                    type: string
                    enum:
                      - draft
                      - requested
                      - confirmed
                      - inTransit
                      - completed
                      - cancelled
                      - accepted
                      - modified
                  type:
                    description: >-
                      Free text to describe type of consignment. Usually used to
                      indicate the property types of the products being
                      transported (e.g. frozen, fragile, etc.).
                    type: string
                  goods:
                    description: >-
                      The various goods that need to be transported, together
                      they are part of this consignment.
                    type: array
                    items:
                      oneOf:
                        - $ref: '#/components/schemas/goods-inline'
                        - $ref: '#/components/schemas/reference'
                        - $ref: '#/components/schemas/attributeRestriction'
                      discriminator:
                        propertyName: associationType
                        mapping:
                          inline: '#/components/schemas/goods-inline'
                          reference: '#/components/schemas/reference'
                          attributeRestriction: '#/components/schemas/attributeRestriction'
                  transportOrder:
                    description: The transport order this consignment belongs to.
                    oneOf:
                      - $ref: '#/components/schemas/transportOrder-association-inline'
                      - $ref: '#/components/schemas/reference'
                      - $ref: '#/components/schemas/attributeRestriction'
                    discriminator:
                      propertyName: associationType
                      mapping:
                        inline: '#/components/schemas/transportOrder-association-inline'
                        reference: '#/components/schemas/reference'
                        attributeRestriction: '#/components/schemas/attributeRestriction'
                  documents:
                    description: >-
                      Documents that are relevant for this consignment. Such as
                      an official agreement between consignee and consignor.
                    type: array
                    items:
                      oneOf:
                        - $ref: '#/components/schemas/documents-inline'
                        - $ref: '#/components/schemas/reference'
                        - $ref: '#/components/schemas/attributeRestriction'
                      discriminator:
                        propertyName: associationType
                        mapping:
                          inline: '#/components/schemas/documents-inline'
                          reference: '#/components/schemas/reference'
                          attributeRestriction: '#/components/schemas/attributeRestriction'
                  remark:
                    description: >-
                      Remark concerning the complete consignment, to be printed
                      on the transport document.
                    type: string
                  actors:
                    description: >-
                      The actors associated with this consignment, for instance
                      the shipper and carrier. One should inline the actors only
                      on the top-level entity (such as the transportOrder or
                      trip)
                    type: array
                    items:
                      oneOf:
                        - $ref: '#/components/schemas/associated-actors-inline'
                        - $ref: '#/components/schemas/reference-roles'
                        - $ref: '#/components/schemas/attributeRestriction-roles'
                      discriminator:
                        propertyName: associationType
                        mapping:
                          inline: '#/components/schemas/associated-actors-inline'
                          reference: '#/components/schemas/reference-roles'
                          attributeRestriction: '#/components/schemas/attributeRestriction-roles'
                  actions:
                    description: >-
                      General description of actions related to the consignment
                      f.e. loading, unloading, hand over, drop of.
                    type: array
                    items:
                      $ref: '#/components/schemas/associations-actions'
                  constraint:
                    description: >-
                      Constraints this consignment has to abide to, such special
                      equipment (tail lift, truck mounted forklift), special

                      vehicle, special instructions related to consignor and
                      consignee. Note that you can put the constraints on the

                      individual goods. However using constraints on the
                      consignment is simpler and therefore recommended when

                      possible.
                    oneOf:
                      - $ref: '#/components/schemas/consignment-constraint-inline'
                      - $ref: '#/components/schemas/reference'
                      - $ref: '#/components/schemas/attributeRestriction'
                    discriminator:
                      propertyName: associationType
                      mapping:
                        inline: '#/components/schemas/consignment-constraint-inline'
                        reference: '#/components/schemas/reference'
                        attributeRestriction: '#/components/schemas/attributeRestriction'
                  relatedConsignments:
                    description: >-
                      Consignments that have replaced the current consignment.
                      Because of various reasons a consignment can be

                      cancelled and replaced by one or more other consignments.
                      An example is that the consignment is too large

                      to be transported as a single 'transportable unit'. You
                      can use the `relation` field in the association to

                      indicate the type of relationship.
                    type: array
                    items:
                      oneOf:
                        - $ref: >-
                            #/components/schemas/relatedConsignments-association-inline
                        - $ref: '#/components/schemas/reference'
                        - $ref: '#/components/schemas/attributeRestriction'
                      discriminator:
                        propertyName: associationType
                        mapping:
                          inline: >-
                            #/components/schemas/relatedConsignments-association-inline
                          reference: '#/components/schemas/reference'
                          attributeRestriction: '#/components/schemas/attributeRestriction'
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientError'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serverError'
      summary: Adds a new Consignment
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  description: >-
                    Uniquely identifies this entity. A URI can be assigned by
                    the client to indicate where more information
                     can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
                     required to send it in the request. One can be generated for you by the server.
                  type: string
                name:
                  description: Name of the entity. For display purposes and search only.
                  type: string
                creationDate:
                  description: The creation date of this entity.
                  type: string
                lastModified:
                  description: >-
                    The last modified date of this entity. If none is given the
                    creation date is used instead.
                  type: string
                contextEvents:
                  description: >-
                    The context events provides some optional information about
                    the events that can provide additional information
                     on the current state of this entity.

                    For example: your system might send ETA information for the
                    arrival of a vehicle on a location. To make it clear

                    what caused this ETA to be updated, we can include some
                    information about what caused this ETA update by including

                    an event as context. If your ETA update was caused by a
                    location update, this event can be included as context. If

                    the ETA was caused by a traffic accident on the route of the
                    vehicle, you can include that event in the context.
                  type: array
                  items:
                    $ref: '#/components/schemas/events'
                externalAttributes:
                  type: object
                  properties: {}
                  additionalProperties:
                    $ref: '#/components/schemas/unrestricted_json'
                description:
                  description: >-
                    General description of consignment in Free text. e.g 20
                    europallets fruit. Meant for human inspection, not for
                    automating processes.
                  type: string
                status:
                  description: >-
                    Whether this consignment is a draft, requested, confirmed,
                    in transit, completed or cancelled. The values accepted

                    (replaced by confirmed) and modified (replaced the
                    lastModified field on every entity) are deprecated since

                    OTM5.1, but will be supported for the whole OTM5.X line.
                  type: string
                  enum:
                    - draft
                    - requested
                    - confirmed
                    - inTransit
                    - completed
                    - cancelled
                    - accepted
                    - modified
                type:
                  description: >-
                    Free text to describe type of consignment. Usually used to
                    indicate the property types of the products being
                    transported (e.g. frozen, fragile, etc.).
                  type: string
                goods:
                  description: >-
                    The various goods that need to be transported, together they
                    are part of this consignment.
                  type: array
                  items:
                    oneOf:
                      - $ref: '#/components/schemas/goods-inline'
                      - $ref: '#/components/schemas/reference'
                      - $ref: '#/components/schemas/attributeRestriction'
                    discriminator:
                      propertyName: associationType
                      mapping:
                        inline: '#/components/schemas/goods-inline'
                        reference: '#/components/schemas/reference'
                        attributeRestriction: '#/components/schemas/attributeRestriction'
                transportOrder:
                  description: The transport order this consignment belongs to.
                  oneOf:
                    - $ref: '#/components/schemas/transportOrder-association-inline'
                    - $ref: '#/components/schemas/reference'
                    - $ref: '#/components/schemas/attributeRestriction'
                  discriminator:
                    propertyName: associationType
                    mapping:
                      inline: '#/components/schemas/transportOrder-association-inline'
                      reference: '#/components/schemas/reference'
                      attributeRestriction: '#/components/schemas/attributeRestriction'
                documents:
                  description: >-
                    Documents that are relevant for this consignment. Such as an
                    official agreement between consignee and consignor.
                  type: array
                  items:
                    oneOf:
                      - $ref: '#/components/schemas/documents-inline'
                      - $ref: '#/components/schemas/reference'
                      - $ref: '#/components/schemas/attributeRestriction'
                    discriminator:
                      propertyName: associationType
                      mapping:
                        inline: '#/components/schemas/documents-inline'
                        reference: '#/components/schemas/reference'
                        attributeRestriction: '#/components/schemas/attributeRestriction'
                remark:
                  description: >-
                    Remark concerning the complete consignment, to be printed on
                    the transport document.
                  type: string
                actors:
                  description: >-
                    The actors associated with this consignment, for instance
                    the shipper and carrier. One should inline the actors only
                    on the top-level entity (such as the transportOrder or trip)
                  type: array
                  items:
                    oneOf:
                      - $ref: '#/components/schemas/associated-actors-inline'
                      - $ref: '#/components/schemas/reference-roles'
                      - $ref: '#/components/schemas/attributeRestriction-roles'
                    discriminator:
                      propertyName: associationType
                      mapping:
                        inline: '#/components/schemas/associated-actors-inline'
                        reference: '#/components/schemas/reference-roles'
                        attributeRestriction: '#/components/schemas/attributeRestriction-roles'
                actions:
                  description: >-
                    General description of actions related to the consignment
                    f.e. loading, unloading, hand over, drop of.
                  type: array
                  items:
                    $ref: '#/components/schemas/associations-actions'
                constraint:
                  description: >-
                    Constraints this consignment has to abide to, such special
                    equipment (tail lift, truck mounted forklift), special

                    vehicle, special instructions related to consignor and
                    consignee. Note that you can put the constraints on the

                    individual goods. However using constraints on the
                    consignment is simpler and therefore recommended when

                    possible.
                  oneOf:
                    - $ref: '#/components/schemas/consignment-constraint-inline'
                    - $ref: '#/components/schemas/reference'
                    - $ref: '#/components/schemas/attributeRestriction'
                  discriminator:
                    propertyName: associationType
                    mapping:
                      inline: '#/components/schemas/consignment-constraint-inline'
                      reference: '#/components/schemas/reference'
                      attributeRestriction: '#/components/schemas/attributeRestriction'
                relatedConsignments:
                  description: >-
                    Consignments that have replaced the current consignment.
                    Because of various reasons a consignment can be

                    cancelled and replaced by one or more other consignments. An
                    example is that the consignment is too large

                    to be transported as a single 'transportable unit'. You can
                    use the `relation` field in the association to

                    indicate the type of relationship.
                  type: array
                  items:
                    oneOf:
                      - $ref: >-
                          #/components/schemas/relatedConsignments-association-inline
                      - $ref: '#/components/schemas/reference'
                      - $ref: '#/components/schemas/attributeRestriction'
                    discriminator:
                      propertyName: associationType
                      mapping:
                        inline: >-
                          #/components/schemas/relatedConsignments-association-inline
                        reference: '#/components/schemas/reference'
                        attributeRestriction: '#/components/schemas/attributeRestriction'
      tags:
        - Consignment
      security:
        - BearerToken: []
  /api/v5/goods/{UUID}:
    get:
      responses:
        '200':
          description: Returned the entity with the provided UUID
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/items'
                  - $ref: '#/components/schemas/transportEquipment'
                discriminator:
                  propertyName: type
                  mapping:
                    items: '#/components/schemas/items'
                    transportEquipment: '#/components/schemas/transportEquipment'
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientError'
        '404':
          description: ''
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serverError'
      summary: Get a specific Goods by its UUID
      parameters:
        - name: UUID
          in: path
          schema:
            type: string
            format: uuid
          description: The unique UUID of this Goods
          required: true
      tags:
        - Goods
      security:
        - BearerToken: []
    delete:
      responses:
        '204':
          description: Deleted goods with the provided UUID
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientError'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serverError'
      summary: Deletes a Goods
      parameters:
        - name: UUID
          in: path
          schema:
            type: string
            format: uuid
          description: The unique UUID of the Goods to be deleted
          required: true
      tags:
        - Goods
      security:
        - BearerToken: []
  /api/v5/goods:
    put:
      responses:
        '200':
          description: The same entity
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/items'
                  - $ref: '#/components/schemas/transportEquipment'
                discriminator:
                  propertyName: type
                  mapping:
                    items: '#/components/schemas/items'
                    transportEquipment: '#/components/schemas/transportEquipment'
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientError'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serverError'
      summary: Adds a new Goods
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - $ref: '#/components/schemas/items'
                - $ref: '#/components/schemas/transportEquipment'
              discriminator:
                propertyName: type
                mapping:
                  items: '#/components/schemas/items'
                  transportEquipment: '#/components/schemas/transportEquipment'
      tags:
        - Goods
      security:
        - BearerToken: []
  /api/v5/transportOrders/{UUID}:
    get:
      responses:
        '200':
          description: Returned the entity with the provided UUID
          content:
            application/json:
              schema:
                example:
                  id: baa507c2-1d81-4092-a5c2-e80820ee4fd1
                  externalAttributes:
                    id: OrderId
                  description: Transport order containing all consignments to be shipped.
                  consignments:
                    - entity:
                        id: e75a541b-e9d9-49e7-8bba-95492d682a6c
                        description: Package for miss X.
                      associationType: inline
                    - entity:
                        id: 4a08bd61-720e-4a8c-81cf-028f1271c4da
                        description: Package for mr Y.
                      associationType: inline
                type: object
                properties:
                  id:
                    description: >-
                      Uniquely identifies this entity. A URI can be assigned by
                      the client to indicate where more information
                       can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
                       required to send it in the request. One can be generated for you by the server.
                    type: string
                  name:
                    description: Name of the entity. For display purposes and search only.
                    type: string
                  creationDate:
                    description: The creation date of this entity.
                    type: string
                  lastModified:
                    description: >-
                      The last modified date of this entity. If none is given
                      the creation date is used instead.
                    type: string
                  contextEvents:
                    description: >-
                      The context events provides some optional information
                      about the events that can provide additional information
                       on the current state of this entity.

                      For example: your system might send ETA information for
                      the arrival of a vehicle on a location. To make it clear

                      what caused this ETA to be updated, we can include some
                      information about what caused this ETA update by including

                      an event as context. If your ETA update was caused by a
                      location update, this event can be included as context. If

                      the ETA was caused by a traffic accident on the route of
                      the vehicle, you can include that event in the context.
                    type: array
                    items:
                      $ref: '#/components/schemas/events'
                  externalAttributes:
                    description: >
                      External attributes are a simple way to add information in
                      an OpenTripModel message that could not fit into one of
                        the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
                        ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

                       > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
                         it was intended.
                    type: object
                    properties: {}
                    additionalProperties:
                      $ref: '#/components/schemas/unrestricted_json'
                  description:
                    description: >-
                      A free text description of this transport order, e.g.
                      boxes of fruit ordered by Simacan.
                    type: string
                  consignments:
                    description: All consignments belonging to this transport order.
                    type: array
                    items:
                      oneOf:
                        - $ref: '#/components/schemas/consignments-association-inline'
                        - $ref: '#/components/schemas/reference'
                        - $ref: '#/components/schemas/attributeRestriction'
                      discriminator:
                        propertyName: associationType
                        mapping:
                          inline: '#/components/schemas/consignments-association-inline'
                          reference: '#/components/schemas/reference'
                          attributeRestriction: '#/components/schemas/attributeRestriction'
                  actors:
                    description: >-
                      The actors associated with this transport order, for
                      instance the consignor, consignee.
                    type: array
                    items:
                      oneOf:
                        - $ref: '#/components/schemas/associated-actors-inline'
                        - $ref: '#/components/schemas/reference-roles'
                        - $ref: '#/components/schemas/attributeRestriction-roles'
                      discriminator:
                        propertyName: associationType
                        mapping:
                          inline: '#/components/schemas/associated-actors-inline'
                          reference: '#/components/schemas/reference-roles'
                          attributeRestriction: '#/components/schemas/attributeRestriction-roles'
                  constraint:
                    description: >-
                      Constraints this transport order has to abide to, such as
                      the expected delivery time windows.
                    oneOf:
                      - $ref: '#/components/schemas/transport-order-constraint-inline'
                      - $ref: '#/components/schemas/reference'
                      - $ref: '#/components/schemas/attributeRestriction'
                    discriminator:
                      propertyName: associationType
                      mapping:
                        inline: '#/components/schemas/transport-order-constraint-inline'
                        reference: '#/components/schemas/reference'
                        attributeRestriction: '#/components/schemas/attributeRestriction'
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientError'
        '404':
          description: ''
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serverError'
      summary: Get a specific TransportOrder by its UUID
      parameters:
        - name: UUID
          in: path
          schema:
            type: string
            format: uuid
          description: The unique UUID of this TransportOrder
          required: true
      tags:
        - TransportOrder
      security:
        - BearerToken: []
    delete:
      responses:
        '204':
          description: Deleted transportOrder with the provided UUID
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientError'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serverError'
      summary: Deletes a TransportOrder
      parameters:
        - name: UUID
          in: path
          schema:
            type: string
            format: uuid
          description: The unique UUID of the TransportOrder to be deleted
          required: true
      tags:
        - TransportOrder
      security:
        - BearerToken: []
  /api/v5/transportOrders:
    put:
      responses:
        '200':
          description: The same entity
          content:
            application/json:
              schema:
                example:
                  id: baa507c2-1d81-4092-a5c2-e80820ee4fd1
                  externalAttributes:
                    id: OrderId
                  description: Transport order containing all consignments to be shipped.
                  consignments:
                    - entity:
                        id: e75a541b-e9d9-49e7-8bba-95492d682a6c
                        description: Package for miss X.
                      associationType: inline
                    - entity:
                        id: 4a08bd61-720e-4a8c-81cf-028f1271c4da
                        description: Package for mr Y.
                      associationType: inline
                type: object
                properties:
                  id:
                    description: >-
                      Uniquely identifies this entity. A URI can be assigned by
                      the client to indicate where more information
                       can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
                       required to send it in the request. One can be generated for you by the server.
                    type: string
                  name:
                    description: Name of the entity. For display purposes and search only.
                    type: string
                  creationDate:
                    description: The creation date of this entity.
                    type: string
                  lastModified:
                    description: >-
                      The last modified date of this entity. If none is given
                      the creation date is used instead.
                    type: string
                  contextEvents:
                    description: >-
                      The context events provides some optional information
                      about the events that can provide additional information
                       on the current state of this entity.

                      For example: your system might send ETA information for
                      the arrival of a vehicle on a location. To make it clear

                      what caused this ETA to be updated, we can include some
                      information about what caused this ETA update by including

                      an event as context. If your ETA update was caused by a
                      location update, this event can be included as context. If

                      the ETA was caused by a traffic accident on the route of
                      the vehicle, you can include that event in the context.
                    type: array
                    items:
                      $ref: '#/components/schemas/events'
                  externalAttributes:
                    description: >
                      External attributes are a simple way to add information in
                      an OpenTripModel message that could not fit into one of
                        the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
                        ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

                       > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
                         it was intended.
                    type: object
                    properties: {}
                    additionalProperties:
                      $ref: '#/components/schemas/unrestricted_json'
                  description:
                    description: >-
                      A free text description of this transport order, e.g.
                      boxes of fruit ordered by Simacan.
                    type: string
                  consignments:
                    description: All consignments belonging to this transport order.
                    type: array
                    items:
                      oneOf:
                        - $ref: '#/components/schemas/consignments-association-inline'
                        - $ref: '#/components/schemas/reference'
                        - $ref: '#/components/schemas/attributeRestriction'
                      discriminator:
                        propertyName: associationType
                        mapping:
                          inline: '#/components/schemas/consignments-association-inline'
                          reference: '#/components/schemas/reference'
                          attributeRestriction: '#/components/schemas/attributeRestriction'
                  actors:
                    description: >-
                      The actors associated with this transport order, for
                      instance the consignor, consignee.
                    type: array
                    items:
                      oneOf:
                        - $ref: '#/components/schemas/associated-actors-inline'
                        - $ref: '#/components/schemas/reference-roles'
                        - $ref: '#/components/schemas/attributeRestriction-roles'
                      discriminator:
                        propertyName: associationType
                        mapping:
                          inline: '#/components/schemas/associated-actors-inline'
                          reference: '#/components/schemas/reference-roles'
                          attributeRestriction: '#/components/schemas/attributeRestriction-roles'
                  constraint:
                    description: >-
                      Constraints this transport order has to abide to, such as
                      the expected delivery time windows.
                    oneOf:
                      - $ref: '#/components/schemas/transport-order-constraint-inline'
                      - $ref: '#/components/schemas/reference'
                      - $ref: '#/components/schemas/attributeRestriction'
                    discriminator:
                      propertyName: associationType
                      mapping:
                        inline: '#/components/schemas/transport-order-constraint-inline'
                        reference: '#/components/schemas/reference'
                        attributeRestriction: '#/components/schemas/attributeRestriction'
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientError'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serverError'
      summary: Adds a new TransportOrder
      requestBody:
        content:
          application/json:
            schema:
              example:
                id: baa507c2-1d81-4092-a5c2-e80820ee4fd1
                externalAttributes:
                  id: OrderId
                description: Transport order containing all consignments to be shipped.
                consignments:
                  - entity:
                      id: e75a541b-e9d9-49e7-8bba-95492d682a6c
                      description: Package for miss X.
                    associationType: inline
                  - entity:
                      id: 4a08bd61-720e-4a8c-81cf-028f1271c4da
                      description: Package for mr Y.
                    associationType: inline
              type: object
              properties:
                id:
                  description: >-
                    Uniquely identifies this entity. A URI can be assigned by
                    the client to indicate where more information
                     can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
                     required to send it in the request. One can be generated for you by the server.
                  type: string
                name:
                  description: Name of the entity. For display purposes and search only.
                  type: string
                creationDate:
                  description: The creation date of this entity.
                  type: string
                lastModified:
                  description: >-
                    The last modified date of this entity. If none is given the
                    creation date is used instead.
                  type: string
                contextEvents:
                  description: >-
                    The context events provides some optional information about
                    the events that can provide additional information
                     on the current state of this entity.

                    For example: your system might send ETA information for the
                    arrival of a vehicle on a location. To make it clear

                    what caused this ETA to be updated, we can include some
                    information about what caused this ETA update by including

                    an event as context. If your ETA update was caused by a
                    location update, this event can be included as context. If

                    the ETA was caused by a traffic accident on the route of the
                    vehicle, you can include that event in the context.
                  type: array
                  items:
                    $ref: '#/components/schemas/events'
                externalAttributes:
                  description: >
                    External attributes are a simple way to add information in
                    an OpenTripModel message that could not fit into one of
                      the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
                      ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

                     > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
                       it was intended.
                  type: object
                  properties: {}
                  additionalProperties:
                    $ref: '#/components/schemas/unrestricted_json'
                description:
                  description: >-
                    A free text description of this transport order, e.g. boxes
                    of fruit ordered by Simacan.
                  type: string
                consignments:
                  description: All consignments belonging to this transport order.
                  type: array
                  items:
                    oneOf:
                      - $ref: '#/components/schemas/consignments-association-inline'
                      - $ref: '#/components/schemas/reference'
                      - $ref: '#/components/schemas/attributeRestriction'
                    discriminator:
                      propertyName: associationType
                      mapping:
                        inline: '#/components/schemas/consignments-association-inline'
                        reference: '#/components/schemas/reference'
                        attributeRestriction: '#/components/schemas/attributeRestriction'
                actors:
                  description: >-
                    The actors associated with this transport order, for
                    instance the consignor, consignee.
                  type: array
                  items:
                    oneOf:
                      - $ref: '#/components/schemas/associated-actors-inline'
                      - $ref: '#/components/schemas/reference-roles'
                      - $ref: '#/components/schemas/attributeRestriction-roles'
                    discriminator:
                      propertyName: associationType
                      mapping:
                        inline: '#/components/schemas/associated-actors-inline'
                        reference: '#/components/schemas/reference-roles'
                        attributeRestriction: '#/components/schemas/attributeRestriction-roles'
                constraint:
                  description: >-
                    Constraints this transport order has to abide to, such as
                    the expected delivery time windows.
                  oneOf:
                    - $ref: '#/components/schemas/transport-order-constraint-inline'
                    - $ref: '#/components/schemas/reference'
                    - $ref: '#/components/schemas/attributeRestriction'
                  discriminator:
                    propertyName: associationType
                    mapping:
                      inline: '#/components/schemas/transport-order-constraint-inline'
                      reference: '#/components/schemas/reference'
                      attributeRestriction: '#/components/schemas/attributeRestriction'
      tags:
        - TransportOrder
      security:
        - BearerToken: []
  /api/v5/trips/{UUID}:
    get:
      responses:
        '200':
          description: Returned the entity with the provided UUID
          content:
            application/json:
              schema:
                example:
                  id: 50824123-0924-4563-ac1e-ca0e37487823
                  name: Daily supply trip
                  status: inTransit
                  transportMode: road
                  vehicle:
                    uuid: b9bb914d-845e-46f2-91ff-31fa4bac2fbe
                    entityType: vehicle
                    associationType: reference
                  actions:
                    - entity:
                        id: d1636ce5-1d12-4545-b3ee-6ddb05631b3a
                        name: Stop at the distribution center (already done)
                        lifecycle: realized
                        sequenceNr: 0
                        actions:
                          - entity:
                              id: e81a7aa3-23a6-4089-b916-52b854c7b6f1
                              lifecycle: planned
                              remark: loading a consignment
                              consignment:
                                uuid: 047cfa4d-fd8b-47ba-b8e9-87067294d2fa
                                entityType: consignment
                                associationType: reference
                              startTime: '2021-06-23T14:00:00Z'
                              endTime: '2021-06-23T14:15:00Z'
                              constraint:
                                entity:
                                  id: 89a7bb4d-8720-4db9-aef7-4c3309186c3e
                                  name: Example combined constraint
                                  value:
                                    and:
                                      - startTime: '2021-06-23T10:00:00Z'
                                        endTime: '2021-06-23T13:00:00Z'
                                        description: alert-threshold
                                        type: timeWindowConstraint
                                      - constraintType: maximum
                                        maximum:
                                          value: 5
                                          unit: C
                                        type: temperatureConstraint
                                      - or:
                                          - fuelTypes:
                                              - battery
                                            type: fuelTypeConstraint
                                          - fuelTypes:
                                              - biodiesel
                                            type: fuelTypeConstraint
                                          - minimum: euro5
                                            type: emissionStandardConstraint
                                        type: orConstraint
                                    type: andConstraint
                                associationType: inline
                              actionType: load
                            associationType: inline
                        actionType: stop
                      associationType: inline
                    - entity:
                        id: 8dd09992-eb55-40a4-b496-bf1292fa5933
                        name: Stop at the store (still needs to be visited)
                        lifecycle: planned
                        sequenceNr: 1
                        actions:
                          - entity:
                              id: a5f5fc23-744a-46f7-81b4-bfe26629ad4f
                              lifecycle: planned
                              remark: unloading a consignment
                              consignment:
                                uuid: 047cfa4d-fd8b-47ba-b8e9-87067294d2fa
                                entityType: consignment
                                associationType: reference
                              startTime: '2021-06-23T15:00:00Z'
                              endTime: '2021-06-23T15:15:00Z'
                              constraint:
                                entity:
                                  id: 89a7bb4d-8720-4db9-aef7-4c3309186c3e
                                  name: Example combined constraint
                                  value:
                                    and:
                                      - startTime: '2021-06-23T10:00:00Z'
                                        endTime: '2021-06-23T13:00:00Z'
                                        description: alert-threshold
                                        type: timeWindowConstraint
                                      - constraintType: maximum
                                        maximum:
                                          value: 5
                                          unit: C
                                        type: temperatureConstraint
                                      - or:
                                          - fuelTypes:
                                              - battery
                                            type: fuelTypeConstraint
                                          - fuelTypes:
                                              - biodiesel
                                            type: fuelTypeConstraint
                                          - minimum: euro5
                                            type: emissionStandardConstraint
                                        type: orConstraint
                                    type: andConstraint
                                associationType: inline
                              actionType: unload
                            associationType: inline
                        actionType: stop
                      associationType: inline
                type: object
                properties:
                  id:
                    description: >-
                      Uniquely identifies this entity. A URI can be assigned by
                      the client to indicate where more information
                       can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
                       required to send it in the request. One can be generated for you by the server.
                    type: string
                  name:
                    description: Name of the entity. For display purposes and search only.
                    type: string
                  creationDate:
                    description: The creation date of this entity.
                    type: string
                  lastModified:
                    description: >-
                      The last modified date of this entity. If none is given
                      the creation date is used instead.
                    type: string
                  contextEvents:
                    description: >-
                      The context events provides some optional information
                      about the events that can provide additional information
                       on the current state of this entity.

                      For example: your system might send ETA information for
                      the arrival of a vehicle on a location. To make it clear

                      what caused this ETA to be updated, we can include some
                      information about what caused this ETA update by including

                      an event as context. If your ETA update was caused by a
                      location update, this event can be included as context. If

                      the ETA was caused by a traffic accident on the route of
                      the vehicle, you can include that event in the context.
                    type: array
                    items:
                      $ref: '#/components/schemas/events'
                  externalAttributes:
                    type: object
                    properties: {}
                    additionalProperties:
                      $ref: '#/components/schemas/unrestricted_json'
                  status:
                    description: >-
                      Whether this trip is a draft, requested, confirmed, in
                      transit, completed or cancelled. The values accepted

                      (replaced by confirmed) and modified (replaced the
                      lastModified field on every entity) are deprecated since

                      OTM5.1, but will be supported for the whole OTM5.X line.
                    type: string
                    enum:
                      - draft
                      - requested
                      - confirmed
                      - inTransit
                      - completed
                      - cancelled
                      - accepted
                      - modified
                  transportMode:
                    description: >-
                      Method of transport used for the carriage of goods on this
                      trip, can either be using a ship (maritime or

                      inland waterway), a truck/car/van/bike/etc. (road), using
                      the train (rail), or using a plane (air). These

                      values are based on the

                      [recommendation of
                      UNECE](https://unece.org/fileadmin/DAM/cefact/recommendations/rec19/rec19_ecetrd138.pdf).
                    type: string
                    enum:
                      - maritime
                      - road
                      - rail
                      - air
                      - inlandWaterway
                  vehicle:
                    description: The `Vehicle` that is driving this trip.
                    oneOf:
                      - $ref: '#/components/schemas/vehicle-association-inline'
                      - $ref: '#/components/schemas/reference'
                      - $ref: '#/components/schemas/attributeRestriction'
                    discriminator:
                      propertyName: associationType
                      mapping:
                        inline: '#/components/schemas/vehicle-association-inline'
                        reference: '#/components/schemas/reference'
                        attributeRestriction: '#/components/schemas/attributeRestriction'
                  actors:
                    description: >-
                      The actors associated with this trip, for instance the
                      client or the executing party
                    type: array
                    items:
                      oneOf:
                        - $ref: '#/components/schemas/associated-actors-inline'
                        - $ref: '#/components/schemas/reference-roles'
                        - $ref: '#/components/schemas/attributeRestriction-roles'
                      discriminator:
                        propertyName: associationType
                        mapping:
                          inline: '#/components/schemas/associated-actors-inline'
                          reference: '#/components/schemas/reference-roles'
                          attributeRestriction: '#/components/schemas/attributeRestriction-roles'
                  actions:
                    description: >-
                      All actions that are/were happening on this trip, such as
                      stopping at certain locations and loading and unloading of
                      consignments.
                    type: array
                    items:
                      $ref: '#/components/schemas/associations-actions'
                  constraint:
                    description: >-
                      Constraints this trip has to abide to, such as the start
                      and end date times in which it has to be completed.
                    oneOf:
                      - $ref: '#/components/schemas/trip-constraint-inline'
                      - $ref: '#/components/schemas/reference'
                      - $ref: '#/components/schemas/attributeRestriction'
                    discriminator:
                      propertyName: associationType
                      mapping:
                        inline: '#/components/schemas/trip-constraint-inline'
                        reference: '#/components/schemas/reference'
                        attributeRestriction: '#/components/schemas/attributeRestriction'
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientError'
        '404':
          description: ''
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serverError'
      summary: Get a specific Trip by its UUID
      parameters:
        - name: UUID
          in: path
          schema:
            type: string
            format: uuid
          description: The unique UUID of this Trip
          required: true
      tags:
        - Trip
      security:
        - BearerToken: []
    delete:
      responses:
        '204':
          description: Deleted trip with the provided UUID
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientError'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serverError'
      summary: Deletes a Trip
      parameters:
        - name: UUID
          in: path
          schema:
            type: string
            format: uuid
          description: The unique UUID of the Trip to be deleted
          required: true
      tags:
        - Trip
      security:
        - BearerToken: []
  /api/v5/trips:
    put:
      responses:
        '200':
          description: The same entity
          content:
            application/json:
              schema:
                example:
                  id: 50824123-0924-4563-ac1e-ca0e37487823
                  name: Daily supply trip
                  status: inTransit
                  transportMode: road
                  vehicle:
                    uuid: b9bb914d-845e-46f2-91ff-31fa4bac2fbe
                    entityType: vehicle
                    associationType: reference
                  actions:
                    - entity:
                        id: d1636ce5-1d12-4545-b3ee-6ddb05631b3a
                        name: Stop at the distribution center (already done)
                        lifecycle: realized
                        sequenceNr: 0
                        actions:
                          - entity:
                              id: e81a7aa3-23a6-4089-b916-52b854c7b6f1
                              lifecycle: planned
                              remark: loading a consignment
                              consignment:
                                uuid: 047cfa4d-fd8b-47ba-b8e9-87067294d2fa
                                entityType: consignment
                                associationType: reference
                              startTime: '2021-06-23T14:00:00Z'
                              endTime: '2021-06-23T14:15:00Z'
                              constraint:
                                entity:
                                  id: 89a7bb4d-8720-4db9-aef7-4c3309186c3e
                                  name: Example combined constraint
                                  value:
                                    and:
                                      - startTime: '2021-06-23T10:00:00Z'
                                        endTime: '2021-06-23T13:00:00Z'
                                        description: alert-threshold
                                        type: timeWindowConstraint
                                      - constraintType: maximum
                                        maximum:
                                          value: 5
                                          unit: C
                                        type: temperatureConstraint
                                      - or:
                                          - fuelTypes:
                                              - battery
                                            type: fuelTypeConstraint
                                          - fuelTypes:
                                              - biodiesel
                                            type: fuelTypeConstraint
                                          - minimum: euro5
                                            type: emissionStandardConstraint
                                        type: orConstraint
                                    type: andConstraint
                                associationType: inline
                              actionType: load
                            associationType: inline
                        actionType: stop
                      associationType: inline
                    - entity:
                        id: 8dd09992-eb55-40a4-b496-bf1292fa5933
                        name: Stop at the store (still needs to be visited)
                        lifecycle: planned
                        sequenceNr: 1
                        actions:
                          - entity:
                              id: a5f5fc23-744a-46f7-81b4-bfe26629ad4f
                              lifecycle: planned
                              remark: unloading a consignment
                              consignment:
                                uuid: 047cfa4d-fd8b-47ba-b8e9-87067294d2fa
                                entityType: consignment
                                associationType: reference
                              startTime: '2021-06-23T15:00:00Z'
                              endTime: '2021-06-23T15:15:00Z'
                              constraint:
                                entity:
                                  id: 89a7bb4d-8720-4db9-aef7-4c3309186c3e
                                  name: Example combined constraint
                                  value:
                                    and:
                                      - startTime: '2021-06-23T10:00:00Z'
                                        endTime: '2021-06-23T13:00:00Z'
                                        description: alert-threshold
                                        type: timeWindowConstraint
                                      - constraintType: maximum
                                        maximum:
                                          value: 5
                                          unit: C
                                        type: temperatureConstraint
                                      - or:
                                          - fuelTypes:
                                              - battery
                                            type: fuelTypeConstraint
                                          - fuelTypes:
                                              - biodiesel
                                            type: fuelTypeConstraint
                                          - minimum: euro5
                                            type: emissionStandardConstraint
                                        type: orConstraint
                                    type: andConstraint
                                associationType: inline
                              actionType: unload
                            associationType: inline
                        actionType: stop
                      associationType: inline
                type: object
                properties:
                  id:
                    description: >-
                      Uniquely identifies this entity. A URI can be assigned by
                      the client to indicate where more information
                       can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
                       required to send it in the request. One can be generated for you by the server.
                    type: string
                  name:
                    description: Name of the entity. For display purposes and search only.
                    type: string
                  creationDate:
                    description: The creation date of this entity.
                    type: string
                  lastModified:
                    description: >-
                      The last modified date of this entity. If none is given
                      the creation date is used instead.
                    type: string
                  contextEvents:
                    description: >-
                      The context events provides some optional information
                      about the events that can provide additional information
                       on the current state of this entity.

                      For example: your system might send ETA information for
                      the arrival of a vehicle on a location. To make it clear

                      what caused this ETA to be updated, we can include some
                      information about what caused this ETA update by including

                      an event as context. If your ETA update was caused by a
                      location update, this event can be included as context. If

                      the ETA was caused by a traffic accident on the route of
                      the vehicle, you can include that event in the context.
                    type: array
                    items:
                      $ref: '#/components/schemas/events'
                  externalAttributes:
                    type: object
                    properties: {}
                    additionalProperties:
                      $ref: '#/components/schemas/unrestricted_json'
                  status:
                    description: >-
                      Whether this trip is a draft, requested, confirmed, in
                      transit, completed or cancelled. The values accepted

                      (replaced by confirmed) and modified (replaced the
                      lastModified field on every entity) are deprecated since

                      OTM5.1, but will be supported for the whole OTM5.X line.
                    type: string
                    enum:
                      - draft
                      - requested
                      - confirmed
                      - inTransit
                      - completed
                      - cancelled
                      - accepted
                      - modified
                  transportMode:
                    description: >-
                      Method of transport used for the carriage of goods on this
                      trip, can either be using a ship (maritime or

                      inland waterway), a truck/car/van/bike/etc. (road), using
                      the train (rail), or using a plane (air). These

                      values are based on the

                      [recommendation of
                      UNECE](https://unece.org/fileadmin/DAM/cefact/recommendations/rec19/rec19_ecetrd138.pdf).
                    type: string
                    enum:
                      - maritime
                      - road
                      - rail
                      - air
                      - inlandWaterway
                  vehicle:
                    description: The `Vehicle` that is driving this trip.
                    oneOf:
                      - $ref: '#/components/schemas/vehicle-association-inline'
                      - $ref: '#/components/schemas/reference'
                      - $ref: '#/components/schemas/attributeRestriction'
                    discriminator:
                      propertyName: associationType
                      mapping:
                        inline: '#/components/schemas/vehicle-association-inline'
                        reference: '#/components/schemas/reference'
                        attributeRestriction: '#/components/schemas/attributeRestriction'
                  actors:
                    description: >-
                      The actors associated with this trip, for instance the
                      client or the executing party
                    type: array
                    items:
                      oneOf:
                        - $ref: '#/components/schemas/associated-actors-inline'
                        - $ref: '#/components/schemas/reference-roles'
                        - $ref: '#/components/schemas/attributeRestriction-roles'
                      discriminator:
                        propertyName: associationType
                        mapping:
                          inline: '#/components/schemas/associated-actors-inline'
                          reference: '#/components/schemas/reference-roles'
                          attributeRestriction: '#/components/schemas/attributeRestriction-roles'
                  actions:
                    description: >-
                      All actions that are/were happening on this trip, such as
                      stopping at certain locations and loading and unloading of
                      consignments.
                    type: array
                    items:
                      $ref: '#/components/schemas/associations-actions'
                  constraint:
                    description: >-
                      Constraints this trip has to abide to, such as the start
                      and end date times in which it has to be completed.
                    oneOf:
                      - $ref: '#/components/schemas/trip-constraint-inline'
                      - $ref: '#/components/schemas/reference'
                      - $ref: '#/components/schemas/attributeRestriction'
                    discriminator:
                      propertyName: associationType
                      mapping:
                        inline: '#/components/schemas/trip-constraint-inline'
                        reference: '#/components/schemas/reference'
                        attributeRestriction: '#/components/schemas/attributeRestriction'
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientError'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serverError'
      summary: Adds a new Trip
      requestBody:
        content:
          application/json:
            schema:
              example:
                id: 50824123-0924-4563-ac1e-ca0e37487823
                name: Daily supply trip
                status: inTransit
                transportMode: road
                vehicle:
                  uuid: b9bb914d-845e-46f2-91ff-31fa4bac2fbe
                  entityType: vehicle
                  associationType: reference
                actions:
                  - entity:
                      id: d1636ce5-1d12-4545-b3ee-6ddb05631b3a
                      name: Stop at the distribution center (already done)
                      lifecycle: realized
                      sequenceNr: 0
                      actions:
                        - entity:
                            id: e81a7aa3-23a6-4089-b916-52b854c7b6f1
                            lifecycle: planned
                            remark: loading a consignment
                            consignment:
                              uuid: 047cfa4d-fd8b-47ba-b8e9-87067294d2fa
                              entityType: consignment
                              associationType: reference
                            startTime: '2021-06-23T14:00:00Z'
                            endTime: '2021-06-23T14:15:00Z'
                            constraint:
                              entity:
                                id: 89a7bb4d-8720-4db9-aef7-4c3309186c3e
                                name: Example combined constraint
                                value:
                                  and:
                                    - startTime: '2021-06-23T10:00:00Z'
                                      endTime: '2021-06-23T13:00:00Z'
                                      description: alert-threshold
                                      type: timeWindowConstraint
                                    - constraintType: maximum
                                      maximum:
                                        value: 5
                                        unit: C
                                      type: temperatureConstraint
                                    - or:
                                        - fuelTypes:
                                            - battery
                                          type: fuelTypeConstraint
                                        - fuelTypes:
                                            - biodiesel
                                          type: fuelTypeConstraint
                                        - minimum: euro5
                                          type: emissionStandardConstraint
                                      type: orConstraint
                                  type: andConstraint
                              associationType: inline
                            actionType: load
                          associationType: inline
                      actionType: stop
                    associationType: inline
                  - entity:
                      id: 8dd09992-eb55-40a4-b496-bf1292fa5933
                      name: Stop at the store (still needs to be visited)
                      lifecycle: planned
                      sequenceNr: 1
                      actions:
                        - entity:
                            id: a5f5fc23-744a-46f7-81b4-bfe26629ad4f
                            lifecycle: planned
                            remark: unloading a consignment
                            consignment:
                              uuid: 047cfa4d-fd8b-47ba-b8e9-87067294d2fa
                              entityType: consignment
                              associationType: reference
                            startTime: '2021-06-23T15:00:00Z'
                            endTime: '2021-06-23T15:15:00Z'
                            constraint:
                              entity:
                                id: 89a7bb4d-8720-4db9-aef7-4c3309186c3e
                                name: Example combined constraint
                                value:
                                  and:
                                    - startTime: '2021-06-23T10:00:00Z'
                                      endTime: '2021-06-23T13:00:00Z'
                                      description: alert-threshold
                                      type: timeWindowConstraint
                                    - constraintType: maximum
                                      maximum:
                                        value: 5
                                        unit: C
                                      type: temperatureConstraint
                                    - or:
                                        - fuelTypes:
                                            - battery
                                          type: fuelTypeConstraint
                                        - fuelTypes:
                                            - biodiesel
                                          type: fuelTypeConstraint
                                        - minimum: euro5
                                          type: emissionStandardConstraint
                                      type: orConstraint
                                  type: andConstraint
                              associationType: inline
                            actionType: unload
                          associationType: inline
                      actionType: stop
                    associationType: inline
              type: object
              properties:
                id:
                  description: >-
                    Uniquely identifies this entity. A URI can be assigned by
                    the client to indicate where more information
                     can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
                     required to send it in the request. One can be generated for you by the server.
                  type: string
                name:
                  description: Name of the entity. For display purposes and search only.
                  type: string
                creationDate:
                  description: The creation date of this entity.
                  type: string
                lastModified:
                  description: >-
                    The last modified date of this entity. If none is given the
                    creation date is used instead.
                  type: string
                contextEvents:
                  description: >-
                    The context events provides some optional information about
                    the events that can provide additional information
                     on the current state of this entity.

                    For example: your system might send ETA information for the
                    arrival of a vehicle on a location. To make it clear

                    what caused this ETA to be updated, we can include some
                    information about what caused this ETA update by including

                    an event as context. If your ETA update was caused by a
                    location update, this event can be included as context. If

                    the ETA was caused by a traffic accident on the route of the
                    vehicle, you can include that event in the context.
                  type: array
                  items:
                    $ref: '#/components/schemas/events'
                externalAttributes:
                  type: object
                  properties: {}
                  additionalProperties:
                    $ref: '#/components/schemas/unrestricted_json'
                status:
                  description: >-
                    Whether this trip is a draft, requested, confirmed, in
                    transit, completed or cancelled. The values accepted

                    (replaced by confirmed) and modified (replaced the
                    lastModified field on every entity) are deprecated since

                    OTM5.1, but will be supported for the whole OTM5.X line.
                  type: string
                  enum:
                    - draft
                    - requested
                    - confirmed
                    - inTransit
                    - completed
                    - cancelled
                    - accepted
                    - modified
                transportMode:
                  description: >-
                    Method of transport used for the carriage of goods on this
                    trip, can either be using a ship (maritime or

                    inland waterway), a truck/car/van/bike/etc. (road), using
                    the train (rail), or using a plane (air). These

                    values are based on the

                    [recommendation of
                    UNECE](https://unece.org/fileadmin/DAM/cefact/recommendations/rec19/rec19_ecetrd138.pdf).
                  type: string
                  enum:
                    - maritime
                    - road
                    - rail
                    - air
                    - inlandWaterway
                vehicle:
                  description: The `Vehicle` that is driving this trip.
                  oneOf:
                    - $ref: '#/components/schemas/vehicle-association-inline'
                    - $ref: '#/components/schemas/reference'
                    - $ref: '#/components/schemas/attributeRestriction'
                  discriminator:
                    propertyName: associationType
                    mapping:
                      inline: '#/components/schemas/vehicle-association-inline'
                      reference: '#/components/schemas/reference'
                      attributeRestriction: '#/components/schemas/attributeRestriction'
                actors:
                  description: >-
                    The actors associated with this trip, for instance the
                    client or the executing party
                  type: array
                  items:
                    oneOf:
                      - $ref: '#/components/schemas/associated-actors-inline'
                      - $ref: '#/components/schemas/reference-roles'
                      - $ref: '#/components/schemas/attributeRestriction-roles'
                    discriminator:
                      propertyName: associationType
                      mapping:
                        inline: '#/components/schemas/associated-actors-inline'
                        reference: '#/components/schemas/reference-roles'
                        attributeRestriction: '#/components/schemas/attributeRestriction-roles'
                actions:
                  description: >-
                    All actions that are/were happening on this trip, such as
                    stopping at certain locations and loading and unloading of
                    consignments.
                  type: array
                  items:
                    $ref: '#/components/schemas/associations-actions'
                constraint:
                  description: >-
                    Constraints this trip has to abide to, such as the start and
                    end date times in which it has to be completed.
                  oneOf:
                    - $ref: '#/components/schemas/trip-constraint-inline'
                    - $ref: '#/components/schemas/reference'
                    - $ref: '#/components/schemas/attributeRestriction'
                  discriminator:
                    propertyName: associationType
                    mapping:
                      inline: '#/components/schemas/trip-constraint-inline'
                      reference: '#/components/schemas/reference'
                      attributeRestriction: '#/components/schemas/attributeRestriction'
      tags:
        - Trip
      security:
        - BearerToken: []
  /api/v5/vehicles/{UUID}:
    get:
      responses:
        '200':
          description: Returned the entity with the provided UUID
          content:
            application/json:
              schema:
                example:
                  id: b9bb914d-845e-46f2-91ff-31fa4bac2fbe
                  name: Bob's Boxtruck
                  vehicleType: boxtruck
                  fuel: electricity
                  loadCapacities:
                    - value: 1000
                      unit: kg
                  length:
                    value: 8
                    unit: m
                  height:
                    value: 2.8
                    unit: m
                  width:
                    value: 2
                    unit: m
                  licensePlate: AB-12-CD
                  emptyWeight:
                    value: 2000
                    unit: kg
                type: object
                properties:
                  id:
                    description: >-
                      Uniquely identifies this entity. A URI can be assigned by
                      the client to indicate where more information
                       can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
                       required to send it in the request. One can be generated for you by the server.
                    type: string
                  name:
                    description: Name of the entity. For display purposes and search only.
                    type: string
                  creationDate:
                    description: The creation date of this entity.
                    type: string
                  lastModified:
                    description: >-
                      The last modified date of this entity. If none is given
                      the creation date is used instead.
                    type: string
                  contextEvents:
                    description: >-
                      The context events provides some optional information
                      about the events that can provide additional information
                       on the current state of this entity.

                      For example: your system might send ETA information for
                      the arrival of a vehicle on a location. To make it clear

                      what caused this ETA to be updated, we can include some
                      information about what caused this ETA update by including

                      an event as context. If your ETA update was caused by a
                      location update, this event can be included as context. If

                      the ETA was caused by a traffic accident on the route of
                      the vehicle, you can include that event in the context.
                    type: array
                    items:
                      $ref: '#/components/schemas/events'
                  externalAttributes:
                    type: object
                    properties: {}
                    additionalProperties:
                      $ref: '#/components/schemas/unrestricted_json'
                  vehicleType:
                    description: The type of vehicle
                    type: string
                  fuel:
                    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.
                    type: string
                    enum:
                      - petrol
                      - diesel
                      - electricity
                      - hydrogen
                      - lng
                      - cng
                      - adBlue
                      - other
                  otherFuelType:
                    description: >-
                      Type of fuel, only to be used when the `fuel` field is set
                      to `other`.
                    type: string
                  averageFuelConsumption:
                    description: >-
                      The average fuel consumption for this vehicle. Usually
                      measured in distance per 100l
                    type: object
                    properties:
                      value:
                        description: Value in the given unit.
                        type: number
                        format: double
                      unit:
                        description: >-
                          Measurement unit of this value. OTM5 currently does
                          not enforce any units of measure. So you are free to
                          use

                          any unit necessary. However to ensure parties use OTM5
                          consistently there are a few rules:

                          * For **currencies** use the [ISO_4217
                          standard](https://en.wikipedia.org/wiki/ISO_4217)

                          * For **mass**, **volume** and **length** the [SI
                          system (International System of
                          Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                          is
                            recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                            proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                          * For degrees the recommend approach is Celsius, but
                          Fahrenheit and Kelvin are also supported. To again
                          avoid
                            problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                            (C, F, or K).
                          * For velocity use the metric system. The required
                          format would then be \<length\>/\<time unit\> for the
                          metric
                            system, such as km/h (kilometer per hour) or m/s (meter per second).

                          Since usage is not enforced you can deviate from these
                          rules, though only do so if strictly necessary. The

                          benefit from using a standard comes from consistent
                          use, so deviating from the recommendations diminishes
                          your

                          benefit.


                          If the type of unit you need is not supported please
                          create a

                          [change
                          request](https://github.com/opentripmodel/otm5-change-requests)
                        type: string
                    required:
                      - value
                      - unit
                  emissionStandard:
                    description: >
                      European emission standards are vehicle emission standards
                      for exhaust emissions of new vehicles sold in the

                      European Union and EEA member states. The standards are
                      defined in a series of European Union directives

                      staging the progressive introduction of increasingly
                      stringent standards. See also

                      [European emission standards -
                      Wikipedia](https://en.wikipedia.org/wiki/European_emission_standards#Emission_standards_for_trucks_and_buses).
                    type: string
                    enum:
                      - euro0
                      - euro1
                      - euro2
                      - euro3
                      - euro4
                      - euro5
                      - euro6
                  maxLinks:
                    description: >-
                      Maximum number of links to other `Vehicle` s. Typical
                      values are 0, 1 or 2.
                    type: integer
                    format: int32
                  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:
                      type: object
                      properties:
                        value:
                          description: Value in the given unit.
                          type: number
                          format: double
                        unit:
                          description: >-
                            Measurement unit of this value. OTM5 currently does
                            not enforce any units of measure. So you are free to
                            use

                            any unit necessary. However to ensure parties use
                            OTM5 consistently there are a few rules:

                            * For **currencies** use the [ISO_4217
                            standard](https://en.wikipedia.org/wiki/ISO_4217)

                            * For **mass**, **volume** and **length** the [SI
                            system (International System of
                            Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                            is
                              recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                              proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                            * For degrees the recommend approach is Celsius, but
                            Fahrenheit and Kelvin are also supported. To again
                            avoid
                              problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                              (C, F, or K).
                            * For velocity use the metric system. The required
                            format would then be \<length\>/\<time unit\> for
                            the metric
                              system, such as km/h (kilometer per hour) or m/s (meter per second).

                            Since usage is not enforced you can deviate from
                            these rules, though only do so if strictly
                            necessary. The

                            benefit from using a standard comes from consistent
                            use, so deviating from the recommendations
                            diminishes your

                            benefit.


                            If the type of unit you need is not supported please
                            create a

                            [change
                            request](https://github.com/opentripmodel/otm5-change-requests)
                          type: string
                      required:
                        - value
                        - unit
                  length:
                    description: The length of the `Vehicle`.
                    type: object
                    properties:
                      value:
                        description: Value in the given unit.
                        type: number
                        format: double
                      unit:
                        description: >-
                          Measurement unit of this value. OTM5 currently does
                          not enforce any units of measure. So you are free to
                          use

                          any unit necessary. However to ensure parties use OTM5
                          consistently there are a few rules:

                          * For **currencies** use the [ISO_4217
                          standard](https://en.wikipedia.org/wiki/ISO_4217)

                          * For **mass**, **volume** and **length** the [SI
                          system (International System of
                          Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                          is
                            recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                            proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                          * For degrees the recommend approach is Celsius, but
                          Fahrenheit and Kelvin are also supported. To again
                          avoid
                            problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                            (C, F, or K).
                          * For velocity use the metric system. The required
                          format would then be \<length\>/\<time unit\> for the
                          metric
                            system, such as km/h (kilometer per hour) or m/s (meter per second).

                          Since usage is not enforced you can deviate from these
                          rules, though only do so if strictly necessary. The

                          benefit from using a standard comes from consistent
                          use, so deviating from the recommendations diminishes
                          your

                          benefit.


                          If the type of unit you need is not supported please
                          create a

                          [change
                          request](https://github.com/opentripmodel/otm5-change-requests)
                        type: string
                    required:
                      - value
                      - unit
                  height:
                    description: The height of the `Vehicle`.
                    type: object
                    properties:
                      value:
                        description: Value in the given unit.
                        type: number
                        format: double
                      unit:
                        description: >-
                          Measurement unit of this value. OTM5 currently does
                          not enforce any units of measure. So you are free to
                          use

                          any unit necessary. However to ensure parties use OTM5
                          consistently there are a few rules:

                          * For **currencies** use the [ISO_4217
                          standard](https://en.wikipedia.org/wiki/ISO_4217)

                          * For **mass**, **volume** and **length** the [SI
                          system (International System of
                          Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                          is
                            recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                            proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                          * For degrees the recommend approach is Celsius, but
                          Fahrenheit and Kelvin are also supported. To again
                          avoid
                            problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                            (C, F, or K).
                          * For velocity use the metric system. The required
                          format would then be \<length\>/\<time unit\> for the
                          metric
                            system, such as km/h (kilometer per hour) or m/s (meter per second).

                          Since usage is not enforced you can deviate from these
                          rules, though only do so if strictly necessary. The

                          benefit from using a standard comes from consistent
                          use, so deviating from the recommendations diminishes
                          your

                          benefit.


                          If the type of unit you need is not supported please
                          create a

                          [change
                          request](https://github.com/opentripmodel/otm5-change-requests)
                        type: string
                    required:
                      - value
                      - unit
                  width:
                    description: The width of the `Vehicle`.
                    type: object
                    properties:
                      value:
                        description: Value in the given unit.
                        type: number
                        format: double
                      unit:
                        description: >-
                          Measurement unit of this value. OTM5 currently does
                          not enforce any units of measure. So you are free to
                          use

                          any unit necessary. However to ensure parties use OTM5
                          consistently there are a few rules:

                          * For **currencies** use the [ISO_4217
                          standard](https://en.wikipedia.org/wiki/ISO_4217)

                          * For **mass**, **volume** and **length** the [SI
                          system (International System of
                          Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                          is
                            recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                            proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                          * For degrees the recommend approach is Celsius, but
                          Fahrenheit and Kelvin are also supported. To again
                          avoid
                            problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                            (C, F, or K).
                          * For velocity use the metric system. The required
                          format would then be \<length\>/\<time unit\> for the
                          metric
                            system, such as km/h (kilometer per hour) or m/s (meter per second).

                          Since usage is not enforced you can deviate from these
                          rules, though only do so if strictly necessary. The

                          benefit from using a standard comes from consistent
                          use, so deviating from the recommendations diminishes
                          your

                          benefit.


                          If the type of unit you need is not supported please
                          create a

                          [change
                          request](https://github.com/opentripmodel/otm5-change-requests)
                        type: string
                    required:
                      - value
                      - unit
                  licensePlate:
                    description: The license plate of the vehicle.
                    type: string
                  emptyWeight:
                    description: The weight of the `Vehicle` when empty.
                    type: object
                    properties:
                      value:
                        description: Value in the given unit.
                        type: number
                        format: double
                      unit:
                        description: >-
                          Measurement unit of this value. OTM5 currently does
                          not enforce any units of measure. So you are free to
                          use

                          any unit necessary. However to ensure parties use OTM5
                          consistently there are a few rules:

                          * For **currencies** use the [ISO_4217
                          standard](https://en.wikipedia.org/wiki/ISO_4217)

                          * For **mass**, **volume** and **length** the [SI
                          system (International System of
                          Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                          is
                            recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                            proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                          * For degrees the recommend approach is Celsius, but
                          Fahrenheit and Kelvin are also supported. To again
                          avoid
                            problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                            (C, F, or K).
                          * For velocity use the metric system. The required
                          format would then be \<length\>/\<time unit\> for the
                          metric
                            system, such as km/h (kilometer per hour) or m/s (meter per second).

                          Since usage is not enforced you can deviate from these
                          rules, though only do so if strictly necessary. The

                          benefit from using a standard comes from consistent
                          use, so deviating from the recommendations diminishes
                          your

                          benefit.


                          If the type of unit you need is not supported please
                          create a

                          [change
                          request](https://github.com/opentripmodel/otm5-change-requests)
                        type: string
                    required:
                      - value
                      - unit
                  actors:
                    description: >-
                      There are multiple roles in which actors can be associated
                      with a vehicle, such as the owner or the driver of the
                      vehicle.
                    type: array
                    items:
                      oneOf:
                        - $ref: '#/components/schemas/associated-actors-inline'
                        - $ref: '#/components/schemas/reference-roles'
                        - $ref: '#/components/schemas/attributeRestriction-roles'
                      discriminator:
                        propertyName: associationType
                        mapping:
                          inline: '#/components/schemas/associated-actors-inline'
                          reference: '#/components/schemas/reference-roles'
                          attributeRestriction: '#/components/schemas/attributeRestriction-roles'
                  sensors:
                    description: >-
                      Vehicles might have some sensors that are permanently
                      attached, these can be described using the sensors field.
                       If one works with detachable sensors the recommend approach is to use associationCreated and
                       associationRemoved events instead.
                    type: array
                    items:
                      oneOf:
                        - $ref: '#/components/schemas/sensors-association-inline'
                        - $ref: '#/components/schemas/reference'
                        - $ref: '#/components/schemas/attributeRestriction'
                      discriminator:
                        propertyName: associationType
                        mapping:
                          inline: '#/components/schemas/sensors-association-inline'
                          reference: '#/components/schemas/reference'
                          attributeRestriction: '#/components/schemas/attributeRestriction'
                  actions:
                    description: >-
                      The actions that are involved for the vehicle (for a
                      particular time window)
                    type: array
                    items:
                      $ref: '#/components/schemas/associations-actions'
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientError'
        '404':
          description: ''
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serverError'
      summary: Get a specific Vehicle by its UUID
      parameters:
        - name: UUID
          in: path
          schema:
            type: string
            format: uuid
          description: The unique UUID of this Vehicle
          required: true
      tags:
        - Vehicle
      security:
        - BearerToken: []
    delete:
      responses:
        '204':
          description: Deleted vehicle with the provided UUID
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientError'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serverError'
      summary: Deletes a Vehicle
      parameters:
        - name: UUID
          in: path
          schema:
            type: string
            format: uuid
          description: The unique UUID of the Vehicle to be deleted
          required: true
      tags:
        - Vehicle
      security:
        - BearerToken: []
  /api/v5/vehicles:
    put:
      responses:
        '200':
          description: The same entity
          content:
            application/json:
              schema:
                example:
                  id: b9bb914d-845e-46f2-91ff-31fa4bac2fbe
                  name: Bob's Boxtruck
                  vehicleType: boxtruck
                  fuel: electricity
                  loadCapacities:
                    - value: 1000
                      unit: kg
                  length:
                    value: 8
                    unit: m
                  height:
                    value: 2.8
                    unit: m
                  width:
                    value: 2
                    unit: m
                  licensePlate: AB-12-CD
                  emptyWeight:
                    value: 2000
                    unit: kg
                type: object
                properties:
                  id:
                    description: >-
                      Uniquely identifies this entity. A URI can be assigned by
                      the client to indicate where more information
                       can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
                       required to send it in the request. One can be generated for you by the server.
                    type: string
                  name:
                    description: Name of the entity. For display purposes and search only.
                    type: string
                  creationDate:
                    description: The creation date of this entity.
                    type: string
                  lastModified:
                    description: >-
                      The last modified date of this entity. If none is given
                      the creation date is used instead.
                    type: string
                  contextEvents:
                    description: >-
                      The context events provides some optional information
                      about the events that can provide additional information
                       on the current state of this entity.

                      For example: your system might send ETA information for
                      the arrival of a vehicle on a location. To make it clear

                      what caused this ETA to be updated, we can include some
                      information about what caused this ETA update by including

                      an event as context. If your ETA update was caused by a
                      location update, this event can be included as context. If

                      the ETA was caused by a traffic accident on the route of
                      the vehicle, you can include that event in the context.
                    type: array
                    items:
                      $ref: '#/components/schemas/events'
                  externalAttributes:
                    type: object
                    properties: {}
                    additionalProperties:
                      $ref: '#/components/schemas/unrestricted_json'
                  vehicleType:
                    description: The type of vehicle
                    type: string
                  fuel:
                    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.
                    type: string
                    enum:
                      - petrol
                      - diesel
                      - electricity
                      - hydrogen
                      - lng
                      - cng
                      - adBlue
                      - other
                  otherFuelType:
                    description: >-
                      Type of fuel, only to be used when the `fuel` field is set
                      to `other`.
                    type: string
                  averageFuelConsumption:
                    description: >-
                      The average fuel consumption for this vehicle. Usually
                      measured in distance per 100l
                    type: object
                    properties:
                      value:
                        description: Value in the given unit.
                        type: number
                        format: double
                      unit:
                        description: >-
                          Measurement unit of this value. OTM5 currently does
                          not enforce any units of measure. So you are free to
                          use

                          any unit necessary. However to ensure parties use OTM5
                          consistently there are a few rules:

                          * For **currencies** use the [ISO_4217
                          standard](https://en.wikipedia.org/wiki/ISO_4217)

                          * For **mass**, **volume** and **length** the [SI
                          system (International System of
                          Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                          is
                            recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                            proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                          * For degrees the recommend approach is Celsius, but
                          Fahrenheit and Kelvin are also supported. To again
                          avoid
                            problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                            (C, F, or K).
                          * For velocity use the metric system. The required
                          format would then be \<length\>/\<time unit\> for the
                          metric
                            system, such as km/h (kilometer per hour) or m/s (meter per second).

                          Since usage is not enforced you can deviate from these
                          rules, though only do so if strictly necessary. The

                          benefit from using a standard comes from consistent
                          use, so deviating from the recommendations diminishes
                          your

                          benefit.


                          If the type of unit you need is not supported please
                          create a

                          [change
                          request](https://github.com/opentripmodel/otm5-change-requests)
                        type: string
                    required:
                      - value
                      - unit
                  emissionStandard:
                    description: >
                      European emission standards are vehicle emission standards
                      for exhaust emissions of new vehicles sold in the

                      European Union and EEA member states. The standards are
                      defined in a series of European Union directives

                      staging the progressive introduction of increasingly
                      stringent standards. See also

                      [European emission standards -
                      Wikipedia](https://en.wikipedia.org/wiki/European_emission_standards#Emission_standards_for_trucks_and_buses).
                    type: string
                    enum:
                      - euro0
                      - euro1
                      - euro2
                      - euro3
                      - euro4
                      - euro5
                      - euro6
                  maxLinks:
                    description: >-
                      Maximum number of links to other `Vehicle` s. Typical
                      values are 0, 1 or 2.
                    type: integer
                    format: int32
                  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:
                      type: object
                      properties:
                        value:
                          description: Value in the given unit.
                          type: number
                          format: double
                        unit:
                          description: >-
                            Measurement unit of this value. OTM5 currently does
                            not enforce any units of measure. So you are free to
                            use

                            any unit necessary. However to ensure parties use
                            OTM5 consistently there are a few rules:

                            * For **currencies** use the [ISO_4217
                            standard](https://en.wikipedia.org/wiki/ISO_4217)

                            * For **mass**, **volume** and **length** the [SI
                            system (International System of
                            Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                            is
                              recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                              proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                            * For degrees the recommend approach is Celsius, but
                            Fahrenheit and Kelvin are also supported. To again
                            avoid
                              problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                              (C, F, or K).
                            * For velocity use the metric system. The required
                            format would then be \<length\>/\<time unit\> for
                            the metric
                              system, such as km/h (kilometer per hour) or m/s (meter per second).

                            Since usage is not enforced you can deviate from
                            these rules, though only do so if strictly
                            necessary. The

                            benefit from using a standard comes from consistent
                            use, so deviating from the recommendations
                            diminishes your

                            benefit.


                            If the type of unit you need is not supported please
                            create a

                            [change
                            request](https://github.com/opentripmodel/otm5-change-requests)
                          type: string
                      required:
                        - value
                        - unit
                  length:
                    description: The length of the `Vehicle`.
                    type: object
                    properties:
                      value:
                        description: Value in the given unit.
                        type: number
                        format: double
                      unit:
                        description: >-
                          Measurement unit of this value. OTM5 currently does
                          not enforce any units of measure. So you are free to
                          use

                          any unit necessary. However to ensure parties use OTM5
                          consistently there are a few rules:

                          * For **currencies** use the [ISO_4217
                          standard](https://en.wikipedia.org/wiki/ISO_4217)

                          * For **mass**, **volume** and **length** the [SI
                          system (International System of
                          Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                          is
                            recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                            proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                          * For degrees the recommend approach is Celsius, but
                          Fahrenheit and Kelvin are also supported. To again
                          avoid
                            problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                            (C, F, or K).
                          * For velocity use the metric system. The required
                          format would then be \<length\>/\<time unit\> for the
                          metric
                            system, such as km/h (kilometer per hour) or m/s (meter per second).

                          Since usage is not enforced you can deviate from these
                          rules, though only do so if strictly necessary. The

                          benefit from using a standard comes from consistent
                          use, so deviating from the recommendations diminishes
                          your

                          benefit.


                          If the type of unit you need is not supported please
                          create a

                          [change
                          request](https://github.com/opentripmodel/otm5-change-requests)
                        type: string
                    required:
                      - value
                      - unit
                  height:
                    description: The height of the `Vehicle`.
                    type: object
                    properties:
                      value:
                        description: Value in the given unit.
                        type: number
                        format: double
                      unit:
                        description: >-
                          Measurement unit of this value. OTM5 currently does
                          not enforce any units of measure. So you are free to
                          use

                          any unit necessary. However to ensure parties use OTM5
                          consistently there are a few rules:

                          * For **currencies** use the [ISO_4217
                          standard](https://en.wikipedia.org/wiki/ISO_4217)

                          * For **mass**, **volume** and **length** the [SI
                          system (International System of
                          Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                          is
                            recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                            proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                          * For degrees the recommend approach is Celsius, but
                          Fahrenheit and Kelvin are also supported. To again
                          avoid
                            problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                            (C, F, or K).
                          * For velocity use the metric system. The required
                          format would then be \<length\>/\<time unit\> for the
                          metric
                            system, such as km/h (kilometer per hour) or m/s (meter per second).

                          Since usage is not enforced you can deviate from these
                          rules, though only do so if strictly necessary. The

                          benefit from using a standard comes from consistent
                          use, so deviating from the recommendations diminishes
                          your

                          benefit.


                          If the type of unit you need is not supported please
                          create a

                          [change
                          request](https://github.com/opentripmodel/otm5-change-requests)
                        type: string
                    required:
                      - value
                      - unit
                  width:
                    description: The width of the `Vehicle`.
                    type: object
                    properties:
                      value:
                        description: Value in the given unit.
                        type: number
                        format: double
                      unit:
                        description: >-
                          Measurement unit of this value. OTM5 currently does
                          not enforce any units of measure. So you are free to
                          use

                          any unit necessary. However to ensure parties use OTM5
                          consistently there are a few rules:

                          * For **currencies** use the [ISO_4217
                          standard](https://en.wikipedia.org/wiki/ISO_4217)

                          * For **mass**, **volume** and **length** the [SI
                          system (International System of
                          Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                          is
                            recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                            proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                          * For degrees the recommend approach is Celsius, but
                          Fahrenheit and Kelvin are also supported. To again
                          avoid
                            problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                            (C, F, or K).
                          * For velocity use the metric system. The required
                          format would then be \<length\>/\<time unit\> for the
                          metric
                            system, such as km/h (kilometer per hour) or m/s (meter per second).

                          Since usage is not enforced you can deviate from these
                          rules, though only do so if strictly necessary. The

                          benefit from using a standard comes from consistent
                          use, so deviating from the recommendations diminishes
                          your

                          benefit.


                          If the type of unit you need is not supported please
                          create a

                          [change
                          request](https://github.com/opentripmodel/otm5-change-requests)
                        type: string
                    required:
                      - value
                      - unit
                  licensePlate:
                    description: The license plate of the vehicle.
                    type: string
                  emptyWeight:
                    description: The weight of the `Vehicle` when empty.
                    type: object
                    properties:
                      value:
                        description: Value in the given unit.
                        type: number
                        format: double
                      unit:
                        description: >-
                          Measurement unit of this value. OTM5 currently does
                          not enforce any units of measure. So you are free to
                          use

                          any unit necessary. However to ensure parties use OTM5
                          consistently there are a few rules:

                          * For **currencies** use the [ISO_4217
                          standard](https://en.wikipedia.org/wiki/ISO_4217)

                          * For **mass**, **volume** and **length** the [SI
                          system (International System of
                          Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                          is
                            recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                            proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                          * For degrees the recommend approach is Celsius, but
                          Fahrenheit and Kelvin are also supported. To again
                          avoid
                            problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                            (C, F, or K).
                          * For velocity use the metric system. The required
                          format would then be \<length\>/\<time unit\> for the
                          metric
                            system, such as km/h (kilometer per hour) or m/s (meter per second).

                          Since usage is not enforced you can deviate from these
                          rules, though only do so if strictly necessary. The

                          benefit from using a standard comes from consistent
                          use, so deviating from the recommendations diminishes
                          your

                          benefit.


                          If the type of unit you need is not supported please
                          create a

                          [change
                          request](https://github.com/opentripmodel/otm5-change-requests)
                        type: string
                    required:
                      - value
                      - unit
                  actors:
                    description: >-
                      There are multiple roles in which actors can be associated
                      with a vehicle, such as the owner or the driver of the
                      vehicle.
                    type: array
                    items:
                      oneOf:
                        - $ref: '#/components/schemas/associated-actors-inline'
                        - $ref: '#/components/schemas/reference-roles'
                        - $ref: '#/components/schemas/attributeRestriction-roles'
                      discriminator:
                        propertyName: associationType
                        mapping:
                          inline: '#/components/schemas/associated-actors-inline'
                          reference: '#/components/schemas/reference-roles'
                          attributeRestriction: '#/components/schemas/attributeRestriction-roles'
                  sensors:
                    description: >-
                      Vehicles might have some sensors that are permanently
                      attached, these can be described using the sensors field.
                       If one works with detachable sensors the recommend approach is to use associationCreated and
                       associationRemoved events instead.
                    type: array
                    items:
                      oneOf:
                        - $ref: '#/components/schemas/sensors-association-inline'
                        - $ref: '#/components/schemas/reference'
                        - $ref: '#/components/schemas/attributeRestriction'
                      discriminator:
                        propertyName: associationType
                        mapping:
                          inline: '#/components/schemas/sensors-association-inline'
                          reference: '#/components/schemas/reference'
                          attributeRestriction: '#/components/schemas/attributeRestriction'
                  actions:
                    description: >-
                      The actions that are involved for the vehicle (for a
                      particular time window)
                    type: array
                    items:
                      $ref: '#/components/schemas/associations-actions'
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientError'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serverError'
      summary: Adds a new Vehicle
      requestBody:
        content:
          application/json:
            schema:
              example:
                id: b9bb914d-845e-46f2-91ff-31fa4bac2fbe
                name: Bob's Boxtruck
                vehicleType: boxtruck
                fuel: electricity
                loadCapacities:
                  - value: 1000
                    unit: kg
                length:
                  value: 8
                  unit: m
                height:
                  value: 2.8
                  unit: m
                width:
                  value: 2
                  unit: m
                licensePlate: AB-12-CD
                emptyWeight:
                  value: 2000
                  unit: kg
              type: object
              properties:
                id:
                  description: >-
                    Uniquely identifies this entity. A URI can be assigned by
                    the client to indicate where more information
                     can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
                     required to send it in the request. One can be generated for you by the server.
                  type: string
                name:
                  description: Name of the entity. For display purposes and search only.
                  type: string
                creationDate:
                  description: The creation date of this entity.
                  type: string
                lastModified:
                  description: >-
                    The last modified date of this entity. If none is given the
                    creation date is used instead.
                  type: string
                contextEvents:
                  description: >-
                    The context events provides some optional information about
                    the events that can provide additional information
                     on the current state of this entity.

                    For example: your system might send ETA information for the
                    arrival of a vehicle on a location. To make it clear

                    what caused this ETA to be updated, we can include some
                    information about what caused this ETA update by including

                    an event as context. If your ETA update was caused by a
                    location update, this event can be included as context. If

                    the ETA was caused by a traffic accident on the route of the
                    vehicle, you can include that event in the context.
                  type: array
                  items:
                    $ref: '#/components/schemas/events'
                externalAttributes:
                  type: object
                  properties: {}
                  additionalProperties:
                    $ref: '#/components/schemas/unrestricted_json'
                vehicleType:
                  description: The type of vehicle
                  type: string
                fuel:
                  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.
                  type: string
                  enum:
                    - petrol
                    - diesel
                    - electricity
                    - hydrogen
                    - lng
                    - cng
                    - adBlue
                    - other
                otherFuelType:
                  description: >-
                    Type of fuel, only to be used when the `fuel` field is set
                    to `other`.
                  type: string
                averageFuelConsumption:
                  description: >-
                    The average fuel consumption for this vehicle. Usually
                    measured in distance per 100l
                  type: object
                  properties:
                    value:
                      description: Value in the given unit.
                      type: number
                      format: double
                    unit:
                      description: >-
                        Measurement unit of this value. OTM5 currently does not
                        enforce any units of measure. So you are free to use

                        any unit necessary. However to ensure parties use OTM5
                        consistently there are a few rules:

                        * For **currencies** use the [ISO_4217
                        standard](https://en.wikipedia.org/wiki/ISO_4217)

                        * For **mass**, **volume** and **length** the [SI system
                        (International System of
                        Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                        is
                          recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                          proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                        * For degrees the recommend approach is Celsius, but
                        Fahrenheit and Kelvin are also supported. To again avoid
                          problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                          (C, F, or K).
                        * For velocity use the metric system. The required
                        format would then be \<length\>/\<time unit\> for the
                        metric
                          system, such as km/h (kilometer per hour) or m/s (meter per second).

                        Since usage is not enforced you can deviate from these
                        rules, though only do so if strictly necessary. The

                        benefit from using a standard comes from consistent use,
                        so deviating from the recommendations diminishes your

                        benefit.


                        If the type of unit you need is not supported please
                        create a

                        [change
                        request](https://github.com/opentripmodel/otm5-change-requests)
                      type: string
                  required:
                    - value
                    - unit
                emissionStandard:
                  description: >
                    European emission standards are vehicle emission standards
                    for exhaust emissions of new vehicles sold in the

                    European Union and EEA member states. The standards are
                    defined in a series of European Union directives

                    staging the progressive introduction of increasingly
                    stringent standards. See also

                    [European emission standards -
                    Wikipedia](https://en.wikipedia.org/wiki/European_emission_standards#Emission_standards_for_trucks_and_buses).
                  type: string
                  enum:
                    - euro0
                    - euro1
                    - euro2
                    - euro3
                    - euro4
                    - euro5
                    - euro6
                maxLinks:
                  description: >-
                    Maximum number of links to other `Vehicle` s. Typical values
                    are 0, 1 or 2.
                  type: integer
                  format: int32
                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:
                    type: object
                    properties:
                      value:
                        description: Value in the given unit.
                        type: number
                        format: double
                      unit:
                        description: >-
                          Measurement unit of this value. OTM5 currently does
                          not enforce any units of measure. So you are free to
                          use

                          any unit necessary. However to ensure parties use OTM5
                          consistently there are a few rules:

                          * For **currencies** use the [ISO_4217
                          standard](https://en.wikipedia.org/wiki/ISO_4217)

                          * For **mass**, **volume** and **length** the [SI
                          system (International System of
                          Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                          is
                            recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                            proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                          * For degrees the recommend approach is Celsius, but
                          Fahrenheit and Kelvin are also supported. To again
                          avoid
                            problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                            (C, F, or K).
                          * For velocity use the metric system. The required
                          format would then be \<length\>/\<time unit\> for the
                          metric
                            system, such as km/h (kilometer per hour) or m/s (meter per second).

                          Since usage is not enforced you can deviate from these
                          rules, though only do so if strictly necessary. The

                          benefit from using a standard comes from consistent
                          use, so deviating from the recommendations diminishes
                          your

                          benefit.


                          If the type of unit you need is not supported please
                          create a

                          [change
                          request](https://github.com/opentripmodel/otm5-change-requests)
                        type: string
                    required:
                      - value
                      - unit
                length:
                  description: The length of the `Vehicle`.
                  type: object
                  properties:
                    value:
                      description: Value in the given unit.
                      type: number
                      format: double
                    unit:
                      description: >-
                        Measurement unit of this value. OTM5 currently does not
                        enforce any units of measure. So you are free to use

                        any unit necessary. However to ensure parties use OTM5
                        consistently there are a few rules:

                        * For **currencies** use the [ISO_4217
                        standard](https://en.wikipedia.org/wiki/ISO_4217)

                        * For **mass**, **volume** and **length** the [SI system
                        (International System of
                        Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                        is
                          recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                          proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                        * For degrees the recommend approach is Celsius, but
                        Fahrenheit and Kelvin are also supported. To again avoid
                          problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                          (C, F, or K).
                        * For velocity use the metric system. The required
                        format would then be \<length\>/\<time unit\> for the
                        metric
                          system, such as km/h (kilometer per hour) or m/s (meter per second).

                        Since usage is not enforced you can deviate from these
                        rules, though only do so if strictly necessary. The

                        benefit from using a standard comes from consistent use,
                        so deviating from the recommendations diminishes your

                        benefit.


                        If the type of unit you need is not supported please
                        create a

                        [change
                        request](https://github.com/opentripmodel/otm5-change-requests)
                      type: string
                  required:
                    - value
                    - unit
                height:
                  description: The height of the `Vehicle`.
                  type: object
                  properties:
                    value:
                      description: Value in the given unit.
                      type: number
                      format: double
                    unit:
                      description: >-
                        Measurement unit of this value. OTM5 currently does not
                        enforce any units of measure. So you are free to use

                        any unit necessary. However to ensure parties use OTM5
                        consistently there are a few rules:

                        * For **currencies** use the [ISO_4217
                        standard](https://en.wikipedia.org/wiki/ISO_4217)

                        * For **mass**, **volume** and **length** the [SI system
                        (International System of
                        Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                        is
                          recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                          proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                        * For degrees the recommend approach is Celsius, but
                        Fahrenheit and Kelvin are also supported. To again avoid
                          problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                          (C, F, or K).
                        * For velocity use the metric system. The required
                        format would then be \<length\>/\<time unit\> for the
                        metric
                          system, such as km/h (kilometer per hour) or m/s (meter per second).

                        Since usage is not enforced you can deviate from these
                        rules, though only do so if strictly necessary. The

                        benefit from using a standard comes from consistent use,
                        so deviating from the recommendations diminishes your

                        benefit.


                        If the type of unit you need is not supported please
                        create a

                        [change
                        request](https://github.com/opentripmodel/otm5-change-requests)
                      type: string
                  required:
                    - value
                    - unit
                width:
                  description: The width of the `Vehicle`.
                  type: object
                  properties:
                    value:
                      description: Value in the given unit.
                      type: number
                      format: double
                    unit:
                      description: >-
                        Measurement unit of this value. OTM5 currently does not
                        enforce any units of measure. So you are free to use

                        any unit necessary. However to ensure parties use OTM5
                        consistently there are a few rules:

                        * For **currencies** use the [ISO_4217
                        standard](https://en.wikipedia.org/wiki/ISO_4217)

                        * For **mass**, **volume** and **length** the [SI system
                        (International System of
                        Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                        is
                          recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                          proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                        * For degrees the recommend approach is Celsius, but
                        Fahrenheit and Kelvin are also supported. To again avoid
                          problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                          (C, F, or K).
                        * For velocity use the metric system. The required
                        format would then be \<length\>/\<time unit\> for the
                        metric
                          system, such as km/h (kilometer per hour) or m/s (meter per second).

                        Since usage is not enforced you can deviate from these
                        rules, though only do so if strictly necessary. The

                        benefit from using a standard comes from consistent use,
                        so deviating from the recommendations diminishes your

                        benefit.


                        If the type of unit you need is not supported please
                        create a

                        [change
                        request](https://github.com/opentripmodel/otm5-change-requests)
                      type: string
                  required:
                    - value
                    - unit
                licensePlate:
                  description: The license plate of the vehicle.
                  type: string
                emptyWeight:
                  description: The weight of the `Vehicle` when empty.
                  type: object
                  properties:
                    value:
                      description: Value in the given unit.
                      type: number
                      format: double
                    unit:
                      description: >-
                        Measurement unit of this value. OTM5 currently does not
                        enforce any units of measure. So you are free to use

                        any unit necessary. However to ensure parties use OTM5
                        consistently there are a few rules:

                        * For **currencies** use the [ISO_4217
                        standard](https://en.wikipedia.org/wiki/ISO_4217)

                        * For **mass**, **volume** and **length** the [SI system
                        (International System of
                        Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                        is
                          recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                          proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                        * For degrees the recommend approach is Celsius, but
                        Fahrenheit and Kelvin are also supported. To again avoid
                          problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                          (C, F, or K).
                        * For velocity use the metric system. The required
                        format would then be \<length\>/\<time unit\> for the
                        metric
                          system, such as km/h (kilometer per hour) or m/s (meter per second).

                        Since usage is not enforced you can deviate from these
                        rules, though only do so if strictly necessary. The

                        benefit from using a standard comes from consistent use,
                        so deviating from the recommendations diminishes your

                        benefit.


                        If the type of unit you need is not supported please
                        create a

                        [change
                        request](https://github.com/opentripmodel/otm5-change-requests)
                      type: string
                  required:
                    - value
                    - unit
                actors:
                  description: >-
                    There are multiple roles in which actors can be associated
                    with a vehicle, such as the owner or the driver of the
                    vehicle.
                  type: array
                  items:
                    oneOf:
                      - $ref: '#/components/schemas/associated-actors-inline'
                      - $ref: '#/components/schemas/reference-roles'
                      - $ref: '#/components/schemas/attributeRestriction-roles'
                    discriminator:
                      propertyName: associationType
                      mapping:
                        inline: '#/components/schemas/associated-actors-inline'
                        reference: '#/components/schemas/reference-roles'
                        attributeRestriction: '#/components/schemas/attributeRestriction-roles'
                sensors:
                  description: >-
                    Vehicles might have some sensors that are permanently
                    attached, these can be described using the sensors field.
                     If one works with detachable sensors the recommend approach is to use associationCreated and
                     associationRemoved events instead.
                  type: array
                  items:
                    oneOf:
                      - $ref: '#/components/schemas/sensors-association-inline'
                      - $ref: '#/components/schemas/reference'
                      - $ref: '#/components/schemas/attributeRestriction'
                    discriminator:
                      propertyName: associationType
                      mapping:
                        inline: '#/components/schemas/sensors-association-inline'
                        reference: '#/components/schemas/reference'
                        attributeRestriction: '#/components/schemas/attributeRestriction'
                actions:
                  description: >-
                    The actions that are involved for the vehicle (for a
                    particular time window)
                  type: array
                  items:
                    $ref: '#/components/schemas/associations-actions'
      tags:
        - Vehicle
      security:
        - BearerToken: []
  /api/v5/documents/{UUID}:
    get:
      responses:
        '200':
          description: Returned the entity with the provided UUID
          content:
            application/json:
              schema:
                example:
                  id: cf32da57-5edc-4c46-9a97-58c97ae27cf8
                  name: Photo of the PoD
                  content:
                    uri: https://link-to-the-actual-document.org/1234
                    contentType: link
                  externalAttributes:
                    externalID: photo1234
                  documentType: photo
                  filename: my_photo.JPG
                  mimeType: image/jpeg
                  description: >-
                    Proof that the goods are delivered by providing the photo
                    that captures the moment
                  creator:
                    uuid: 655a2a4e-79b1-4637-9f13-b904730022ef
                    entityType: actor
                    associationType: reference
                  owner:
                    uuid: 655a2a4e-79b1-4637-9f13-b904730022ef
                    entityType: actor
                    associationType: reference
                type: object
                properties:
                  id:
                    description: >-
                      Uniquely identifies this entity. A URI can be assigned by
                      the client to indicate where more information
                       can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
                       required to send it in the request. One can be generated for you by the server.
                    type: string
                  name:
                    description: Name of the entity. For display purposes and search only.
                    type: string
                  creationDate:
                    description: The creation date of this entity.
                    type: string
                  lastModified:
                    description: >-
                      The last modified date of this entity. If none is given
                      the creation date is used instead.
                    type: string
                  contextEvents:
                    description: >-
                      The context events provides some optional information
                      about the events that can provide additional information
                       on the current state of this entity.

                      For example: your system might send ETA information for
                      the arrival of a vehicle on a location. To make it clear

                      what caused this ETA to be updated, we can include some
                      information about what caused this ETA update by including

                      an event as context. If your ETA update was caused by a
                      location update, this event can be included as context. If

                      the ETA was caused by a traffic accident on the route of
                      the vehicle, you can include that event in the context.
                    type: array
                    items:
                      $ref: '#/components/schemas/events'
                  content:
                    description: >-
                      The content of the document. There are two different
                      options on how the content can be provided. Either through

                      an external link to where the content lives. Or directly
                      as an encoded base64 string.
                    allOf:
                      - $ref: '#/components/schemas/content'
                  externalAttributes:
                    description: >
                      External attributes are a simple way to add information in
                      an OpenTripModel message that could not fit into one of
                        the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
                        ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

                       > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
                         it was intended.
                    type: object
                    properties: {}
                    additionalProperties:
                      $ref: '#/components/schemas/unrestricted_json'
                  documentType:
                    description: >-
                      The type of the document, such as a photo, text document,
                      PDF etc.
                    type: string
                  filename:
                    description: The name of the file.
                    type: string
                  mimeType:
                    description: >-
                      The official MIME type of the file. See
                      [Wikepedia](https://en.wikipedia.org/wiki/Media_type) for
                      more information.
                    type: string
                  description:
                    description: >-
                      The description of the file, for example what purpose it
                      serves.
                    type: string
                  creator:
                    description: >-
                      The actor who owns the document. If not provided, the
                      creator will be assumed to be the owner.
                    oneOf:
                      - $ref: '#/components/schemas/document-creator-inline'
                      - $ref: '#/components/schemas/reference-roles'
                      - $ref: '#/components/schemas/attributeRestriction-roles'
                    discriminator:
                      propertyName: associationType
                      mapping:
                        inline: '#/components/schemas/document-creator-inline'
                        reference: '#/components/schemas/reference-roles'
                        attributeRestriction: '#/components/schemas/attributeRestriction-roles'
                  owner:
                    description: >-
                      The actor who owns the document. If not provided, the
                      creator will be assumed to be the owner.
                    oneOf:
                      - $ref: '#/components/schemas/document-owner-inline'
                      - $ref: '#/components/schemas/reference-roles'
                      - $ref: '#/components/schemas/attributeRestriction-roles'
                    discriminator:
                      propertyName: associationType
                      mapping:
                        inline: '#/components/schemas/document-owner-inline'
                        reference: '#/components/schemas/reference-roles'
                        attributeRestriction: '#/components/schemas/attributeRestriction-roles'
                required:
                  - content
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientError'
        '404':
          description: ''
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serverError'
      summary: Get a specific Document by its UUID
      parameters:
        - name: UUID
          in: path
          schema:
            type: string
            format: uuid
          description: The unique UUID of this Document
          required: true
      tags:
        - Document
      security:
        - BearerToken: []
    delete:
      responses:
        '204':
          description: Deleted document with the provided UUID
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientError'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serverError'
      summary: Deletes a Document
      parameters:
        - name: UUID
          in: path
          schema:
            type: string
            format: uuid
          description: The unique UUID of the Document to be deleted
          required: true
      tags:
        - Document
      security:
        - BearerToken: []
  /api/v5/documents:
    put:
      responses:
        '200':
          description: The same entity
          content:
            application/json:
              schema:
                example:
                  id: cf32da57-5edc-4c46-9a97-58c97ae27cf8
                  name: Photo of the PoD
                  content:
                    uri: https://link-to-the-actual-document.org/1234
                    contentType: link
                  externalAttributes:
                    externalID: photo1234
                  documentType: photo
                  filename: my_photo.JPG
                  mimeType: image/jpeg
                  description: >-
                    Proof that the goods are delivered by providing the photo
                    that captures the moment
                  creator:
                    uuid: 655a2a4e-79b1-4637-9f13-b904730022ef
                    entityType: actor
                    associationType: reference
                  owner:
                    uuid: 655a2a4e-79b1-4637-9f13-b904730022ef
                    entityType: actor
                    associationType: reference
                type: object
                properties:
                  id:
                    description: >-
                      Uniquely identifies this entity. A URI can be assigned by
                      the client to indicate where more information
                       can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
                       required to send it in the request. One can be generated for you by the server.
                    type: string
                  name:
                    description: Name of the entity. For display purposes and search only.
                    type: string
                  creationDate:
                    description: The creation date of this entity.
                    type: string
                  lastModified:
                    description: >-
                      The last modified date of this entity. If none is given
                      the creation date is used instead.
                    type: string
                  contextEvents:
                    description: >-
                      The context events provides some optional information
                      about the events that can provide additional information
                       on the current state of this entity.

                      For example: your system might send ETA information for
                      the arrival of a vehicle on a location. To make it clear

                      what caused this ETA to be updated, we can include some
                      information about what caused this ETA update by including

                      an event as context. If your ETA update was caused by a
                      location update, this event can be included as context. If

                      the ETA was caused by a traffic accident on the route of
                      the vehicle, you can include that event in the context.
                    type: array
                    items:
                      $ref: '#/components/schemas/events'
                  content:
                    description: >-
                      The content of the document. There are two different
                      options on how the content can be provided. Either through

                      an external link to where the content lives. Or directly
                      as an encoded base64 string.
                    allOf:
                      - $ref: '#/components/schemas/content'
                  externalAttributes:
                    description: >
                      External attributes are a simple way to add information in
                      an OpenTripModel message that could not fit into one of
                        the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
                        ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

                       > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
                         it was intended.
                    type: object
                    properties: {}
                    additionalProperties:
                      $ref: '#/components/schemas/unrestricted_json'
                  documentType:
                    description: >-
                      The type of the document, such as a photo, text document,
                      PDF etc.
                    type: string
                  filename:
                    description: The name of the file.
                    type: string
                  mimeType:
                    description: >-
                      The official MIME type of the file. See
                      [Wikepedia](https://en.wikipedia.org/wiki/Media_type) for
                      more information.
                    type: string
                  description:
                    description: >-
                      The description of the file, for example what purpose it
                      serves.
                    type: string
                  creator:
                    description: >-
                      The actor who owns the document. If not provided, the
                      creator will be assumed to be the owner.
                    oneOf:
                      - $ref: '#/components/schemas/document-creator-inline'
                      - $ref: '#/components/schemas/reference-roles'
                      - $ref: '#/components/schemas/attributeRestriction-roles'
                    discriminator:
                      propertyName: associationType
                      mapping:
                        inline: '#/components/schemas/document-creator-inline'
                        reference: '#/components/schemas/reference-roles'
                        attributeRestriction: '#/components/schemas/attributeRestriction-roles'
                  owner:
                    description: >-
                      The actor who owns the document. If not provided, the
                      creator will be assumed to be the owner.
                    oneOf:
                      - $ref: '#/components/schemas/document-owner-inline'
                      - $ref: '#/components/schemas/reference-roles'
                      - $ref: '#/components/schemas/attributeRestriction-roles'
                    discriminator:
                      propertyName: associationType
                      mapping:
                        inline: '#/components/schemas/document-owner-inline'
                        reference: '#/components/schemas/reference-roles'
                        attributeRestriction: '#/components/schemas/attributeRestriction-roles'
                required:
                  - content
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientError'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serverError'
      summary: Adds a new Document
      requestBody:
        content:
          application/json:
            schema:
              example:
                id: cf32da57-5edc-4c46-9a97-58c97ae27cf8
                name: Photo of the PoD
                content:
                  uri: https://link-to-the-actual-document.org/1234
                  contentType: link
                externalAttributes:
                  externalID: photo1234
                documentType: photo
                filename: my_photo.JPG
                mimeType: image/jpeg
                description: >-
                  Proof that the goods are delivered by providing the photo that
                  captures the moment
                creator:
                  uuid: 655a2a4e-79b1-4637-9f13-b904730022ef
                  entityType: actor
                  associationType: reference
                owner:
                  uuid: 655a2a4e-79b1-4637-9f13-b904730022ef
                  entityType: actor
                  associationType: reference
              type: object
              properties:
                id:
                  description: >-
                    Uniquely identifies this entity. A URI can be assigned by
                    the client to indicate where more information
                     can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
                     required to send it in the request. One can be generated for you by the server.
                  type: string
                name:
                  description: Name of the entity. For display purposes and search only.
                  type: string
                creationDate:
                  description: The creation date of this entity.
                  type: string
                lastModified:
                  description: >-
                    The last modified date of this entity. If none is given the
                    creation date is used instead.
                  type: string
                contextEvents:
                  description: >-
                    The context events provides some optional information about
                    the events that can provide additional information
                     on the current state of this entity.

                    For example: your system might send ETA information for the
                    arrival of a vehicle on a location. To make it clear

                    what caused this ETA to be updated, we can include some
                    information about what caused this ETA update by including

                    an event as context. If your ETA update was caused by a
                    location update, this event can be included as context. If

                    the ETA was caused by a traffic accident on the route of the
                    vehicle, you can include that event in the context.
                  type: array
                  items:
                    $ref: '#/components/schemas/events'
                content:
                  description: >-
                    The content of the document. There are two different options
                    on how the content can be provided. Either through

                    an external link to where the content lives. Or directly as
                    an encoded base64 string.
                  allOf:
                    - $ref: '#/components/schemas/content'
                externalAttributes:
                  description: >
                    External attributes are a simple way to add information in
                    an OpenTripModel message that could not fit into one of
                      the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
                      ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

                     > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
                       it was intended.
                  type: object
                  properties: {}
                  additionalProperties:
                    $ref: '#/components/schemas/unrestricted_json'
                documentType:
                  description: >-
                    The type of the document, such as a photo, text document,
                    PDF etc.
                  type: string
                filename:
                  description: The name of the file.
                  type: string
                mimeType:
                  description: >-
                    The official MIME type of the file. See
                    [Wikepedia](https://en.wikipedia.org/wiki/Media_type) for
                    more information.
                  type: string
                description:
                  description: >-
                    The description of the file, for example what purpose it
                    serves.
                  type: string
                creator:
                  description: >-
                    The actor who owns the document. If not provided, the
                    creator will be assumed to be the owner.
                  oneOf:
                    - $ref: '#/components/schemas/document-creator-inline'
                    - $ref: '#/components/schemas/reference-roles'
                    - $ref: '#/components/schemas/attributeRestriction-roles'
                  discriminator:
                    propertyName: associationType
                    mapping:
                      inline: '#/components/schemas/document-creator-inline'
                      reference: '#/components/schemas/reference-roles'
                      attributeRestriction: '#/components/schemas/attributeRestriction-roles'
                owner:
                  description: >-
                    The actor who owns the document. If not provided, the
                    creator will be assumed to be the owner.
                  oneOf:
                    - $ref: '#/components/schemas/document-owner-inline'
                    - $ref: '#/components/schemas/reference-roles'
                    - $ref: '#/components/schemas/attributeRestriction-roles'
                  discriminator:
                    propertyName: associationType
                    mapping:
                      inline: '#/components/schemas/document-owner-inline'
                      reference: '#/components/schemas/reference-roles'
                      attributeRestriction: '#/components/schemas/attributeRestriction-roles'
              required:
                - content
      tags:
        - Document
      security:
        - BearerToken: []
  /api/v5/actions/{UUID}:
    get:
      responses:
        '200':
          description: Returned the entity with the provided UUID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/action'
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientError'
        '404':
          description: ''
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serverError'
      summary: Get a specific Action by its UUID
      parameters:
        - name: UUID
          in: path
          schema:
            type: string
            format: uuid
          description: The unique UUID of this Action
          required: true
      tags:
        - Action
      security:
        - BearerToken: []
    delete:
      responses:
        '204':
          description: Deleted action with the provided UUID
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientError'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serverError'
      summary: Deletes a Action
      parameters:
        - name: UUID
          in: path
          schema:
            type: string
            format: uuid
          description: The unique UUID of the Action to be deleted
          required: true
      tags:
        - Action
      security:
        - BearerToken: []
  /api/v5/actions:
    put:
      responses:
        '200':
          description: The same entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/action'
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientError'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serverError'
      summary: Adds a new Action
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/action'
      tags:
        - Action
      security:
        - BearerToken: []
  /api/v5/events/{UUID}:
    get:
      responses:
        '200':
          description: Returned the entity with the provided UUID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/events'
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientError'
        '404':
          description: ''
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serverError'
      summary: Get a specific Event by its UUID
      parameters:
        - name: UUID
          in: path
          schema:
            type: string
            format: uuid
          description: The unique UUID of this Event
          required: true
      tags:
        - Event
      security:
        - BearerToken: []
    delete:
      responses:
        '204':
          description: Deleted event with the provided UUID
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientError'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serverError'
      summary: Deletes a Event
      parameters:
        - name: UUID
          in: path
          schema:
            type: string
            format: uuid
          description: The unique UUID of the Event to be deleted
          required: true
      tags:
        - Event
      security:
        - BearerToken: []
  /api/v5/events:
    put:
      responses:
        '200':
          description: The same entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/events'
        '400':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/clientError'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/serverError'
      summary: Adds a new Event
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/events'
      tags:
        - Event
      security:
        - BearerToken: []
components:
  securitySchemes:
    BearerToken:
      type: http
      description: >-
        The scope of OTM currently does not include authentication requirements.
        Though the recommended approach is

        to use Bearer authentication (also known as token authentication).
      scheme: bearer
  schemas:
    events:
      oneOf:
        - $ref: '#/components/schemas/associationCreatedEvent'
        - $ref: '#/components/schemas/associationRemovedEvent'
        - $ref: '#/components/schemas/updateEvent'
        - $ref: '#/components/schemas/locationUpdateEvent'
        - $ref: '#/components/schemas/startMovingEvent'
        - $ref: '#/components/schemas/stopMovingEvent'
        - $ref: '#/components/schemas/startWaitingEvent'
        - $ref: '#/components/schemas/stopMovingEvent'
        - $ref: '#/components/schemas/startEngineEvent'
        - $ref: '#/components/schemas/stopEngineEvent'
        - $ref: '#/components/schemas/sensorUpdateEvent'
        - $ref: '#/components/schemas/fuelConsumedEvent'
        - $ref: '#/components/schemas/emissionEvent'
      discriminator:
        propertyName: eventType
        mapping:
          associationCreatedEvent: '#/components/schemas/associationCreatedEvent'
          associationRemovedEvent: '#/components/schemas/associationRemovedEvent'
          updateEvent: '#/components/schemas/updateEvent'
          locationUpdateEvent: '#/components/schemas/locationUpdateEvent'
          startMovingEvent: '#/components/schemas/startMovingEvent'
          stopMovingEvent: '#/components/schemas/stopMovingEvent'
          startWaitingEvent: '#/components/schemas/startWaitingEvent'
          startEngineEvent: '#/components/schemas/startEngineEvent'
          stopEngineEvent: '#/components/schemas/stopEngineEvent'
          sensorUpdateEvent: '#/components/schemas/sensorUpdateEvent'
          fuelConsumedEvent: '#/components/schemas/fuelConsumedEvent'
          emissionEvent: '#/components/schemas/emissionEvent'
    unrestricted_json:
      description: Space for any (nested) properties that do not fit into OTM5
      type: object
      properties: {}
    actor-person:
      allOf:
        - $ref: '#/components/schemas/actor'
        - type: object
          properties:
            firstName:
              description: The first name.
              type: string
            lastName:
              description: The last name.
              type: string
            role:
              description: The role/function title in relation to where the person works.
              type: string
            department:
              type: string
            languages:
              description: The languages this person speaks.
              type: array
              items:
                type: string
                description: One must use the ISO 639-3 codes.
                example: nld
    actor:
      example:
        id: 45db6ed0-28a7-4e4a-baba-3d5f8d171103
        name: Logistics manager
        contactDetails:
          - value: Simon Isaac
            remark: Wants to be called 'Sim'.
            type: firstName
          - value: Macan
            type: lastName
          - value: '+312012345678'
            remark: private cellphone of the CEO
            language: nld
            type: phone
          - value: simon@macan
            type: email
          - value: NL74BANK5890469479
            type: iban
          - value: NL000099998B57
            type: vatCode
      type: object
      discriminator:
        propertyName: type
        mapping:
          person: '#/components/schemas/actor-person'
          company: '#/components/schemas/actor-company'
      anyOf:
        - $ref: '#/components/schemas/actor-person'
        - $ref: '#/components/schemas/actor-company'
      properties:
        entityType:
          example: actor
          type: string
          enum:
            - actor
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        type:
          type: string
          enum:
            - person
            - company
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        contactDetails:
          description: Contact details for this `Actor`.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/phone'
              - $ref: '#/components/schemas/mobilePhone'
              - $ref: '#/components/schemas/email'
              - $ref: '#/components/schemas/firstName'
              - $ref: '#/components/schemas/lastName'
              - $ref: '#/components/schemas/name'
              - $ref: '#/components/schemas/vatCode'
              - $ref: '#/components/schemas/gln'
              - $ref: '#/components/schemas/iban'
              - $ref: '#/components/schemas/eori'
              - $ref: '#/components/schemas/other'
            discriminator:
              propertyName: type
              mapping:
                phone: '#/components/schemas/phone'
                mobilePhone: '#/components/schemas/mobilePhone'
                email: '#/components/schemas/email'
                firstName: '#/components/schemas/firstName'
                lastName: '#/components/schemas/lastName'
                name: '#/components/schemas/name'
                vatCode: '#/components/schemas/vatCode'
                gln: '#/components/schemas/gln'
                iban: '#/components/schemas/iban'
                eori: '#/components/schemas/eori'
                other: '#/components/schemas/other'
        locations:
          description: Locations for this `Actor`.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-locations-inline'
              - $ref: '#/components/schemas/reference'
              - $ref: '#/components/schemas/attributeRestriction'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-locations-inline'
                reference: '#/components/schemas/reference'
                attributeRestriction: '#/components/schemas/attributeRestriction'
      required:
        - entityType
    associated-actors-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/associated-actors'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
        roles:
          description: >-
            The roles this actor can have, one or multiple of:


            - **Carrier**: the actor which is responsible for physically
            delivering the goods from one place to another. Note
              that the actual transport can be delegated to another party (subcontractor), but the carrier remains responsible.
            - **Shipper**: the actor that engages in shipping goods and is the
            main contractor, ensuring the shipment takes place.

            - **Consignee**: the actor that is the buyer of the goods.

            - **Consignor**: the actor that sells the goods.

            - **Receiver**: the actor that receives the goods.

            - **Driver**: the actor that drives the vehicle containing the
            goods.

            - **Subcontractor**: The actor actually carrying out the physical
            delivery of the goods.

            - **Owner**: The actor owning the associated entity, e.g. the owner
            of a location or vehicle.


            **How these are related**

            The _consignee_ requires goods from the _consignor_. The _shipper_
            is the party responsible for

            ensuring this shipment takes place. The _carrier_ is the one
            responsible for transporting the goods, and ensures

            they are delivered to the _receiver_. If required/desired, the
            carrier can delegate the actual delivery to

            another party, the _subcontractor_. A _driver_ is an actual person
            driving the vehicle. Note that a single

            actor can have multiple roles, for instance, an actor can be the
            shipper and consignor at the same time. Also

            note that there might be an actor that does not fit any of these
            roles. Then the roles may be left empty. However

            if the role of the actor fits any of the above it must be present.
          type: array
          items:
            type: string
            enum:
              - shipper
              - carrier
              - consignee
              - consignor
              - receiver
              - driver
              - subcontractor
              - owner
      required:
        - associationType
        - entity
    reference-roles:
      type: object
      properties:
        associationType:
          example: reference
          type: string
          enum:
            - reference
        uuid:
          description: Universally unique identifier (RFC 4122)
          example: 5f27b818-027a-4008-b410-de01e1dd3a93
          type: string
          format: uuid
        entityType:
          type: string
          enum:
            - actor
            - constraint
            - location
            - sensor
            - trip
            - vehicle
            - transportOrder
            - consignment
            - goods
            - items
            - transportEquipment
            - load
            - unload
            - handOver
            - attachTransportEquipment
            - detachTransportEquipment
            - document
            - route
            - stop
            - move
            - genericAction
            - associationCreated
            - associationRemoved
            - updateEvent
            - locationUpdate
            - sensorUpdate
            - startWaiting
            - stopWaiting
            - startMoving
            - stopMoving
            - startEngine
            - stopEngine
        description:
          type: string
        roles:
          description: >-
            The roles this actor can have, one or multiple of:


            - **Carrier**: the actor which is responsible for physically
            delivering the goods from one place to another. Note
              that the actual transport can be delegated to another party (subcontractor), but the carrier remains responsible.
            - **Shipper**: the actor that engages in shipping goods and is the
            main contractor, ensuring the shipment takes place.

            - **Consignee**: the actor that is the buyer of the goods.

            - **Consignor**: the actor that sells the goods.

            - **Receiver**: the actor that receives the goods.

            - **Driver**: the actor that drives the vehicle containing the
            goods.

            - **Subcontractor**: The actor actually carrying out the physical
            delivery of the goods.

            - **Owner**: The actor owning the associated entity, e.g. the owner
            of a location or vehicle.


            **How these are related**

            The _consignee_ requires goods from the _consignor_. The _shipper_
            is the party responsible for

            ensuring this shipment takes place. The _carrier_ is the one
            responsible for transporting the goods, and ensures

            they are delivered to the _receiver_. If required/desired, the
            carrier can delegate the actual delivery to

            another party, the _subcontractor_. A _driver_ is an actual person
            driving the vehicle. Note that a single

            actor can have multiple roles, for instance, an actor can be the
            shipper and consignor at the same time. Also

            note that there might be an actor that does not fit any of these
            roles. Then the roles may be left empty. However

            if the role of the actor fits any of the above it must be present.
          type: array
          items:
            type: string
            enum:
              - shipper
              - carrier
              - consignee
              - consignor
              - receiver
              - driver
              - subcontractor
              - owner
      required:
        - associationType
        - uuid
        - entityType
    attributeRestriction-roles:
      type: object
      properties:
        associationType:
          example: attributeRestriction
          type: string
          enum:
            - attributeRestriction
        restriction:
          type: object
          properties:
            externalAttributes:
              type: object
              properties: {}
              additionalProperties:
                type: string
          required:
            - externalAttributes
        entityType:
          type: string
          enum:
            - actor
            - constraint
            - location
            - sensor
            - trip
            - vehicle
            - transportOrder
            - consignment
            - goods
            - items
            - transportEquipment
            - load
            - unload
            - handOver
            - attachTransportEquipment
            - detachTransportEquipment
            - document
            - route
            - stop
            - move
            - genericAction
            - associationCreated
            - associationRemoved
            - updateEvent
            - locationUpdate
            - sensorUpdate
            - startWaiting
            - stopWaiting
            - startMoving
            - stopMoving
            - startEngine
            - stopEngine
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
        roles:
          description: >-
            The roles this actor can have, one or multiple of:


            - **Carrier**: the actor which is responsible for physically
            delivering the goods from one place to another. Note
              that the actual transport can be delegated to another party (subcontractor), but the carrier remains responsible.
            - **Shipper**: the actor that engages in shipping goods and is the
            main contractor, ensuring the shipment takes place.

            - **Consignee**: the actor that is the buyer of the goods.

            - **Consignor**: the actor that sells the goods.

            - **Receiver**: the actor that receives the goods.

            - **Driver**: the actor that drives the vehicle containing the
            goods.

            - **Subcontractor**: The actor actually carrying out the physical
            delivery of the goods.

            - **Owner**: The actor owning the associated entity, e.g. the owner
            of a location or vehicle.


            **How these are related**

            The _consignee_ requires goods from the _consignor_. The _shipper_
            is the party responsible for

            ensuring this shipment takes place. The _carrier_ is the one
            responsible for transporting the goods, and ensures

            they are delivered to the _receiver_. If required/desired, the
            carrier can delegate the actual delivery to

            another party, the _subcontractor_. A _driver_ is an actual person
            driving the vehicle. Note that a single

            actor can have multiple roles, for instance, an actor can be the
            shipper and consignor at the same time. Also

            note that there might be an actor that does not fit any of these
            roles. Then the roles may be left empty. However

            if the role of the actor fits any of the above it must be present.
          type: array
          items:
            type: string
            enum:
              - shipper
              - carrier
              - consignee
              - consignor
              - receiver
              - driver
              - subcontractor
              - owner
      required:
        - associationType
        - restriction
        - entityType
    latLonPointGeoReference:
      type: object
      properties:
        type:
          example: latLonPointGeoReference
          type: string
          enum:
            - latLonPointGeoReference
        lat:
          description: The latitude of a point location.
          type: number
          format: double
        lon:
          description: The longitude of a point location.
          type: number
          format: double
        speed:
          description: The speed of a moving vehicle.
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        heading:
          description: >-
            The heading of a vehicle, that is: the direction the "nose" of the
            vehicle is pointing to.
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        bearing:
          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.
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        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
      required:
        - type
        - lat
        - lon
    latLonArrayGeoReference:
      type: object
      properties:
        type:
          example: latLonArrayGeoReference
          type: string
          enum:
            - latLonArrayGeoReference
        points:
          description: An array of lat/lon points.
          type: array
          items:
            type: object
            properties:
              lat:
                description: The latitude of a point location.
                type: number
                format: double
              lon:
                description: The longitude of a point location.
                type: number
                format: double
              speed:
                description: The speed of a moving vehicle.
                type: object
                properties:
                  value:
                    description: Value in the given unit.
                    type: number
                    format: double
                  unit:
                    description: >-
                      Measurement unit of this value. OTM5 currently does not
                      enforce any units of measure. So you are free to use

                      any unit necessary. However to ensure parties use OTM5
                      consistently there are a few rules:

                      * For **currencies** use the [ISO_4217
                      standard](https://en.wikipedia.org/wiki/ISO_4217)

                      * For **mass**, **volume** and **length** the [SI system
                      (International System of
                      Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                      is
                        recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                        proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                      * For degrees the recommend approach is Celsius, but
                      Fahrenheit and Kelvin are also supported. To again avoid
                        problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                        (C, F, or K).
                      * For velocity use the metric system. The required format
                      would then be \<length\>/\<time unit\> for the metric
                        system, such as km/h (kilometer per hour) or m/s (meter per second).

                      Since usage is not enforced you can deviate from these
                      rules, though only do so if strictly necessary. The

                      benefit from using a standard comes from consistent use,
                      so deviating from the recommendations diminishes your

                      benefit.


                      If the type of unit you need is not supported please
                      create a

                      [change
                      request](https://github.com/opentripmodel/otm5-change-requests)
                    type: string
                required:
                  - value
                  - unit
              heading:
                description: >-
                  The heading of a vehicle, that is: the direction the "nose" of
                  the vehicle is pointing to.
                type: object
                properties:
                  value:
                    description: Value in the given unit.
                    type: number
                    format: double
                  unit:
                    description: >-
                      Measurement unit of this value. OTM5 currently does not
                      enforce any units of measure. So you are free to use

                      any unit necessary. However to ensure parties use OTM5
                      consistently there are a few rules:

                      * For **currencies** use the [ISO_4217
                      standard](https://en.wikipedia.org/wiki/ISO_4217)

                      * For **mass**, **volume** and **length** the [SI system
                      (International System of
                      Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                      is
                        recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                        proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                      * For degrees the recommend approach is Celsius, but
                      Fahrenheit and Kelvin are also supported. To again avoid
                        problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                        (C, F, or K).
                      * For velocity use the metric system. The required format
                      would then be \<length\>/\<time unit\> for the metric
                        system, such as km/h (kilometer per hour) or m/s (meter per second).

                      Since usage is not enforced you can deviate from these
                      rules, though only do so if strictly necessary. The

                      benefit from using a standard comes from consistent use,
                      so deviating from the recommendations diminishes your

                      benefit.


                      If the type of unit you need is not supported please
                      create a

                      [change
                      request](https://github.com/opentripmodel/otm5-change-requests)
                    type: string
                required:
                  - value
                  - unit
              bearing:
                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.
                type: object
                properties:
                  value:
                    description: Value in the given unit.
                    type: number
                    format: double
                  unit:
                    description: >-
                      Measurement unit of this value. OTM5 currently does not
                      enforce any units of measure. So you are free to use

                      any unit necessary. However to ensure parties use OTM5
                      consistently there are a few rules:

                      * For **currencies** use the [ISO_4217
                      standard](https://en.wikipedia.org/wiki/ISO_4217)

                      * For **mass**, **volume** and **length** the [SI system
                      (International System of
                      Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                      is
                        recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                        proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                      * For degrees the recommend approach is Celsius, but
                      Fahrenheit and Kelvin are also supported. To again avoid
                        problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                        (C, F, or K).
                      * For velocity use the metric system. The required format
                      would then be \<length\>/\<time unit\> for the metric
                        system, such as km/h (kilometer per hour) or m/s (meter per second).

                      Since usage is not enforced you can deviate from these
                      rules, though only do so if strictly necessary. The

                      benefit from using a standard comes from consistent use,
                      so deviating from the recommendations diminishes your

                      benefit.


                      If the type of unit you need is not supported please
                      create a

                      [change
                      request](https://github.com/opentripmodel/otm5-change-requests)
                    type: string
                required:
                  - value
                  - unit
              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
            required:
              - lat
              - lon
      required:
        - type
        - points
    Point:
      type: object
      properties:
        type:
          example: Point
          type: string
          enum:
            - Point
        coordinates:
          description: >-
            A [GeoJSON](https://tools.ietf.org/html/rfc7946) [Point
            geometry](https://tools.ietf.org/html/rfc7946#section-3.1.2).
          type: array
          items:
            type: number
            format: double
      required:
        - type
        - coordinates
    LineString:
      type: object
      properties:
        type:
          example: LineString
          type: string
          enum:
            - LineString
        coordinates:
          description: >-
            A [GeoJSON](https://tools.ietf.org/html/rfc7946) [LineString
            geometry](https://tools.ietf.org/html/rfc7946#section-3.1.4).
          type: array
          items:
            type: array
            items:
              type: number
              format: double
      required:
        - type
        - coordinates
    Polygon:
      type: object
      properties:
        type:
          example: Polygon
          type: string
          enum:
            - Polygon
        coordinates:
          description: >-
            A [GeoJSON](https://tools.ietf.org/html/rfc7946) [Polygon
            geometry](https://tools.ietf.org/html/rfc7946#section-3.1.6).
          type: array
          items:
            type: array
            items:
              type: array
              items:
                type: number
                format: double
      required:
        - type
        - coordinates
    MultiPoint:
      type: object
      properties:
        type:
          example: MultiPoint
          type: string
          enum:
            - MultiPoint
        coordinates:
          description: >-
            A [GeoJSON](https://tools.ietf.org/html/rfc7946) [MultiPoint
            geometry](https://tools.ietf.org/html/rfc7946#section-3.1.3).
          type: array
          items:
            type: array
            items:
              type: number
              format: double
      required:
        - type
        - coordinates
    MultiLineString:
      type: object
      properties:
        type:
          example: MultiLineString
          type: string
          enum:
            - MultiLineString
        coordinates:
          description: >-
            A [GeoJSON](https://tools.ietf.org/html/rfc7946) [MultiLineString
            geometry](https://tools.ietf.org/html/rfc7946#section-3.1.5).
          type: array
          items:
            type: array
            items:
              type: array
              items:
                type: number
                format: double
      required:
        - type
        - coordinates
    MultiPolygon:
      type: object
      properties:
        type:
          example: MultiPolygon
          type: string
          enum:
            - MultiPolygon
        coordinates:
          description: >-
            A [GeoJSON](https://tools.ietf.org/html/rfc7946) [MultiPolygon
            geometry](https://tools.ietf.org/html/rfc7946#section-3.1.7).
          type: array
          items:
            type: array
            items:
              type: array
              items:
                type: array
                items:
                  type: number
                  format: double
      required:
        - type
        - coordinates
    Feature:
      type: object
      properties:
        type:
          example: Feature
          type: string
          enum:
            - Feature
        geometry:
          description: >-
            A [GeoJSON](https://tools.ietf.org/html/rfc7946)
            [Geometry](https://tools.ietf.org/html/rfc7946#section-3.1) object.
          oneOf:
            - $ref: '#/components/schemas/Point'
            - $ref: '#/components/schemas/LineString'
            - $ref: '#/components/schemas/Polygon'
            - $ref: '#/components/schemas/MultiPoint'
            - $ref: '#/components/schemas/MultiLineString'
            - $ref: '#/components/schemas/MultiPolygon'
          discriminator:
            propertyName: type
            mapping:
              Point: '#/components/schemas/Point'
              LineString: '#/components/schemas/LineString'
              Polygon: '#/components/schemas/Polygon'
              MultiPoint: '#/components/schemas/MultiPoint'
              MultiLineString: '#/components/schemas/MultiLineString'
              MultiPolygon: '#/components/schemas/MultiPolygon'
        properties:
          description: >-
            [GeoJSON](https://tools.ietf.org/html/rfc7946)

            [properties](https://tools.ietf.org/html/rfc7946#section-3.1).
            Please don't overuse this, since most relevant propeties are
            probably

            already present in OTM fields.
          type: object
          properties: {}
          additionalProperties:
            type: string
      required:
        - type
        - geometry
    openLRGeoReference:
      type: object
      properties:
        type:
          example: openLRGeoReference
          type: string
          enum:
            - openLRGeoReference
        openLRString:
          description: >-
            A base64 encoded binary [OpenLR](http://openlr.org/documents.html)
            string.
          type: string
      required:
        - type
        - openLRString
    tmcLocationGeoReference:
      type: object
      properties:
        type:
          example: tmcLocationGeoReference
          type: string
          enum:
            - tmcLocationGeoReference
        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
          enum:
            - positive
            - negative
        offset:
          description: Offset from the TMC location in meters.
          type: integer
          format: int64
      required:
        - type
        - countryCode
        - tableId
        - tableVersionId
        - locationCode
    tmcArrayGeoReference:
      type: object
      properties:
        type:
          example: tmcArrayGeoReference
          type: string
          enum:
            - tmcArrayGeoReference
        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
          items:
            type: object
            properties:
              locationCode:
                description: TMC location code.
                type: string
              direction:
                description: TMC direction.
                type: string
                enum:
                  - positive
                  - negative
            required:
              - locationCode
              - direction
        startOffset:
          description: Offset from the first TMC location in meters.
          type: integer
          format: int64
        endOffset:
          description: Offset from the last TMC location in meters.
          type: integer
          format: int64
      required:
        - type
        - countryCode
        - tableId
        - tableVersionId
        - points
    addressGeoReference:
      type: object
      properties:
        type:
          example: addressGeoReference
          type: string
          enum:
            - addressGeoReference
        name:
          description: Name of the address.
          type: string
        street:
          description: Street of the address.
          type: string
        houseNumber:
          description: House number of the address, without any extension.
          type: string
        houseNumberAddition:
          description: Addition or extension of the house number.
          type: string
        postalCode:
          description: Postal code of the address
          type: string
        city:
          description: The city of the address.
          type: string
        country:
          description: >-
            [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1)
            country code.
          type: string
      required:
        - type
    Address:
      type: object
      properties:
        name:
          description: Name of the address.
          type: string
        street:
          description: Street of the address.
          type: string
        houseNumber:
          description: House number of the address, without any extension.
          type: string
        houseNumberAddition:
          description: Addition or extension of the house number.
          type: string
        postalCode:
          description: Postal code of the address
          type: string
        city:
          description: The city of the address.
          type: string
        country:
          description: >-
            [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1)
            country code.
          type: string
    phone:
      type: object
      properties:
        type:
          example: phone
          type: string
          enum:
            - phone
        value:
          description: >-
            A phone number, note that this means the land line phone number.
            Mobile phone is a separate type of contact detail
          type: string
        remark:
          description: Remark for this phone.
          type: string
        language:
          description: Language required for contacting. One must use the ISO 639-3 codes.
          type: string
      required:
        - type
        - value
    mobilePhone:
      type: object
      properties:
        type:
          example: mobilePhone
          type: string
          enum:
            - mobilePhone
        value:
          description: >-
            A mobile phone number. Note for a land line you can use the normal
            phone contact detail type.
          type: string
        remark:
          description: Remark for this mobile phone.
          type: string
        language:
          description: Language required for contacting. One must use the ISO 639-3 codes.
          type: string
      required:
        - type
        - value
    email:
      type: object
      properties:
        type:
          example: email
          type: string
          enum:
            - email
        value:
          description: An email address.
          type: string
        remark:
          description: Remark for this email.
          type: string
        language:
          description: Language required for contacting. One must use the ISO 639-3 codes.
          type: string
      required:
        - type
        - value
    firstName:
      type: object
      properties:
        type:
          example: firstName
          type: string
          enum:
            - firstName
        value:
          description: The first name.
          type: string
        remark:
          description: Remark for this first name.
          type: string
        language:
          description: Language required for contacting. One must use the ISO 639-3 codes.
          type: string
      required:
        - type
        - value
    lastName:
      type: object
      properties:
        type:
          example: lastName
          type: string
          enum:
            - lastName
        value:
          description: The last name.
          type: string
        remark:
          description: Remark for this last name.
          type: string
        language:
          description: Language required for contacting. One must use the ISO 639-3 codes.
          type: string
      required:
        - type
        - value
    name:
      type: object
      properties:
        type:
          example: name
          type: string
          enum:
            - name
        value:
          description: The full name. Includes first and last name if applicable.
          type: string
        remark:
          description: Remark for this name.
          type: string
        language:
          description: Language required for contacting. One must use the ISO 639-3 codes.
          type: string
      required:
        - type
        - value
    vatCode:
      type: object
      properties:
        type:
          example: vatCode
          type: string
          enum:
            - vatCode
        value:
          description: A VAT (Value Added Taxes) code.
          type: string
        remark:
          description: Remark for this VAT code.
          type: string
        language:
          description: Language required for contacting. One must use the ISO 639-3 codes.
          type: string
      required:
        - type
        - value
    gln:
      type: object
      properties:
        type:
          example: gln
          type: string
          enum:
            - gln
        value:
          description: A GLN (Global Location Number) code.
          type: string
        remark:
          description: Remark for this GLN code.
          type: string
        language:
          description: Language required for contacting. One must use the ISO 639-3 codes.
          type: string
      required:
        - type
        - value
    iban:
      type: object
      properties:
        type:
          example: iban
          type: string
          enum:
            - iban
        value:
          description: An IBAN (International Bank Account Number) code.
          type: string
        remark:
          description: Remark for this IBAN code.
          type: string
        language:
          description: Language required for contacting. One must use the ISO 639-3 codes.
          type: string
      required:
        - type
        - value
    eori:
      type: object
      properties:
        type:
          example: eori
          type: string
          enum:
            - eori
        value:
          description: >-
            An EORI number. See [the official
            specification](https://ec.europa.eu/taxation_customs/dds2/eos/eori_home.jsp?Lang=en)
            for more details.
          type: string
        remark:
          description: Remark for this EORI number.
          type: string
        language:
          description: Language required for contacting. One must use the ISO 639-3 codes.
          type: string
      required:
        - type
        - value
    other:
      type: object
      properties:
        type:
          example: other
          type: string
          enum:
            - other
        value:
          description: Some other contact detail.
          type: string
        remark:
          description: Remark for this other type of contact detail.
          type: string
        language:
          description: Language required for contacting. One must use the ISO 639-3 codes.
          type: string
      required:
        - type
        - value
    associated-locations-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/associated-locations'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    reference:
      type: object
      properties:
        associationType:
          example: reference
          type: string
          enum:
            - reference
        uuid:
          description: Universally unique identifier (RFC 4122)
          example: 5f27b818-027a-4008-b410-de01e1dd3a93
          type: string
          format: uuid
        entityType:
          type: string
          enum:
            - actor
            - constraint
            - location
            - sensor
            - trip
            - vehicle
            - transportOrder
            - consignment
            - goods
            - items
            - transportEquipment
            - load
            - unload
            - handOver
            - attachTransportEquipment
            - detachTransportEquipment
            - document
            - route
            - stop
            - move
            - genericAction
            - associationCreated
            - associationRemoved
            - updateEvent
            - locationUpdate
            - sensorUpdate
            - startWaiting
            - stopWaiting
            - startMoving
            - stopMoving
            - startEngine
            - stopEngine
        description:
          type: string
      required:
        - associationType
        - uuid
        - entityType
    attributeRestriction:
      type: object
      properties:
        associationType:
          example: attributeRestriction
          type: string
          enum:
            - attributeRestriction
        restriction:
          type: object
          properties:
            externalAttributes:
              type: object
              properties: {}
              additionalProperties:
                type: string
          required:
            - externalAttributes
        entityType:
          type: string
          enum:
            - actor
            - constraint
            - location
            - sensor
            - trip
            - vehicle
            - transportOrder
            - consignment
            - goods
            - items
            - transportEquipment
            - load
            - unload
            - handOver
            - attachTransportEquipment
            - detachTransportEquipment
            - document
            - route
            - stop
            - move
            - genericAction
            - associationCreated
            - associationRemoved
            - updateEvent
            - locationUpdate
            - sensorUpdate
            - startWaiting
            - stopWaiting
            - startMoving
            - stopMoving
            - startEngine
            - stopEngine
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - restriction
        - entityType
    genericConstraint:
      type: object
      properties:
        type:
          example: genericConstraint
          type: string
          enum:
            - genericConstraint
        description:
          type: string
      required:
        - type
        - description
    constraintValue:
      oneOf:
        - $ref: '#/components/schemas/genericConstraint'
        - $ref: '#/components/schemas/notConstraint'
        - $ref: '#/components/schemas/orConstraint'
        - $ref: '#/components/schemas/andConstraint'
        - $ref: '#/components/schemas/routeConstraint'
        - $ref: '#/components/schemas/routeEntityConstraint'
        - $ref: '#/components/schemas/vehicleTypeConstraint'
        - $ref: '#/components/schemas/fuelTypeConstraint'
        - $ref: '#/components/schemas/emissionStandardConstraint'
        - $ref: '#/components/schemas/sensorValueConstraint'
        - $ref: '#/components/schemas/timeWindowConstraint'
        - $ref: '#/components/schemas/transportEquipmentTypeConstraint'
        - $ref: '#/components/schemas/valueBoundConstraint'
        - $ref: '#/components/schemas/accessConstraint'
        - $ref: '#/components/schemas/speedConstraint'
        - $ref: '#/components/schemas/weightConstraint'
        - $ref: '#/components/schemas/sizeConstraint'
        - $ref: '#/components/schemas/temperatureConstraint'
        - $ref: '#/components/schemas/endDateTimeConstraint'
        - $ref: '#/components/schemas/startDateTimeConstraint'
      discriminator:
        propertyName: type
        mapping:
          genericConstraint: '#/components/schemas/genericConstraint'
          notConstraint: '#/components/schemas/notConstraint'
          orConstraint: '#/components/schemas/orConstraint'
          andConstraint: '#/components/schemas/andConstraint'
          routeConstraint: '#/components/schemas/routeConstraint'
          routeEntityConstraint: '#/components/schemas/routeEntityConstraint'
          vehicleTypeConstraint: '#/components/schemas/vehicleTypeConstraint'
          fuelTypeConstraint: '#/components/schemas/fuelTypeConstraint'
          emissionStandardConstraint: '#/components/schemas/emissionStandardConstraint'
          sensorValueConstraint: '#/components/schemas/sensorValueConstraint'
          timeWindowConstraint: '#/components/schemas/timeWindowConstraint'
          transportEquipmentTypeConstraint: '#/components/schemas/transportEquipmentTypeConstraint'
          valueBoundConstraint: '#/components/schemas/valueBoundConstraint'
          accessConstraint: '#/components/schemas/accessConstraint'
          speedConstraint: '#/components/schemas/speedConstraint'
          weightConstraint: '#/components/schemas/weightConstraint'
          sizeConstraint: '#/components/schemas/sizeConstraint'
          temperatureConstraint: '#/components/schemas/temperatureConstraint'
          endDateTimeConstraint: '#/components/schemas/endDateTimeConstraint'
          startDateTimeConstraint: '#/components/schemas/startDateTimeConstraint'
    notConstraint:
      type: object
      properties:
        type:
          example: notConstraint
          type: string
          enum:
            - notConstraint
        not:
          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.
          allOf:
            - $ref: '#/components/schemas/constraintValue'
        description:
          description: >-
            The description for this (sub)-constraints. Can be used to make
            combined constraints using **and**, **or** and **not** easier to
            process.
          type: string
      required:
        - type
        - not
    orConstraint:
      type: object
      properties:
        type:
          example: orConstraint
          type: string
          enum:
            - orConstraint
        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/constraintValue'
        description:
          description: >-
            The description for this (sub)-constraints. Can be used to make
            combined constraints using **and**, **or** and **not** easier to
            process.
          type: string
      required:
        - type
        - or
    andConstraint:
      type: object
      properties:
        type:
          example: andConstraint
          type: string
          enum:
            - andConstraint
        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/constraintValue'
        description:
          description: >-
            The description for this (sub)-constraints. Can be used to make
            combined constraints using **and**, **or** and **not** easier to
            process.
          type: string
      required:
        - type
        - and
    routeConstraint:
      type: object
      properties:
        type:
          example: routeConstraint
          type: string
          enum:
            - routeConstraint
        route:
          oneOf:
            - $ref: '#/components/schemas/latLonPointGeoReference'
            - $ref: '#/components/schemas/latLonArrayGeoReference'
            - $ref: '#/components/schemas/Feature'
            - $ref: '#/components/schemas/openLRGeoReference'
            - $ref: '#/components/schemas/tmcLocationGeoReference'
            - $ref: '#/components/schemas/tmcArrayGeoReference'
            - $ref: '#/components/schemas/addressGeoReference'
          discriminator:
            propertyName: type
            mapping:
              latLonPointGeoReference: '#/components/schemas/latLonPointGeoReference'
              latLonArrayGeoReference: '#/components/schemas/latLonArrayGeoReference'
              Feature: '#/components/schemas/Feature'
              openLRGeoReference: '#/components/schemas/openLRGeoReference'
              tmcLocationGeoReference: '#/components/schemas/tmcLocationGeoReference'
              tmcArrayGeoReference: '#/components/schemas/tmcArrayGeoReference'
              addressGeoReference: '#/components/schemas/addressGeoReference'
        description:
          description: >-
            The description for this (sub)-constraints. Can be used to make
            combined constraints using **and**, **or** and **not** easier to
            process.
          type: string
      required:
        - type
        - route
    route-constraint:
      example:
        id: 89a7bb4d-8720-4db9-aef7-4c3309186c3e
        name: Example combined constraint
        value:
          and:
            - startTime: '2021-06-23T10:00:00Z'
              endTime: '2021-06-23T13:00:00Z'
              description: alert-threshold
              type: timeWindowConstraint
            - constraintType: maximum
              maximum:
                value: 5
                unit: C
              type: temperatureConstraint
            - or:
                - fuelTypes:
                    - battery
                  type: fuelTypeConstraint
                - fuelTypes:
                    - biodiesel
                  type: fuelTypeConstraint
                - minimum: euro5
                  type: emissionStandardConstraint
              type: orConstraint
          type: andConstraint
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        value:
          $ref: '#/components/schemas/constraintValue'
        enforceability:
          description: >-
            The enforceability of the constraint. Indicates whether or not the
            constraint is a suggestion/preference or something that is mandatory
            to adhere to.
          default: enforced
          type: string
          enum:
            - enforced
            - preference
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
      required:
        - value
    route-constraint-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/route-constraint'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    route-entity-constraint:
      example:
        id: beb9a25f-3f64-42ae-b1c6-e89cd450f66b
        name: An example route using coordinates to indicate how to drive.
        geoReference:
          geometry:
            coordinates:
              - - 1
                - 0
              - - 5
                - 0
              - - 5
                - 3
              - - 13
                - 3
              - - 13
                - 7
            type: LineString
          type: Feature
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        geoReference:
          description: Geographic representation of this route.
          oneOf:
            - $ref: '#/components/schemas/latLonPointGeoReference'
            - $ref: '#/components/schemas/latLonArrayGeoReference'
            - $ref: '#/components/schemas/Feature'
            - $ref: '#/components/schemas/openLRGeoReference'
            - $ref: '#/components/schemas/tmcLocationGeoReference'
            - $ref: '#/components/schemas/tmcArrayGeoReference'
            - $ref: '#/components/schemas/addressGeoReference'
          discriminator:
            propertyName: type
            mapping:
              latLonPointGeoReference: '#/components/schemas/latLonPointGeoReference'
              latLonArrayGeoReference: '#/components/schemas/latLonArrayGeoReference'
              Feature: '#/components/schemas/Feature'
              openLRGeoReference: '#/components/schemas/openLRGeoReference'
              tmcLocationGeoReference: '#/components/schemas/tmcLocationGeoReference'
              tmcArrayGeoReference: '#/components/schemas/tmcArrayGeoReference'
              addressGeoReference: '#/components/schemas/addressGeoReference'
        geoReferences:
          deprecated: true
          description: >-
            Geographic representation of this route. This property is
            deprecated; use geoReferece (not plural) instead.
          oneOf:
            - $ref: '#/components/schemas/latLonPointGeoReference'
            - $ref: '#/components/schemas/latLonArrayGeoReference'
            - $ref: '#/components/schemas/Feature'
            - $ref: '#/components/schemas/openLRGeoReference'
            - $ref: '#/components/schemas/tmcLocationGeoReference'
            - $ref: '#/components/schemas/tmcArrayGeoReference'
            - $ref: '#/components/schemas/addressGeoReference'
          discriminator:
            propertyName: type
            mapping:
              latLonPointGeoReference: '#/components/schemas/latLonPointGeoReference'
              latLonArrayGeoReference: '#/components/schemas/latLonArrayGeoReference'
              Feature: '#/components/schemas/Feature'
              openLRGeoReference: '#/components/schemas/openLRGeoReference'
              tmcLocationGeoReference: '#/components/schemas/tmcLocationGeoReference'
              tmcArrayGeoReference: '#/components/schemas/tmcArrayGeoReference'
              addressGeoReference: '#/components/schemas/addressGeoReference'
        actors:
          description: >-
            Actors associated with this route, for instance the Company that
            requires this route as a Last-Mile guidance.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-actors-inline'
              - $ref: '#/components/schemas/reference-roles'
              - $ref: '#/components/schemas/attributeRestriction-roles'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-actors-inline'
                reference: '#/components/schemas/reference-roles'
                attributeRestriction: '#/components/schemas/attributeRestriction-roles'
        constraint:
          description: >-
            Constraints of using this route, for instance it might only be used
            by vehicles with below a certain weight.
          oneOf:
            - $ref: '#/components/schemas/route-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/route-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
      required:
        - geoReference
    route-entity-constraint-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/route-entity-constraint'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    routeEntityConstraint:
      type: object
      properties:
        type:
          example: routeEntityConstraint
          type: string
          enum:
            - routeEntityConstraint
        route:
          oneOf:
            - $ref: '#/components/schemas/route-entity-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/route-entity-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        description:
          description: >-
            The description for this (sub)-constraints. Can be used to make
            combined constraints using **and**, **or** and **not** easier to
            process.
          type: string
      required:
        - type
        - route
    vehicleTypeConstraint:
      type: object
      properties:
        type:
          example: vehicleTypeConstraint
          type: string
          enum:
            - vehicleTypeConstraint
        vehicleTypes:
          description: The vehicle types that this constraint apply to.
          type: array
          items:
            type: string
        description:
          description: >-
            The description for this (sub)-constraints. Can be used to make
            combined constraints using **and**, **or** and **not** easier to
            process.
          type: string
      required:
        - type
        - vehicleTypes
    fuelTypeConstraint:
      type: object
      properties:
        type:
          example: fuelTypeConstraint
          type: string
          enum:
            - fuelTypeConstraint
        fuelTypes:
          description: The fuel types to which this constraint apply.
          type: array
          items:
            type: string
        description:
          description: >-
            The description for this (sub)-constraints. Can be used to make
            combined constraints using **and**, **or** and **not** easier to
            process.
          type: string
      required:
        - type
        - fuelTypes
    emissionStandardConstraint:
      type: object
      properties:
        type:
          example: emissionStandardConstraint
          type: string
          enum:
            - emissionStandardConstraint
        minimum:
          description: >-
            The minimum required emission standard that is required for the
            vehicle.
          type: string
          enum:
            - euro0
            - euro1
            - euro2
            - euro3
            - euro4
            - euro5
            - euro6
        description:
          description: >-
            The description for this (sub)-constraints. Can be used to make
            combined constraints using **and**, **or** and **not** easier to
            process.
          type: string
      required:
        - type
        - minimum
    sensorValueConstraint:
      type: object
      properties:
        type:
          example: sensorValueConstraint
          type: string
          enum:
            - sensorValueConstraint
        sensor:
          type: string
        constraintType:
          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
            - range
        maximum:
          description: Maximum sensor value allowed.
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        minimum:
          description: Minimum sensor value allowed.
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        description:
          description: >-
            The description for this (sub)-constraints. Can be used to make
            combined constraints using **and**, **or** and **not** easier to
            process.
          type: string
      required:
        - type
        - constraintType
    timeWindowConstraint:
      type: object
      properties:
        type:
          example: timeWindowConstraint
          type: string
          enum:
            - timeWindowConstraint
        startTime:
          description: This constraint applies from the given start date/time.
          type: string
        endTime:
          description: This constraint applies until the given start date/time.
          type: string
        description:
          description: >-
            The description for this (sub)-constraints. Can be used to make
            combined constraints using **and**, **or** and **not** easier to
            process.
          type: string
      required:
        - type
    transportEquipmentTypeConstraint:
      type: object
      properties:
        type:
          example: transportEquipmentTypeConstraint
          type: string
          enum:
            - transportEquipmentTypeConstraint
        equipmentTypes:
          type: array
          items:
            type: string
        subEquipmentTypes:
          type: array
          items:
            type: string
        description:
          description: >-
            The description for this (sub)-constraints. Can be used to make
            combined constraints using **and**, **or** and **not** easier to
            process.
          type: string
      required:
        - type
        - equipmentTypes
    valueBoundConstraint:
      type: object
      properties:
        type:
          example: valueBoundConstraint
          type: string
          enum:
            - valueBoundConstraint
        valueType:
          type: string
          enum:
            - height
            - length
            - width
            - weight
            - speed
            - temperature
        constraintType:
          description: >
            The upper and lower bounds the value bound constraint required.
            Available options 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
            - range
        maximum:
          description: Maximum value allowed.
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        minimum:
          description: Minimum value allowed.
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        description:
          description: >-
            The description for this (sub)-constraints. Can be used to make
            combined constraints using **and**, **or** and **not** easier to
            process.
          type: string
      required:
        - type
        - valueType
        - constraintType
    accessConstraint:
      type: object
      properties:
        type:
          example: accessConstraint
          type: string
          enum:
            - accessConstraint
        access:
          type: string
          enum:
            - closed
            - partialClosed
        description:
          type: string
      required:
        - type
        - access
    speedConstraint:
      type: object
      properties:
        type:
          example: speedConstraint
          type: string
          enum:
            - speedConstraint
        constraintType:
          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
            - range
        maximum:
          description: Maximum speed allowed.
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        minimum:
          description: Minimum speed allowed.
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        description:
          description: >-
            The description for this (sub)-constraints. Can be used to make
            combined constraints using **and**, **or** and **not** easier to
            process.
          type: string
      required:
        - type
        - constraintType
    weightConstraint:
      type: object
      properties:
        type:
          example: weightConstraint
          type: string
          enum:
            - weightConstraint
        constraintType:
          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:
          description: Maximum weight allowed.
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        minimum:
          description: Minimum weight allowed.
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        description:
          description: >-
            The description for this (sub)-constraints. Can be used to make
            combined constraints using **and**, **or** and **not** easier to
            process.
          type: string
      required:
        - type
        - constraintType
    sizeConstraint:
      type: object
      properties:
        type:
          example: sizeConstraint
          type: string
          enum:
            - sizeConstraint
        constraintType:
          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
        maximum:
          description: Maximum size allowed.
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        minimum:
          description: Minimum size allowed.
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        description:
          description: >-
            The description for this (sub)-constraints. Can be used to make
            combined constraints using **and**, **or** and **not** easier to
            process.
          type: string
      required:
        - type
        - constraintType
    temperatureConstraint:
      type: object
      properties:
        type:
          example: temperatureConstraint
          type: string
          enum:
            - temperatureConstraint
        constraintType:
          description: |
            The type of temperature constraint. Available types are:
              - `maximum`: All temperatures below and including the maximum value are allowed.
              - `minimum`: All temperatures above and including the minimum value are allowed.
              - `range`: All temperatures in between and including the minimum and maximum values are allowed.
          type: string
          enum:
            - maximum
            - minimum
            - range
        maximum:
          description: Maximum temperatures allowed.
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        minimum:
          description: Minimum temperatures allowed.
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        description:
          description: >-
            The description for this (sub)-constraints. Can be used to make
            combined constraints using **and**, **or** and **not** easier to
            process.
          type: string
      required:
        - type
        - constraintType
    endDateTimeConstraint:
      type: object
      properties:
        type:
          example: endDateTimeConstraint
          type: string
          enum:
            - endDateTimeConstraint
        endDateTime:
          description: This constraint applies until the given start date/time.
          type: string
        description:
          description: >-
            The description for this (sub)-constraints. Can be used to make
            combined constraints using **and**, **or** and **not** easier to
            process.
          type: string
      required:
        - type
        - endDateTime
    startDateTimeConstraint:
      type: object
      properties:
        type:
          example: startDateTimeConstraint
          type: string
          enum:
            - startDateTimeConstraint
        startDateTime:
          description: This constraint applies from the given start date/time.
          type: string
        description:
          description: >-
            The description for this (sub)-constraints. Can be used to make
            combined constraints using **and**, **or** and **not** easier to
            process.
          type: string
      required:
        - type
        - startDateTime
    location-constraint:
      example:
        id: 89a7bb4d-8720-4db9-aef7-4c3309186c3e
        name: Example combined constraint
        value:
          and:
            - startTime: '2021-06-23T10:00:00Z'
              endTime: '2021-06-23T13:00:00Z'
              description: alert-threshold
              type: timeWindowConstraint
            - constraintType: maximum
              maximum:
                value: 5
                unit: C
              type: temperatureConstraint
            - or:
                - fuelTypes:
                    - battery
                  type: fuelTypeConstraint
                - fuelTypes:
                    - biodiesel
                  type: fuelTypeConstraint
                - minimum: euro5
                  type: emissionStandardConstraint
              type: orConstraint
          type: andConstraint
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        value:
          $ref: '#/components/schemas/constraintValue'
        enforceability:
          description: >-
            The enforceability of the constraint. Indicates whether or not the
            constraint is a suggestion/preference or something that is mandatory
            to adhere to.
          default: enforced
          type: string
          enum:
            - enforced
            - preference
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
      required:
        - value
    location-constraint-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/location-constraint'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    associated-locations:
      example:
        id: 11c11d75-e114-4b5f-9751-b3a4afa23ecf
        name: Main warehouse
        geoReference:
          lat: 5.4126792
          lon: 52.1956251
          type: latLonPointGeoReference
        type: warehouse
        administrativeReference:
          name: Supermarket warehouse
          street: Valutaboulevard
          houseNumber: '16'
          houseNumberAddition: C
          postalCode: 1825BT
          city: Amersfoort
          country: NL
        contactDetails:
          - value: '+312012345678'
            remark: private cellphone of the CEO
            language: nld
            type: phone
        remark: The cafe around the corner has the best coffee in town.
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        geoReference:
          description: >-
            Describes a geographic reference, this is the primary way to link a
            `Location` entity to a physical, geographic location.
          oneOf:
            - $ref: '#/components/schemas/latLonPointGeoReference'
            - $ref: '#/components/schemas/latLonArrayGeoReference'
            - $ref: '#/components/schemas/Feature'
            - $ref: '#/components/schemas/openLRGeoReference'
            - $ref: '#/components/schemas/tmcLocationGeoReference'
            - $ref: '#/components/schemas/tmcArrayGeoReference'
            - $ref: '#/components/schemas/addressGeoReference'
          discriminator:
            propertyName: type
            mapping:
              latLonPointGeoReference: '#/components/schemas/latLonPointGeoReference'
              latLonArrayGeoReference: '#/components/schemas/latLonArrayGeoReference'
              Feature: '#/components/schemas/Feature'
              openLRGeoReference: '#/components/schemas/openLRGeoReference'
              tmcLocationGeoReference: '#/components/schemas/tmcLocationGeoReference'
              tmcArrayGeoReference: '#/components/schemas/tmcArrayGeoReference'
              addressGeoReference: '#/components/schemas/addressGeoReference'
        externalAttributes:
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        unCode:
          description: >-
            the United Nations Code for Trade and Transport Locations, is a
            geographic coding scheme developed and
             maintained by United Nations Economic Commission for Europe (UNECE) to uniquely identify locations. See
             [this Wikipedia page](https://en.wikipedia.org/wiki/UN/LOCODE).
          type: string
        gln:
          description: >-
            The Global Location Number (GLN) is part of the GS1 systems of
            standards to uniquely identify a location. See
             also this [Wikipedia page](https://en.wikipedia.org/wiki/Global_Location_Number)
          type: string
        type:
          description: The type of location.
          type: string
          enum:
            - warehouse
            - store
            - environmentalZone
            - restrictedArea
            - customer
            - operationalBase
            - fuelStation
            - serviceStation
            - other
        otherLocationType:
          description: >-
            Description of the location in case type of location is set to
            'other'.
          type: string
        administrativeReference:
          description: >-
            Address information that is used as an administrative reference. For
            example: when the actual load location is different from the
            officially registered location, this holds the latter
          allOf:
            - $ref: '#/components/schemas/Address'
        contactDetails:
          description: Contact details for this `Location`.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/phone'
              - $ref: '#/components/schemas/mobilePhone'
              - $ref: '#/components/schemas/email'
              - $ref: '#/components/schemas/firstName'
              - $ref: '#/components/schemas/lastName'
              - $ref: '#/components/schemas/name'
              - $ref: '#/components/schemas/vatCode'
              - $ref: '#/components/schemas/gln'
              - $ref: '#/components/schemas/iban'
              - $ref: '#/components/schemas/eori'
              - $ref: '#/components/schemas/other'
            discriminator:
              propertyName: type
              mapping:
                phone: '#/components/schemas/phone'
                mobilePhone: '#/components/schemas/mobilePhone'
                email: '#/components/schemas/email'
                firstName: '#/components/schemas/firstName'
                lastName: '#/components/schemas/lastName'
                name: '#/components/schemas/name'
                vatCode: '#/components/schemas/vatCode'
                gln: '#/components/schemas/gln'
                iban: '#/components/schemas/iban'
                eori: '#/components/schemas/eori'
                other: '#/components/schemas/other'
        remark:
          description: >-
            Remark about the location. Please don't misuse this field for
            external references, use the `externalAttributes` field instead.
          type: string
        subLocations:
          description: >-
            The locations that are can be identified on their own, but are also
            part of this location. For example a dock at

            a large distribution area. Sub-locations can also be seen as 'points
            of interest' on a larger location.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-locations-inline'
              - $ref: '#/components/schemas/reference'
              - $ref: '#/components/schemas/attributeRestriction'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-locations-inline'
                reference: '#/components/schemas/reference'
                attributeRestriction: '#/components/schemas/attributeRestriction'
        actors:
          description: >-
            Locations can be associated with actors in multiple ways, though the
            most common one is the _owner_ of the location, either a person or a
            legal entity.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-actors-inline'
              - $ref: '#/components/schemas/reference-roles'
              - $ref: '#/components/schemas/attributeRestriction-roles'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-actors-inline'
                reference: '#/components/schemas/reference-roles'
                attributeRestriction: '#/components/schemas/attributeRestriction-roles'
        constraint:
          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`.
          oneOf:
            - $ref: '#/components/schemas/location-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/location-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
      required:
        - geoReference
    actor-company:
      allOf:
        - $ref: '#/components/schemas/actor'
        - type: object
          properties:
            coc:
              description: Chamber of Commerce number.
              type: string
            vat:
              description: Value Added Tax number.
              type: string
            actors:
              description: >-
                List of actors associated with this company actor. E.g. sister
                companies or employees.
              type: array
              items:
                oneOf:
                  - $ref: '#/components/schemas/associated-actors-inline'
                  - $ref: '#/components/schemas/reference-roles'
                  - $ref: '#/components/schemas/attributeRestriction-roles'
                discriminator:
                  propertyName: associationType
                  mapping:
                    inline: '#/components/schemas/associated-actors-inline'
                    reference: '#/components/schemas/reference-roles'
                    attributeRestriction: '#/components/schemas/attributeRestriction-roles'
            website:
              type: string
            iban:
              type: string
            headoffice:
              oneOf:
                - $ref: '#/components/schemas/associated-locations-inline'
                - $ref: '#/components/schemas/reference'
                - $ref: '#/components/schemas/attributeRestriction'
              discriminator:
                propertyName: associationType
                mapping:
                  inline: '#/components/schemas/associated-locations-inline'
                  reference: '#/components/schemas/reference'
                  attributeRestriction: '#/components/schemas/attributeRestriction'
            gln:
              type: string
    associated-actors:
      example:
        id: 45db6ed0-28a7-4e4a-baba-3d5f8d171103
        name: Logistics manager
        contactDetails:
          - value: Simon Isaac
            remark: Wants to be called 'Sim'.
            type: firstName
          - value: Macan
            type: lastName
          - value: '+312012345678'
            remark: private cellphone of the CEO
            language: nld
            type: phone
          - value: simon@macan
            type: email
          - value: NL74BANK5890469479
            type: iban
          - value: NL000099998B57
            type: vatCode
      type: object
      discriminator:
        propertyName: type
        mapping:
          person: '#/components/schemas/actor-person'
          company: '#/components/schemas/actor-company'
      anyOf:
        - $ref: '#/components/schemas/actor-person'
        - $ref: '#/components/schemas/actor-company'
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        type:
          type: string
          enum:
            - person
            - company
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        contactDetails:
          description: Contact details for this `Actor`.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/phone'
              - $ref: '#/components/schemas/mobilePhone'
              - $ref: '#/components/schemas/email'
              - $ref: '#/components/schemas/firstName'
              - $ref: '#/components/schemas/lastName'
              - $ref: '#/components/schemas/name'
              - $ref: '#/components/schemas/vatCode'
              - $ref: '#/components/schemas/gln'
              - $ref: '#/components/schemas/iban'
              - $ref: '#/components/schemas/eori'
              - $ref: '#/components/schemas/other'
            discriminator:
              propertyName: type
              mapping:
                phone: '#/components/schemas/phone'
                mobilePhone: '#/components/schemas/mobilePhone'
                email: '#/components/schemas/email'
                firstName: '#/components/schemas/firstName'
                lastName: '#/components/schemas/lastName'
                name: '#/components/schemas/name'
                vatCode: '#/components/schemas/vatCode'
                gln: '#/components/schemas/gln'
                iban: '#/components/schemas/iban'
                eori: '#/components/schemas/eori'
                other: '#/components/schemas/other'
        locations:
          description: Locations for this `Actor`.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-locations-inline'
              - $ref: '#/components/schemas/reference'
              - $ref: '#/components/schemas/attributeRestriction'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-locations-inline'
                reference: '#/components/schemas/reference'
                attributeRestriction: '#/components/schemas/attributeRestriction'
    sensor-constraint:
      example:
        id: 89a7bb4d-8720-4db9-aef7-4c3309186c3e
        name: Example combined constraint
        value:
          and:
            - startTime: '2021-06-23T10:00:00Z'
              endTime: '2021-06-23T13:00:00Z'
              description: alert-threshold
              type: timeWindowConstraint
            - constraintType: maximum
              maximum:
                value: 5
                unit: C
              type: temperatureConstraint
            - or:
                - fuelTypes:
                    - battery
                  type: fuelTypeConstraint
                - fuelTypes:
                    - biodiesel
                  type: fuelTypeConstraint
                - minimum: euro5
                  type: emissionStandardConstraint
              type: orConstraint
          type: andConstraint
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        value:
          $ref: '#/components/schemas/constraintValue'
        enforceability:
          description: >-
            The enforceability of the constraint. Indicates whether or not the
            constraint is a suggestion/preference or something that is mandatory
            to adhere to.
          default: enforced
          type: string
          enum:
            - enforced
            - preference
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
      required:
        - value
    sensor-constraint-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/sensor-constraint'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    sensors-association:
      example:
        id: 6666f00c-1332-472c-aff9-bc11b3d53296
        name: Temperature sensor in trailer x
        placement: Compartment 1
        sensorType: accelerometer
        actors:
          - entity:
              id: 45db6ed0-28a7-4e4a-baba-3d5f8d171103
              name: Logistics manager
              contactDetails:
                - value: Simon Isaac
                  remark: Wants to be called 'Sim'.
                  type: firstName
                - value: Macan
                  type: lastName
                - value: '+312012345678'
                  remark: private cellphone of the CEO
                  language: nld
                  type: phone
                - value: simon@macan
                  type: email
                - value: NL74BANK5890469479
                  type: iban
                - value: NL000099998B57
                  type: vatCode
            associationType: inline
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        placement:
          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.
          type: string
        sensorType:
          description: The type of sensor.
          type: string
        actors:
          description: >-
            The actors associated with this sensor, for instance the owners, the
            producers or the users of this sensor.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-actors-inline'
              - $ref: '#/components/schemas/reference-roles'
              - $ref: '#/components/schemas/attributeRestriction-roles'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-actors-inline'
                reference: '#/components/schemas/reference-roles'
                attributeRestriction: '#/components/schemas/attributeRestriction-roles'
        constraint:
          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`.
          oneOf:
            - $ref: '#/components/schemas/sensor-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/sensor-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
    sensors-association-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/sensors-association'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    vehicle-association:
      example:
        id: b9bb914d-845e-46f2-91ff-31fa4bac2fbe
        name: Bob's Boxtruck
        vehicleType: boxtruck
        fuel: electricity
        loadCapacities:
          - value: 1000
            unit: kg
        length:
          value: 8
          unit: m
        height:
          value: 2.8
          unit: m
        width:
          value: 2
          unit: m
        licensePlate: AB-12-CD
        emptyWeight:
          value: 2000
          unit: kg
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        vehicleType:
          description: The type of vehicle
          type: string
        fuel:
          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.
          type: string
          enum:
            - petrol
            - diesel
            - electricity
            - hydrogen
            - lng
            - cng
            - adBlue
            - other
        otherFuelType:
          description: >-
            Type of fuel, only to be used when the `fuel` field is set to
            `other`.
          type: string
        averageFuelConsumption:
          description: >-
            The average fuel consumption for this vehicle. Usually measured in
            distance per 100l
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        emissionStandard:
          description: >
            European emission standards are vehicle emission standards for
            exhaust emissions of new vehicles sold in the

            European Union and EEA member states. The standards are defined in a
            series of European Union directives

            staging the progressive introduction of increasingly stringent
            standards. See also

            [European emission standards -
            Wikipedia](https://en.wikipedia.org/wiki/European_emission_standards#Emission_standards_for_trucks_and_buses).
          type: string
          enum:
            - euro0
            - euro1
            - euro2
            - euro3
            - euro4
            - euro5
            - euro6
        maxLinks:
          description: >-
            Maximum number of links to other `Vehicle` s. Typical values are 0,
            1 or 2.
          type: integer
          format: int32
        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:
            type: object
            properties:
              value:
                description: Value in the given unit.
                type: number
                format: double
              unit:
                description: >-
                  Measurement unit of this value. OTM5 currently does not
                  enforce any units of measure. So you are free to use

                  any unit necessary. However to ensure parties use OTM5
                  consistently there are a few rules:

                  * For **currencies** use the [ISO_4217
                  standard](https://en.wikipedia.org/wiki/ISO_4217)

                  * For **mass**, **volume** and **length** the [SI system
                  (International System of
                  Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                  is
                    recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                    proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                  * For degrees the recommend approach is Celsius, but
                  Fahrenheit and Kelvin are also supported. To again avoid
                    problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                    (C, F, or K).
                  * For velocity use the metric system. The required format
                  would then be \<length\>/\<time unit\> for the metric
                    system, such as km/h (kilometer per hour) or m/s (meter per second).

                  Since usage is not enforced you can deviate from these rules,
                  though only do so if strictly necessary. The

                  benefit from using a standard comes from consistent use, so
                  deviating from the recommendations diminishes your

                  benefit.


                  If the type of unit you need is not supported please create a

                  [change
                  request](https://github.com/opentripmodel/otm5-change-requests)
                type: string
            required:
              - value
              - unit
        length:
          description: The length of the `Vehicle`.
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        height:
          description: The height of the `Vehicle`.
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        width:
          description: The width of the `Vehicle`.
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        licensePlate:
          description: The license plate of the vehicle.
          type: string
        emptyWeight:
          description: The weight of the `Vehicle` when empty.
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        actors:
          description: >-
            There are multiple roles in which actors can be associated with a
            vehicle, such as the owner or the driver of the vehicle.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-actors-inline'
              - $ref: '#/components/schemas/reference-roles'
              - $ref: '#/components/schemas/attributeRestriction-roles'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-actors-inline'
                reference: '#/components/schemas/reference-roles'
                attributeRestriction: '#/components/schemas/attributeRestriction-roles'
        sensors:
          description: >-
            Vehicles might have some sensors that are permanently attached,
            these can be described using the sensors field.
             If one works with detachable sensors the recommend approach is to use associationCreated and
             associationRemoved events instead.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/sensors-association-inline'
              - $ref: '#/components/schemas/reference'
              - $ref: '#/components/schemas/attributeRestriction'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/sensors-association-inline'
                reference: '#/components/schemas/reference'
                attributeRestriction: '#/components/schemas/attributeRestriction'
    vehicle-association-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/vehicle-association'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    trip-constraint:
      example:
        id: 89a7bb4d-8720-4db9-aef7-4c3309186c3e
        name: Example combined constraint
        value:
          and:
            - startTime: '2021-06-23T10:00:00Z'
              endTime: '2021-06-23T13:00:00Z'
              description: alert-threshold
              type: timeWindowConstraint
            - constraintType: maximum
              maximum:
                value: 5
                unit: C
              type: temperatureConstraint
            - or:
                - fuelTypes:
                    - battery
                  type: fuelTypeConstraint
                - fuelTypes:
                    - biodiesel
                  type: fuelTypeConstraint
                - minimum: euro5
                  type: emissionStandardConstraint
              type: orConstraint
          type: andConstraint
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        value:
          $ref: '#/components/schemas/constraintValue'
        enforceability:
          description: >-
            The enforceability of the constraint. Indicates whether or not the
            constraint is a suggestion/preference or something that is mandatory
            to adhere to.
          default: enforced
          type: string
          enum:
            - enforced
            - preference
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
      required:
        - value
    trip-constraint-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/trip-constraint'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    trip:
      example:
        id: 50824123-0924-4563-ac1e-ca0e37487823
        name: Daily supply trip
        status: inTransit
        transportMode: road
        vehicle:
          uuid: b9bb914d-845e-46f2-91ff-31fa4bac2fbe
          entityType: vehicle
          associationType: reference
      type: object
      properties:
        entityType:
          example: trip
          type: string
          enum:
            - trip
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        status:
          description: >-
            Whether this trip is a draft, requested, confirmed, in transit,
            completed or cancelled. The values accepted

            (replaced by confirmed) and modified (replaced the lastModified
            field on every entity) are deprecated since

            OTM5.1, but will be supported for the whole OTM5.X line.
          type: string
          enum:
            - draft
            - requested
            - confirmed
            - inTransit
            - completed
            - cancelled
            - accepted
            - modified
        transportMode:
          description: >-
            Method of transport used for the carriage of goods on this trip, can
            either be using a ship (maritime or

            inland waterway), a truck/car/van/bike/etc. (road), using the train
            (rail), or using a plane (air). These

            values are based on the

            [recommendation of
            UNECE](https://unece.org/fileadmin/DAM/cefact/recommendations/rec19/rec19_ecetrd138.pdf).
          type: string
          enum:
            - maritime
            - road
            - rail
            - air
            - inlandWaterway
        vehicle:
          description: The `Vehicle` that is driving this trip.
          oneOf:
            - $ref: '#/components/schemas/vehicle-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/vehicle-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        actors:
          description: >-
            The actors associated with this trip, for instance the client or the
            executing party
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-actors-inline'
              - $ref: '#/components/schemas/reference-roles'
              - $ref: '#/components/schemas/attributeRestriction-roles'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-actors-inline'
                reference: '#/components/schemas/reference-roles'
                attributeRestriction: '#/components/schemas/attributeRestriction-roles'
        constraint:
          description: >-
            Constraints this trip has to abide to, such as the start and end
            date times in which it has to be completed.
          oneOf:
            - $ref: '#/components/schemas/trip-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/trip-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
      required:
        - entityType
    sensor:
      example:
        id: 6666f00c-1332-472c-aff9-bc11b3d53296
        name: Temperature sensor in trailer x
        placement: Compartment 1
        sensorType: accelerometer
        actors:
          - entity:
              id: 45db6ed0-28a7-4e4a-baba-3d5f8d171103
              name: Logistics manager
              contactDetails:
                - value: Simon Isaac
                  remark: Wants to be called 'Sim'.
                  type: firstName
                - value: Macan
                  type: lastName
                - value: '+312012345678'
                  remark: private cellphone of the CEO
                  language: nld
                  type: phone
                - value: simon@macan
                  type: email
                - value: NL74BANK5890469479
                  type: iban
                - value: NL000099998B57
                  type: vatCode
            associationType: inline
      type: object
      properties:
        entityType:
          example: sensor
          type: string
          enum:
            - sensor
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        placement:
          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.
          type: string
        sensorType:
          description: The type of sensor.
          type: string
        actors:
          description: >-
            The actors associated with this sensor, for instance the owners, the
            producers or the users of this sensor.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-actors-inline'
              - $ref: '#/components/schemas/reference-roles'
              - $ref: '#/components/schemas/attributeRestriction-roles'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-actors-inline'
                reference: '#/components/schemas/reference-roles'
                attributeRestriction: '#/components/schemas/attributeRestriction-roles'
        constraint:
          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`.
          oneOf:
            - $ref: '#/components/schemas/sensor-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/sensor-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
      required:
        - entityType
    route:
      example:
        id: beb9a25f-3f64-42ae-b1c6-e89cd450f66b
        name: An example route using coordinates to indicate how to drive.
        geoReference:
          geometry:
            coordinates:
              - - 1
                - 0
              - - 5
                - 0
              - - 5
                - 3
              - - 13
                - 3
              - - 13
                - 7
            type: LineString
          type: Feature
      type: object
      properties:
        entityType:
          example: route
          type: string
          enum:
            - route
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        geoReference:
          description: Geographic representation of this route.
          oneOf:
            - $ref: '#/components/schemas/latLonPointGeoReference'
            - $ref: '#/components/schemas/latLonArrayGeoReference'
            - $ref: '#/components/schemas/Feature'
            - $ref: '#/components/schemas/openLRGeoReference'
            - $ref: '#/components/schemas/tmcLocationGeoReference'
            - $ref: '#/components/schemas/tmcArrayGeoReference'
            - $ref: '#/components/schemas/addressGeoReference'
          discriminator:
            propertyName: type
            mapping:
              latLonPointGeoReference: '#/components/schemas/latLonPointGeoReference'
              latLonArrayGeoReference: '#/components/schemas/latLonArrayGeoReference'
              Feature: '#/components/schemas/Feature'
              openLRGeoReference: '#/components/schemas/openLRGeoReference'
              tmcLocationGeoReference: '#/components/schemas/tmcLocationGeoReference'
              tmcArrayGeoReference: '#/components/schemas/tmcArrayGeoReference'
              addressGeoReference: '#/components/schemas/addressGeoReference'
        geoReferences:
          deprecated: true
          description: >-
            Geographic representation of this route. This property is
            deprecated; use geoReferece (not plural) instead.
          oneOf:
            - $ref: '#/components/schemas/latLonPointGeoReference'
            - $ref: '#/components/schemas/latLonArrayGeoReference'
            - $ref: '#/components/schemas/Feature'
            - $ref: '#/components/schemas/openLRGeoReference'
            - $ref: '#/components/schemas/tmcLocationGeoReference'
            - $ref: '#/components/schemas/tmcArrayGeoReference'
            - $ref: '#/components/schemas/addressGeoReference'
          discriminator:
            propertyName: type
            mapping:
              latLonPointGeoReference: '#/components/schemas/latLonPointGeoReference'
              latLonArrayGeoReference: '#/components/schemas/latLonArrayGeoReference'
              Feature: '#/components/schemas/Feature'
              openLRGeoReference: '#/components/schemas/openLRGeoReference'
              tmcLocationGeoReference: '#/components/schemas/tmcLocationGeoReference'
              tmcArrayGeoReference: '#/components/schemas/tmcArrayGeoReference'
              addressGeoReference: '#/components/schemas/addressGeoReference'
        actors:
          description: >-
            Actors associated with this route, for instance the Company that
            requires this route as a Last-Mile guidance.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-actors-inline'
              - $ref: '#/components/schemas/reference-roles'
              - $ref: '#/components/schemas/attributeRestriction-roles'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-actors-inline'
                reference: '#/components/schemas/reference-roles'
                attributeRestriction: '#/components/schemas/attributeRestriction-roles'
        constraint:
          description: >-
            Constraints of using this route, for instance it might only be used
            by vehicles with below a certain weight.
          oneOf:
            - $ref: '#/components/schemas/route-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/route-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
      required:
        - entityType
        - geoReference
    location:
      example:
        id: 11c11d75-e114-4b5f-9751-b3a4afa23ecf
        name: Main warehouse
        geoReference:
          lat: 5.4126792
          lon: 52.1956251
          type: latLonPointGeoReference
        type: warehouse
        administrativeReference:
          name: Supermarket warehouse
          street: Valutaboulevard
          houseNumber: '16'
          houseNumberAddition: C
          postalCode: 1825BT
          city: Amersfoort
          country: NL
        contactDetails:
          - value: '+312012345678'
            remark: private cellphone of the CEO
            language: nld
            type: phone
        remark: The cafe around the corner has the best coffee in town.
      type: object
      properties:
        entityType:
          example: location
          type: string
          enum:
            - location
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        geoReference:
          description: >-
            Describes a geographic reference, this is the primary way to link a
            `Location` entity to a physical, geographic location.
          oneOf:
            - $ref: '#/components/schemas/latLonPointGeoReference'
            - $ref: '#/components/schemas/latLonArrayGeoReference'
            - $ref: '#/components/schemas/Feature'
            - $ref: '#/components/schemas/openLRGeoReference'
            - $ref: '#/components/schemas/tmcLocationGeoReference'
            - $ref: '#/components/schemas/tmcArrayGeoReference'
            - $ref: '#/components/schemas/addressGeoReference'
          discriminator:
            propertyName: type
            mapping:
              latLonPointGeoReference: '#/components/schemas/latLonPointGeoReference'
              latLonArrayGeoReference: '#/components/schemas/latLonArrayGeoReference'
              Feature: '#/components/schemas/Feature'
              openLRGeoReference: '#/components/schemas/openLRGeoReference'
              tmcLocationGeoReference: '#/components/schemas/tmcLocationGeoReference'
              tmcArrayGeoReference: '#/components/schemas/tmcArrayGeoReference'
              addressGeoReference: '#/components/schemas/addressGeoReference'
        externalAttributes:
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        unCode:
          description: >-
            the United Nations Code for Trade and Transport Locations, is a
            geographic coding scheme developed and
             maintained by United Nations Economic Commission for Europe (UNECE) to uniquely identify locations. See
             [this Wikipedia page](https://en.wikipedia.org/wiki/UN/LOCODE).
          type: string
        gln:
          description: >-
            The Global Location Number (GLN) is part of the GS1 systems of
            standards to uniquely identify a location. See
             also this [Wikipedia page](https://en.wikipedia.org/wiki/Global_Location_Number)
          type: string
        type:
          description: The type of location.
          type: string
          enum:
            - warehouse
            - store
            - environmentalZone
            - restrictedArea
            - customer
            - operationalBase
            - fuelStation
            - serviceStation
            - other
        otherLocationType:
          description: >-
            Description of the location in case type of location is set to
            'other'.
          type: string
        administrativeReference:
          description: >-
            Address information that is used as an administrative reference. For
            example: when the actual load location is different from the
            officially registered location, this holds the latter
          allOf:
            - $ref: '#/components/schemas/Address'
        contactDetails:
          description: Contact details for this `Location`.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/phone'
              - $ref: '#/components/schemas/mobilePhone'
              - $ref: '#/components/schemas/email'
              - $ref: '#/components/schemas/firstName'
              - $ref: '#/components/schemas/lastName'
              - $ref: '#/components/schemas/name'
              - $ref: '#/components/schemas/vatCode'
              - $ref: '#/components/schemas/gln'
              - $ref: '#/components/schemas/iban'
              - $ref: '#/components/schemas/eori'
              - $ref: '#/components/schemas/other'
            discriminator:
              propertyName: type
              mapping:
                phone: '#/components/schemas/phone'
                mobilePhone: '#/components/schemas/mobilePhone'
                email: '#/components/schemas/email'
                firstName: '#/components/schemas/firstName'
                lastName: '#/components/schemas/lastName'
                name: '#/components/schemas/name'
                vatCode: '#/components/schemas/vatCode'
                gln: '#/components/schemas/gln'
                iban: '#/components/schemas/iban'
                eori: '#/components/schemas/eori'
                other: '#/components/schemas/other'
        remark:
          description: >-
            Remark about the location. Please don't misuse this field for
            external references, use the `externalAttributes` field instead.
          type: string
        subLocations:
          description: >-
            The locations that are can be identified on their own, but are also
            part of this location. For example a dock at

            a large distribution area. Sub-locations can also be seen as 'points
            of interest' on a larger location.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-locations-inline'
              - $ref: '#/components/schemas/reference'
              - $ref: '#/components/schemas/attributeRestriction'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-locations-inline'
                reference: '#/components/schemas/reference'
                attributeRestriction: '#/components/schemas/attributeRestriction'
        actors:
          description: >-
            Locations can be associated with actors in multiple ways, though the
            most common one is the _owner_ of the location, either a person or a
            legal entity.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-actors-inline'
              - $ref: '#/components/schemas/reference-roles'
              - $ref: '#/components/schemas/attributeRestriction-roles'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-actors-inline'
                reference: '#/components/schemas/reference-roles'
                attributeRestriction: '#/components/schemas/attributeRestriction-roles'
        constraint:
          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`.
          oneOf:
            - $ref: '#/components/schemas/location-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/location-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
      required:
        - entityType
        - geoReference
    constraint:
      example:
        id: 89a7bb4d-8720-4db9-aef7-4c3309186c3e
        name: Example combined constraint
        value:
          and:
            - startTime: '2021-06-23T10:00:00Z'
              endTime: '2021-06-23T13:00:00Z'
              description: alert-threshold
              type: timeWindowConstraint
            - constraintType: maximum
              maximum:
                value: 5
                unit: C
              type: temperatureConstraint
            - or:
                - fuelTypes:
                    - battery
                  type: fuelTypeConstraint
                - fuelTypes:
                    - biodiesel
                  type: fuelTypeConstraint
                - minimum: euro5
                  type: emissionStandardConstraint
              type: orConstraint
          type: andConstraint
      type: object
      properties:
        entityType:
          example: constraint
          type: string
          enum:
            - constraint
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        value:
          $ref: '#/components/schemas/constraintValue'
        enforceability:
          description: >-
            The enforceability of the constraint. Indicates whether or not the
            constraint is a suggestion/preference or something that is mandatory
            to adhere to.
          default: enforced
          type: string
          enum:
            - enforced
            - preference
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
      required:
        - entityType
        - value
    goods-constraint:
      example:
        id: 89a7bb4d-8720-4db9-aef7-4c3309186c3e
        name: Example combined constraint
        value:
          and:
            - startTime: '2021-06-23T10:00:00Z'
              endTime: '2021-06-23T13:00:00Z'
              description: alert-threshold
              type: timeWindowConstraint
            - constraintType: maximum
              maximum:
                value: 5
                unit: C
              type: temperatureConstraint
            - or:
                - fuelTypes:
                    - battery
                  type: fuelTypeConstraint
                - fuelTypes:
                    - biodiesel
                  type: fuelTypeConstraint
                - minimum: euro5
                  type: emissionStandardConstraint
              type: orConstraint
          type: andConstraint
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        value:
          $ref: '#/components/schemas/constraintValue'
        enforceability:
          description: >-
            The enforceability of the constraint. Indicates whether or not the
            constraint is a suggestion/preference or something that is mandatory
            to adhere to.
          default: enforced
          type: string
          enum:
            - enforced
            - preference
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
      required:
        - value
    goods-constraint-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/goods-constraint'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    items:
      example:
        id: 903807df-ee62-47aa-bf8e-7efd747618ce
        description: Box of bananas
        remark: Please deliver in time, we want fresh bananas
        barCode: CSE370
        productType: Fruit
        packagingMaterial: Box
        constraint:
          entity:
            value:
              and:
                - startTime: '2021-06-23T10:00:00Z'
                  endTime: '2021-06-23T13:00:00Z'
                  description: alert-threshold
                  type: timeWindowConstraint
                - constraintType: maximum
                  maximum:
                    value: 5
                    unit: C
                  type: temperatureConstraint
                - or:
                    - fuelTypes:
                        - battery
                      type: fuelTypeConstraint
                    - fuelTypes:
                        - biodiesel
                      type: fuelTypeConstraint
                    - minimum: euro5
                      type: emissionStandardConstraint
                  type: orConstraint
              type: andConstraint
          associationType: inline
        type: items
      type: object
      properties:
        type:
          example: items
          type: string
          enum:
            - items
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        description:
          description: A free text description of these goods.
          type: string
        remark:
          description: >-
            Remark belonging to the goods that need to be transported. For
            example a delivery note.
          type: string
        barCode:
          description: >-
            A barcode present on the (packaging of the) goods that uniquely
            identifies these goods.
          type: string
        quantity:
          description: >-
            A quantity determines how many of a certain good you have. Note that
            all other measurements are measured 

            for a **single** product, not for the total of products.
          type: integer
          format: int32
        weight:
          description: >-
            The net weight of a 'single' good, the total weight can be
            calculated by using the quantity and multiplying it

            with this weight.
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        grossWeight:
          description: >-
            The gross weight of a 'single' good, the total weight can be
            calculated by using the quantity and multiplying it

            with this weight.
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        width:
          description: >-
            The width of a 'single' good, the total width can be calculated by
            using the quantity and multiplying it

            with this width.
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        height:
          description: >-
            The height of a 'single' good, the total height can be calculated by
            using the quantity and multiplying

            it with this height.
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        length:
          description: >-
            The length of a 'single' good, the total length can be calculated by
            using the quantity and multiplying

            it with this length.
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        adr:
          description: >-
            Information about the potentially dangerous properties of these
            goods.
          type: object
          properties:
            UNNumber:
              description: >-
                A UN number (United Nations number) is a four-digit number that
                identifies hazardous materials, and articles

                (such as explosives, flammable liquids, oxidizers, toxic
                liquids, etc.) in the framework of international

                transport. The list of UN numbers can be found in the

                [official
                specification](https://unece.org/sites/default/files/2021-01/ADR2021_Vol1e_0.pdf).
              type: string
            waste:
              description: Indicator to be used in case commodity is classified as waste
              type: boolean
            description:
              description: >-
                Contains in upper case chararacters, the name of the substance
                or article, if the substance or article has

                been assigned its own specific UN number, or otherwise the
                proper shipping name shall be used. See 3.1.2 for

                further details
              type: string
            technicalName:
              description: >-
                The technical name which shall supplement the proper shipping
                name shall be the ISO common name. A

                recognized chemical name, if relevant a biological name, or
                other name currently used in scientific and

                technical handbooks, journals and texts. (see 3.1.2.8.1.1 in

                [ADR2021_Vol1e_0.pdf](https://unece.org/sites/default/files/2021-01/ADR2021_Vol1e_0.pdf)
              type: string
            dangerLabels:
              description: >-
                The model number(s) of the labels/placards (see 5.2.2.2 and
                5.3.1.7

                [ADR2021_Vol1e_0.pdf](https://unece.org/sites/default/files/2021-01/ADR2021_Vol1e_0.pdf)
                that have to be

                affixed to packages, containers, tank containers, portable
                tanks, MEGC’s and veh
              type: array
              items:
                type: string
            class:
              description: >-
                Number of the class, whose heading covers the dangerous
                substance or article. 2.1.1.1 The classes of

                dangerous goods according to ADR are the following:


                - Class 1 Explosive substances and articles

                - Class 2 Gases

                - Class 3 Flammable liquids

                - Class 4.1 Flammable solids, self reactive substances,
                polymerizing substances and solid desensitized
                  explosives
                - Class 4.2 Substances liable to spontaneous combustion

                - Class 4.3 Substances which, in contact with water, emit
                flammable gases

                - Class 5.1 Oxidizing substances

                - Class 5.2 Organic peroxides

                - Class6.1 Toxic substances

                - Class 6.2 Infectious substances

                - Class 7 Radioactive material

                - Class 8 Corrosive substances

                - Class 9 Miscellaneous dangerous substances and articles
              type: string
            classificationCode:
              description: >-
                The classification code of the dangerous substance or article.
                The code consists out of a division number

                and compatibility group letter depending on the class
              type: string
            packagingGroup:
              description: >-
                Packing Group means a group of which, for packing purposes,
                certain substances may be assigned in accordance

                with their degree of danger. Packing group values: I, II and II
              type: string
            tunnelCode:
              description: >-
                Code to indicate tunnel category where restrictions apply to the
                passage of vehicles carrying dangerous goods.

                Categories A.B.C.D. and E as defined in 1.9.5.2.2.

                [ADR2021_Vol1e_0.pdf](https://unece.org/sites/default/files/2021-01/ADR2021_Vol1e_0.pdf)
              type: string
            environmentallyHazardous:
              description: >-
                Indicator to be used to label waste as environmentally
                hazardous.
              type: boolean
            language:
              description: >-
                Marks shall be in an official language of the country of origin
                and also, if that language is not English,

                French or German, in English, French or German, unless
                agreements, if any, concluded between the countries

                concerned in transport operations provide otherwise.
              type: string
            specialProvisions:
              description: >-
                Contains the numeric codes of special provisions that have to be
                met. Listed in Chapter 3.3

                [ADR2021_Vol1e_0.pdf](https://unece.org/sites/default/files/2021-01/ADR2021_Vol1e_0.pdf)
              type: string
            points:
              description: >-
                Determines the amount of points the goods being transported are
                categorized with. The higher the points the

                more dangerous the goods are. The method for calculating ADR
                points can be found

                [here](https://prosafecon.de/en/the-1000-points-rule-how-are-adr-points-calculated).
              type: integer
              format: int32
            transportCategory:
              description: >-
                Determines the type of transport category the goods are
                categorized with. See

                [this table](https://specialcargo.nl/adr.php) for more
                information on the different categories.
              type: string
              enum:
                - '0'
                - '1'
                - '2'
                - '3'
                - '4'
          required:
            - UNNumber
            - description
            - packagingGroup
            - tunnelCode
            - language
        productType:
          description: The product type of goods, for instance bananas.
          type: string
        packagingMaterial:
          description: >-
            Description of the package type. Use as described by the [GS1
            standard](https://www.gs1.nl/media/qcdhditc/so-gs1das-guideline-packaging-type.pdf).
          type: string
        classificationLines:
          description: >-
            Product classification information often required at customs. A
            single product can contain multiple classification

            lines. For example whenever the product consists of multiple
            components that can each be classified. The most

            important information in the classification lines is often the HS
            code.
          type: array
          items:
            type: object
            properties:
              hsCode:
                description: >-
                  [The Harmonized System (HS)
                  code](https://en.wikipedia.org/wiki/Harmonized_System) is a
                  product classification

                  code used by all members of the World Customs Organization
                  (WCO) to classify goods for customs purposes.
                type: string
              description:
                description: The description of this classification line.
                type: string
              quantity:
                description: >-
                  A quantity determines how many of a certain good you have.
                  Note that all other measurements are measured 

                  for a **single** product, not for the total of products.
                type: integer
                format: int32
              weight:
                description: >-
                  The net weight of a 'single' good, the total weight can be
                  calculated by using the quantity and multiplying it

                  with this weight.
                type: object
                properties:
                  value:
                    description: Value in the given unit.
                    type: number
                    format: double
                  unit:
                    description: >-
                      Measurement unit of this value. OTM5 currently does not
                      enforce any units of measure. So you are free to use

                      any unit necessary. However to ensure parties use OTM5
                      consistently there are a few rules:

                      * For **currencies** use the [ISO_4217
                      standard](https://en.wikipedia.org/wiki/ISO_4217)

                      * For **mass**, **volume** and **length** the [SI system
                      (International System of
                      Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                      is
                        recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                        proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                      * For degrees the recommend approach is Celsius, but
                      Fahrenheit and Kelvin are also supported. To again avoid
                        problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                        (C, F, or K).
                      * For velocity use the metric system. The required format
                      would then be \<length\>/\<time unit\> for the metric
                        system, such as km/h (kilometer per hour) or m/s (meter per second).

                      Since usage is not enforced you can deviate from these
                      rules, though only do so if strictly necessary. The

                      benefit from using a standard comes from consistent use,
                      so deviating from the recommendations diminishes your

                      benefit.


                      If the type of unit you need is not supported please
                      create a

                      [change
                      request](https://github.com/opentripmodel/otm5-change-requests)
                    type: string
                required:
                  - value
                  - unit
              grossWeight:
                description: >-
                  The gross weight of a 'single' good, the total weight can be
                  calculated by using the quantity and multiplying it

                  with this weight.
                type: object
                properties:
                  value:
                    description: Value in the given unit.
                    type: number
                    format: double
                  unit:
                    description: >-
                      Measurement unit of this value. OTM5 currently does not
                      enforce any units of measure. So you are free to use

                      any unit necessary. However to ensure parties use OTM5
                      consistently there are a few rules:

                      * For **currencies** use the [ISO_4217
                      standard](https://en.wikipedia.org/wiki/ISO_4217)

                      * For **mass**, **volume** and **length** the [SI system
                      (International System of
                      Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                      is
                        recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                        proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                      * For degrees the recommend approach is Celsius, but
                      Fahrenheit and Kelvin are also supported. To again avoid
                        problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                        (C, F, or K).
                      * For velocity use the metric system. The required format
                      would then be \<length\>/\<time unit\> for the metric
                        system, such as km/h (kilometer per hour) or m/s (meter per second).

                      Since usage is not enforced you can deviate from these
                      rules, though only do so if strictly necessary. The

                      benefit from using a standard comes from consistent use,
                      so deviating from the recommendations diminishes your

                      benefit.


                      If the type of unit you need is not supported please
                      create a

                      [change
                      request](https://github.com/opentripmodel/otm5-change-requests)
                    type: string
                required:
                  - value
                  - unit
              width:
                description: >-
                  The width of a 'single' classified goods part, the total width
                  can be calculated by using the quantity and multiplying it

                  with this width.
                type: object
                properties:
                  value:
                    description: Value in the given unit.
                    type: number
                    format: double
                  unit:
                    description: >-
                      Measurement unit of this value. OTM5 currently does not
                      enforce any units of measure. So you are free to use

                      any unit necessary. However to ensure parties use OTM5
                      consistently there are a few rules:

                      * For **currencies** use the [ISO_4217
                      standard](https://en.wikipedia.org/wiki/ISO_4217)

                      * For **mass**, **volume** and **length** the [SI system
                      (International System of
                      Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                      is
                        recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                        proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                      * For degrees the recommend approach is Celsius, but
                      Fahrenheit and Kelvin are also supported. To again avoid
                        problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                        (C, F, or K).
                      * For velocity use the metric system. The required format
                      would then be \<length\>/\<time unit\> for the metric
                        system, such as km/h (kilometer per hour) or m/s (meter per second).

                      Since usage is not enforced you can deviate from these
                      rules, though only do so if strictly necessary. The

                      benefit from using a standard comes from consistent use,
                      so deviating from the recommendations diminishes your

                      benefit.


                      If the type of unit you need is not supported please
                      create a

                      [change
                      request](https://github.com/opentripmodel/otm5-change-requests)
                    type: string
                required:
                  - value
                  - unit
              height:
                description: >-
                  The height of a 'single' classified goods part, the total
                  height can be calculated by using the quantity and multiplying

                  it with this height.
                type: object
                properties:
                  value:
                    description: Value in the given unit.
                    type: number
                    format: double
                  unit:
                    description: >-
                      Measurement unit of this value. OTM5 currently does not
                      enforce any units of measure. So you are free to use

                      any unit necessary. However to ensure parties use OTM5
                      consistently there are a few rules:

                      * For **currencies** use the [ISO_4217
                      standard](https://en.wikipedia.org/wiki/ISO_4217)

                      * For **mass**, **volume** and **length** the [SI system
                      (International System of
                      Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                      is
                        recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                        proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                      * For degrees the recommend approach is Celsius, but
                      Fahrenheit and Kelvin are also supported. To again avoid
                        problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                        (C, F, or K).
                      * For velocity use the metric system. The required format
                      would then be \<length\>/\<time unit\> for the metric
                        system, such as km/h (kilometer per hour) or m/s (meter per second).

                      Since usage is not enforced you can deviate from these
                      rules, though only do so if strictly necessary. The

                      benefit from using a standard comes from consistent use,
                      so deviating from the recommendations diminishes your

                      benefit.


                      If the type of unit you need is not supported please
                      create a

                      [change
                      request](https://github.com/opentripmodel/otm5-change-requests)
                    type: string
                required:
                  - value
                  - unit
              length:
                description: >-
                  The length of a 'single' classified goods part, the total
                  length can be calculated by using the quantity and multiplying

                  it with this length.
                type: object
                properties:
                  value:
                    description: Value in the given unit.
                    type: number
                    format: double
                  unit:
                    description: >-
                      Measurement unit of this value. OTM5 currently does not
                      enforce any units of measure. So you are free to use

                      any unit necessary. However to ensure parties use OTM5
                      consistently there are a few rules:

                      * For **currencies** use the [ISO_4217
                      standard](https://en.wikipedia.org/wiki/ISO_4217)

                      * For **mass**, **volume** and **length** the [SI system
                      (International System of
                      Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                      is
                        recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                        proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                      * For degrees the recommend approach is Celsius, but
                      Fahrenheit and Kelvin are also supported. To again avoid
                        problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                        (C, F, or K).
                      * For velocity use the metric system. The required format
                      would then be \<length\>/\<time unit\> for the metric
                        system, such as km/h (kilometer per hour) or m/s (meter per second).

                      Since usage is not enforced you can deviate from these
                      rules, though only do so if strictly necessary. The

                      benefit from using a standard comes from consistent use,
                      so deviating from the recommendations diminishes your

                      benefit.


                      If the type of unit you need is not supported please
                      create a

                      [change
                      request](https://github.com/opentripmodel/otm5-change-requests)
                    type: string
                required:
                  - value
                  - unit
              others:
                description: >-
                  Fallback solution as a stopgap for fields not yet in otm. You
                  can use these, but please file a

                  [change
                  request](https://github.com/opentripmodel/otm5-change-requests/issues)
                  so that they can be properly

                  incorporated into the specification.
                type: array
                items:
                  type: object
                  properties:
                    key:
                      description: The key of this classification field
                      type: string
                    value:
                      description: >-
                        The value that belongs to the kef of this classification
                        field
                      type: string
                  required:
                    - key
                    - value
        actors:
          description: >-
            All parties associated with these goods, for example the consignor
            and consignee.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-actors-inline'
              - $ref: '#/components/schemas/reference-roles'
              - $ref: '#/components/schemas/attributeRestriction-roles'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-actors-inline'
                reference: '#/components/schemas/reference-roles'
                attributeRestriction: '#/components/schemas/attributeRestriction-roles'
        constraint:
          description: >-
            The constraints put on these goods, most notably the required
            temperature range or size of the vehicle. You

            should only put constraints on the goods themselves when it is
            important to distinguish goods within one

            consignment with different requirements. Individual constraints on a
            goods are powerful, but also complicate

            the solution. When possible, prefer to put the constraint on the
            consignment of the goods.
          oneOf:
            - $ref: '#/components/schemas/goods-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/goods-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
      required:
        - type
    transportEquipment:
      example:
        id: a29905bb-9af8-4118-896a-71b1eaf07cc0
        description: A trailer
        width:
          value: 2.46
          unit: m
        height:
          value: 2.7
          unit: m
        length:
          value: 13.62
          unit: m
        licensePlate: 123-ABC
        type: transportEquipment
      type: object
      properties:
        type:
          example: transportEquipment
          type: string
          enum:
            - transportEquipment
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        description:
          description: A free text description of these goods.
          type: string
        remark:
          description: >-
            Remark belonging to the goods that need to be transported. For
            example a delivery note.
          type: string
        barCode:
          description: >-
            A barcode present on the (packaging of the) goods that uniquely
            identifies these goods.
          type: string
        quantity:
          description: >-
            A quantity determines how many of a certain transport equipment you
            have. An example could be when you have

            multiple pallets that contain the same goods
          type: integer
          format: int32
        weight:
          description: >-
            The net weight of a 'single' transportEquipment, so this does not
            include the weight of the goods it is

            carrying. You can calculate the total net weight of all transport
            equipments by taking the quantity and

            multiplying it with this weight.
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        grossWeight:
          description: >-
            The gross weight of a 'single' transportEquipment, this includes
            both the equipment and the goods it is

            carrying. You can calculate the total gross weight of all transport
            equipments by taking the quantity and

            multiplying it with this weight.
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        width:
          description: >-
            The width of a 'single' transport equipment, the total width can be
            calculated by using the quantity and multiplying it

            with this width.
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        height:
          description: >-
            The height of a 'single' transport equipment, the total height can
            be calculated by using the quantity and multiplying

            it with this height.
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        length:
          description: >-
            The length of a 'single' transport equipment, the total length can
            be calculated by using the quantity and multiplying

            it with this length.
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        loadMeters:
          description: >-
            The loading meter is used as a unit to account for goods that can
            not be stacked or where you can't stack on top of it.
             One loading meter corresponds to one running meter of cargo space in a vehicle
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        containedGoods:
          description: Goods can contain a subset of more goods that are grouped together.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/containedGoods-inline'
              - $ref: '#/components/schemas/reference'
              - $ref: '#/components/schemas/attributeRestriction'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/containedGoods-inline'
                reference: '#/components/schemas/reference'
                attributeRestriction: '#/components/schemas/attributeRestriction'
        equipmentType:
          description: The type of transport equipment that contains the goods.
          type: string
          enum:
            - trailer
            - box
            - loadCarrier
            - pallet
        equipmentSubType:
          description: >-
            The sub-type of the equipment. For example when the equipmentType is
            'pallet', the equipmentSubtype can be

            EUR6. OTM5 does not currently enforce the use of valid sub-types for
            any transport equipment type, but recommends using the

            standards available, such as [euro
            pallets](https://en.wikipedia.org/wiki/EUR-pallet)
          type: string
        licensePlate:
          description: The license plate of this transport equipment, if applicable.
          type: string
        classificationLines:
          description: >-
            Product classification information often required at customs. A
            single product can contain multiple classification

            lines. For example whenever the product consists of multiple
            components that can each be classified. The most

            important information in the classification lines is often the HS
            code.
          type: array
          items:
            type: object
            properties:
              hsCode:
                description: >-
                  [The Harmonized System (HS)
                  code](https://en.wikipedia.org/wiki/Harmonized_System) is a
                  product classification

                  code used by all members of the World Customs Organization
                  (WCO) to classify goods for customs purposes.
                type: string
              description:
                description: The description of this classification line.
                type: string
              quantity:
                description: >-
                  A quantity determines how many of a certain good you have.
                  Note that all other measurements are measured 

                  for a **single** product, not for the total of products.
                type: integer
                format: int32
              weight:
                description: >-
                  The net weight of a 'single' good, the total weight can be
                  calculated by using the quantity and multiplying it

                  with this weight.
                type: object
                properties:
                  value:
                    description: Value in the given unit.
                    type: number
                    format: double
                  unit:
                    description: >-
                      Measurement unit of this value. OTM5 currently does not
                      enforce any units of measure. So you are free to use

                      any unit necessary. However to ensure parties use OTM5
                      consistently there are a few rules:

                      * For **currencies** use the [ISO_4217
                      standard](https://en.wikipedia.org/wiki/ISO_4217)

                      * For **mass**, **volume** and **length** the [SI system
                      (International System of
                      Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                      is
                        recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                        proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                      * For degrees the recommend approach is Celsius, but
                      Fahrenheit and Kelvin are also supported. To again avoid
                        problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                        (C, F, or K).
                      * For velocity use the metric system. The required format
                      would then be \<length\>/\<time unit\> for the metric
                        system, such as km/h (kilometer per hour) or m/s (meter per second).

                      Since usage is not enforced you can deviate from these
                      rules, though only do so if strictly necessary. The

                      benefit from using a standard comes from consistent use,
                      so deviating from the recommendations diminishes your

                      benefit.


                      If the type of unit you need is not supported please
                      create a

                      [change
                      request](https://github.com/opentripmodel/otm5-change-requests)
                    type: string
                required:
                  - value
                  - unit
              grossWeight:
                description: >-
                  The gross weight of a 'single' good, the total weight can be
                  calculated by using the quantity and multiplying it

                  with this weight.
                type: object
                properties:
                  value:
                    description: Value in the given unit.
                    type: number
                    format: double
                  unit:
                    description: >-
                      Measurement unit of this value. OTM5 currently does not
                      enforce any units of measure. So you are free to use

                      any unit necessary. However to ensure parties use OTM5
                      consistently there are a few rules:

                      * For **currencies** use the [ISO_4217
                      standard](https://en.wikipedia.org/wiki/ISO_4217)

                      * For **mass**, **volume** and **length** the [SI system
                      (International System of
                      Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                      is
                        recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                        proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                      * For degrees the recommend approach is Celsius, but
                      Fahrenheit and Kelvin are also supported. To again avoid
                        problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                        (C, F, or K).
                      * For velocity use the metric system. The required format
                      would then be \<length\>/\<time unit\> for the metric
                        system, such as km/h (kilometer per hour) or m/s (meter per second).

                      Since usage is not enforced you can deviate from these
                      rules, though only do so if strictly necessary. The

                      benefit from using a standard comes from consistent use,
                      so deviating from the recommendations diminishes your

                      benefit.


                      If the type of unit you need is not supported please
                      create a

                      [change
                      request](https://github.com/opentripmodel/otm5-change-requests)
                    type: string
                required:
                  - value
                  - unit
              width:
                description: >-
                  The width of a 'single' classified goods part, the total width
                  can be calculated by using the quantity and multiplying it

                  with this width.
                type: object
                properties:
                  value:
                    description: Value in the given unit.
                    type: number
                    format: double
                  unit:
                    description: >-
                      Measurement unit of this value. OTM5 currently does not
                      enforce any units of measure. So you are free to use

                      any unit necessary. However to ensure parties use OTM5
                      consistently there are a few rules:

                      * For **currencies** use the [ISO_4217
                      standard](https://en.wikipedia.org/wiki/ISO_4217)

                      * For **mass**, **volume** and **length** the [SI system
                      (International System of
                      Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                      is
                        recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                        proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                      * For degrees the recommend approach is Celsius, but
                      Fahrenheit and Kelvin are also supported. To again avoid
                        problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                        (C, F, or K).
                      * For velocity use the metric system. The required format
                      would then be \<length\>/\<time unit\> for the metric
                        system, such as km/h (kilometer per hour) or m/s (meter per second).

                      Since usage is not enforced you can deviate from these
                      rules, though only do so if strictly necessary. The

                      benefit from using a standard comes from consistent use,
                      so deviating from the recommendations diminishes your

                      benefit.


                      If the type of unit you need is not supported please
                      create a

                      [change
                      request](https://github.com/opentripmodel/otm5-change-requests)
                    type: string
                required:
                  - value
                  - unit
              height:
                description: >-
                  The height of a 'single' classified goods part, the total
                  height can be calculated by using the quantity and multiplying

                  it with this height.
                type: object
                properties:
                  value:
                    description: Value in the given unit.
                    type: number
                    format: double
                  unit:
                    description: >-
                      Measurement unit of this value. OTM5 currently does not
                      enforce any units of measure. So you are free to use

                      any unit necessary. However to ensure parties use OTM5
                      consistently there are a few rules:

                      * For **currencies** use the [ISO_4217
                      standard](https://en.wikipedia.org/wiki/ISO_4217)

                      * For **mass**, **volume** and **length** the [SI system
                      (International System of
                      Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                      is
                        recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                        proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                      * For degrees the recommend approach is Celsius, but
                      Fahrenheit and Kelvin are also supported. To again avoid
                        problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                        (C, F, or K).
                      * For velocity use the metric system. The required format
                      would then be \<length\>/\<time unit\> for the metric
                        system, such as km/h (kilometer per hour) or m/s (meter per second).

                      Since usage is not enforced you can deviate from these
                      rules, though only do so if strictly necessary. The

                      benefit from using a standard comes from consistent use,
                      so deviating from the recommendations diminishes your

                      benefit.


                      If the type of unit you need is not supported please
                      create a

                      [change
                      request](https://github.com/opentripmodel/otm5-change-requests)
                    type: string
                required:
                  - value
                  - unit
              length:
                description: >-
                  The length of a 'single' classified goods part, the total
                  length can be calculated by using the quantity and multiplying

                  it with this length.
                type: object
                properties:
                  value:
                    description: Value in the given unit.
                    type: number
                    format: double
                  unit:
                    description: >-
                      Measurement unit of this value. OTM5 currently does not
                      enforce any units of measure. So you are free to use

                      any unit necessary. However to ensure parties use OTM5
                      consistently there are a few rules:

                      * For **currencies** use the [ISO_4217
                      standard](https://en.wikipedia.org/wiki/ISO_4217)

                      * For **mass**, **volume** and **length** the [SI system
                      (International System of
                      Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                      is
                        recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                        proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                      * For degrees the recommend approach is Celsius, but
                      Fahrenheit and Kelvin are also supported. To again avoid
                        problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                        (C, F, or K).
                      * For velocity use the metric system. The required format
                      would then be \<length\>/\<time unit\> for the metric
                        system, such as km/h (kilometer per hour) or m/s (meter per second).

                      Since usage is not enforced you can deviate from these
                      rules, though only do so if strictly necessary. The

                      benefit from using a standard comes from consistent use,
                      so deviating from the recommendations diminishes your

                      benefit.


                      If the type of unit you need is not supported please
                      create a

                      [change
                      request](https://github.com/opentripmodel/otm5-change-requests)
                    type: string
                required:
                  - value
                  - unit
              others:
                description: >-
                  Fallback solution as a stopgap for fields not yet in otm. You
                  can use these, but please file a

                  [change
                  request](https://github.com/opentripmodel/otm5-change-requests/issues)
                  so that they can be properly

                  incorporated into the specification.
                type: array
                items:
                  type: object
                  properties:
                    key:
                      description: The key of this classification field
                      type: string
                    value:
                      description: >-
                        The value that belongs to the kef of this classification
                        field
                      type: string
                  required:
                    - key
                    - value
        actors:
          description: >-
            All parties associated with these goods, for example the consignor
            and consignee.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-actors-inline'
              - $ref: '#/components/schemas/reference-roles'
              - $ref: '#/components/schemas/attributeRestriction-roles'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-actors-inline'
                reference: '#/components/schemas/reference-roles'
                attributeRestriction: '#/components/schemas/attributeRestriction-roles'
        constraint:
          description: >-
            The constraints put on these goods, most notably the required
            temperature range or size of the vehicle. You

            should only put constraints on the goods themselves when it is
            important to distinguish goods within one

            consignment with different requirements. Individual constraints on a
            goods are powerful, but also complicate

            the solution. When possible, prefer to put the constraint on the
            consignment of the goods.
          oneOf:
            - $ref: '#/components/schemas/transport-equipment-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/transport-equipment-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
      required:
        - type
    containedGoods:
      oneOf:
        - $ref: '#/components/schemas/items'
        - $ref: '#/components/schemas/transportEquipment'
      discriminator:
        propertyName: type
        mapping:
          items: '#/components/schemas/items'
          transportEquipment: '#/components/schemas/transportEquipment'
    containedGoods-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/containedGoods'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    transport-equipment-constraint:
      example:
        id: 89a7bb4d-8720-4db9-aef7-4c3309186c3e
        name: Example combined constraint
        value:
          and:
            - startTime: '2021-06-23T10:00:00Z'
              endTime: '2021-06-23T13:00:00Z'
              description: alert-threshold
              type: timeWindowConstraint
            - constraintType: maximum
              maximum:
                value: 5
                unit: C
              type: temperatureConstraint
            - or:
                - fuelTypes:
                    - battery
                  type: fuelTypeConstraint
                - fuelTypes:
                    - biodiesel
                  type: fuelTypeConstraint
                - minimum: euro5
                  type: emissionStandardConstraint
              type: orConstraint
          type: andConstraint
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        value:
          $ref: '#/components/schemas/constraintValue'
        enforceability:
          description: >-
            The enforceability of the constraint. Indicates whether or not the
            constraint is a suggestion/preference or something that is mandatory
            to adhere to.
          default: enforced
          type: string
          enum:
            - enforced
            - preference
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
      required:
        - value
    transport-equipment-constraint-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/transport-equipment-constraint'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    goods:
      oneOf:
        - $ref: '#/components/schemas/items'
        - $ref: '#/components/schemas/transportEquipment'
      discriminator:
        propertyName: type
        mapping:
          items: '#/components/schemas/items'
          transportEquipment: '#/components/schemas/transportEquipment'
    goods-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/goods'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    consignments-association-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/consignments-association'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
        relation:
          description: >-
            New consignments can replace previous consignments because one of
            two reasons:
             * **split**: when the consignment is split into multiple sub-consignments, for example because the contents were too large for single transport.
             * **postponed**: when the consignment could not be delivered correctly.

            Note that the relation only goes from previous consignment to new
            consignment and not vice-versa. See also the

            `relatedConsignments` field on Consignments.
          type: string
          enum:
            - split
            - postponed
      required:
        - associationType
        - entity
    transport-order-constraint:
      example:
        id: 89a7bb4d-8720-4db9-aef7-4c3309186c3e
        name: Example combined constraint
        value:
          and:
            - startTime: '2021-06-23T10:00:00Z'
              endTime: '2021-06-23T13:00:00Z'
              description: alert-threshold
              type: timeWindowConstraint
            - constraintType: maximum
              maximum:
                value: 5
                unit: C
              type: temperatureConstraint
            - or:
                - fuelTypes:
                    - battery
                  type: fuelTypeConstraint
                - fuelTypes:
                    - biodiesel
                  type: fuelTypeConstraint
                - minimum: euro5
                  type: emissionStandardConstraint
              type: orConstraint
          type: andConstraint
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        value:
          $ref: '#/components/schemas/constraintValue'
        enforceability:
          description: >-
            The enforceability of the constraint. Indicates whether or not the
            constraint is a suggestion/preference or something that is mandatory
            to adhere to.
          default: enforced
          type: string
          enum:
            - enforced
            - preference
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
      required:
        - value
    transport-order-constraint-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/transport-order-constraint'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    transportOrder-association:
      example:
        id: baa507c2-1d81-4092-a5c2-e80820ee4fd1
        externalAttributes:
          id: OrderId
        description: Transport order containing all consignments to be shipped.
        consignments:
          - entity:
              id: e75a541b-e9d9-49e7-8bba-95492d682a6c
              description: Package for miss X.
            associationType: inline
          - entity:
              id: 4a08bd61-720e-4a8c-81cf-028f1271c4da
              description: Package for mr Y.
            associationType: inline
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        description:
          description: >-
            A free text description of this transport order, e.g. boxes of fruit
            ordered by Simacan.
          type: string
        consignments:
          description: All consignments belonging to this transport order.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/consignments-association-inline'
              - $ref: '#/components/schemas/reference'
              - $ref: '#/components/schemas/attributeRestriction'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/consignments-association-inline'
                reference: '#/components/schemas/reference'
                attributeRestriction: '#/components/schemas/attributeRestriction'
        actors:
          description: >-
            The actors associated with this transport order, for instance the
            consignor, consignee.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-actors-inline'
              - $ref: '#/components/schemas/reference-roles'
              - $ref: '#/components/schemas/attributeRestriction-roles'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-actors-inline'
                reference: '#/components/schemas/reference-roles'
                attributeRestriction: '#/components/schemas/attributeRestriction-roles'
        constraint:
          description: >-
            Constraints this transport order has to abide to, such as the
            expected delivery time windows.
          oneOf:
            - $ref: '#/components/schemas/transport-order-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/transport-order-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
    transportOrder-association-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/transportOrder-association'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    link:
      type: object
      properties:
        contentType:
          example: link
          type: string
          enum:
            - link
        uri:
          type: string
      required:
        - contentType
        - uri
    data:
      type: object
      properties:
        contentType:
          example: data
          type: string
          enum:
            - data
        raw:
          type: string
      required:
        - contentType
        - raw
    content:
      oneOf:
        - $ref: '#/components/schemas/link'
        - $ref: '#/components/schemas/data'
      discriminator:
        propertyName: contentType
        mapping:
          link: '#/components/schemas/link'
          data: '#/components/schemas/data'
    document-creator:
      example:
        id: 45db6ed0-28a7-4e4a-baba-3d5f8d171103
        name: Logistics manager
        contactDetails:
          - value: Simon Isaac
            remark: Wants to be called 'Sim'.
            type: firstName
          - value: Macan
            type: lastName
          - value: '+312012345678'
            remark: private cellphone of the CEO
            language: nld
            type: phone
          - value: simon@macan
            type: email
          - value: NL74BANK5890469479
            type: iban
          - value: NL000099998B57
            type: vatCode
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        contactDetails:
          description: Contact details for this `Actor`.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/phone'
              - $ref: '#/components/schemas/mobilePhone'
              - $ref: '#/components/schemas/email'
              - $ref: '#/components/schemas/firstName'
              - $ref: '#/components/schemas/lastName'
              - $ref: '#/components/schemas/name'
              - $ref: '#/components/schemas/vatCode'
              - $ref: '#/components/schemas/gln'
              - $ref: '#/components/schemas/iban'
              - $ref: '#/components/schemas/eori'
              - $ref: '#/components/schemas/other'
            discriminator:
              propertyName: type
              mapping:
                phone: '#/components/schemas/phone'
                mobilePhone: '#/components/schemas/mobilePhone'
                email: '#/components/schemas/email'
                firstName: '#/components/schemas/firstName'
                lastName: '#/components/schemas/lastName'
                name: '#/components/schemas/name'
                vatCode: '#/components/schemas/vatCode'
                gln: '#/components/schemas/gln'
                iban: '#/components/schemas/iban'
                eori: '#/components/schemas/eori'
                other: '#/components/schemas/other'
        locations:
          description: Locations for this `Actor`.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-locations-inline'
              - $ref: '#/components/schemas/reference'
              - $ref: '#/components/schemas/attributeRestriction'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-locations-inline'
                reference: '#/components/schemas/reference'
                attributeRestriction: '#/components/schemas/attributeRestriction'
    document-creator-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/document-creator'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
        roles:
          description: >-
            The roles this actor can have, one or multiple of:


            - **Carrier**: the actor which is responsible for physically
            delivering the goods from one place to another. Note
              that the actual transport can be delegated to another party (subcontractor), but the carrier remains responsible.
            - **Shipper**: the actor that engages in shipping goods and is the
            main contractor, ensuring the shipment takes place.

            - **Consignee**: the actor that is the buyer of the goods.

            - **Consignor**: the actor that sells the goods.

            - **Receiver**: the actor that receives the goods.

            - **Driver**: the actor that drives the vehicle containing the
            goods.

            - **Subcontractor**: The actor actually carrying out the physical
            delivery of the goods.

            - **Owner**: The actor owning the associated entity, e.g. the owner
            of a location or vehicle.


            **How these are related**

            The _consignee_ requires goods from the _consignor_. The _shipper_
            is the party responsible for

            ensuring this shipment takes place. The _carrier_ is the one
            responsible for transporting the goods, and ensures

            they are delivered to the _receiver_. If required/desired, the
            carrier can delegate the actual delivery to

            another party, the _subcontractor_. A _driver_ is an actual person
            driving the vehicle. Note that a single

            actor can have multiple roles, for instance, an actor can be the
            shipper and consignor at the same time. Also

            note that there might be an actor that does not fit any of these
            roles. Then the roles may be left empty. However

            if the role of the actor fits any of the above it must be present.
          type: array
          items:
            type: string
            enum:
              - shipper
              - carrier
              - consignee
              - consignor
              - receiver
              - driver
              - subcontractor
              - owner
      required:
        - associationType
        - entity
    document-owner:
      example:
        id: 45db6ed0-28a7-4e4a-baba-3d5f8d171103
        name: Logistics manager
        contactDetails:
          - value: Simon Isaac
            remark: Wants to be called 'Sim'.
            type: firstName
          - value: Macan
            type: lastName
          - value: '+312012345678'
            remark: private cellphone of the CEO
            language: nld
            type: phone
          - value: simon@macan
            type: email
          - value: NL74BANK5890469479
            type: iban
          - value: NL000099998B57
            type: vatCode
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        contactDetails:
          description: Contact details for this `Actor`.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/phone'
              - $ref: '#/components/schemas/mobilePhone'
              - $ref: '#/components/schemas/email'
              - $ref: '#/components/schemas/firstName'
              - $ref: '#/components/schemas/lastName'
              - $ref: '#/components/schemas/name'
              - $ref: '#/components/schemas/vatCode'
              - $ref: '#/components/schemas/gln'
              - $ref: '#/components/schemas/iban'
              - $ref: '#/components/schemas/eori'
              - $ref: '#/components/schemas/other'
            discriminator:
              propertyName: type
              mapping:
                phone: '#/components/schemas/phone'
                mobilePhone: '#/components/schemas/mobilePhone'
                email: '#/components/schemas/email'
                firstName: '#/components/schemas/firstName'
                lastName: '#/components/schemas/lastName'
                name: '#/components/schemas/name'
                vatCode: '#/components/schemas/vatCode'
                gln: '#/components/schemas/gln'
                iban: '#/components/schemas/iban'
                eori: '#/components/schemas/eori'
                other: '#/components/schemas/other'
        locations:
          description: Locations for this `Actor`.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-locations-inline'
              - $ref: '#/components/schemas/reference'
              - $ref: '#/components/schemas/attributeRestriction'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-locations-inline'
                reference: '#/components/schemas/reference'
                attributeRestriction: '#/components/schemas/attributeRestriction'
    document-owner-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/document-owner'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
        roles:
          description: >-
            The roles this actor can have, one or multiple of:


            - **Carrier**: the actor which is responsible for physically
            delivering the goods from one place to another. Note
              that the actual transport can be delegated to another party (subcontractor), but the carrier remains responsible.
            - **Shipper**: the actor that engages in shipping goods and is the
            main contractor, ensuring the shipment takes place.

            - **Consignee**: the actor that is the buyer of the goods.

            - **Consignor**: the actor that sells the goods.

            - **Receiver**: the actor that receives the goods.

            - **Driver**: the actor that drives the vehicle containing the
            goods.

            - **Subcontractor**: The actor actually carrying out the physical
            delivery of the goods.

            - **Owner**: The actor owning the associated entity, e.g. the owner
            of a location or vehicle.


            **How these are related**

            The _consignee_ requires goods from the _consignor_. The _shipper_
            is the party responsible for

            ensuring this shipment takes place. The _carrier_ is the one
            responsible for transporting the goods, and ensures

            they are delivered to the _receiver_. If required/desired, the
            carrier can delegate the actual delivery to

            another party, the _subcontractor_. A _driver_ is an actual person
            driving the vehicle. Note that a single

            actor can have multiple roles, for instance, an actor can be the
            shipper and consignor at the same time. Also

            note that there might be an actor that does not fit any of these
            roles. Then the roles may be left empty. However

            if the role of the actor fits any of the above it must be present.
          type: array
          items:
            type: string
            enum:
              - shipper
              - carrier
              - consignee
              - consignor
              - receiver
              - driver
              - subcontractor
              - owner
      required:
        - associationType
        - entity
    documents:
      example:
        id: cf32da57-5edc-4c46-9a97-58c97ae27cf8
        name: Photo of the PoD
        content:
          uri: https://link-to-the-actual-document.org/1234
          contentType: link
        externalAttributes:
          externalID: photo1234
        documentType: photo
        filename: my_photo.JPG
        mimeType: image/jpeg
        description: >-
          Proof that the goods are delivered by providing the photo that
          captures the moment
        creator:
          uuid: 655a2a4e-79b1-4637-9f13-b904730022ef
          entityType: actor
          associationType: reference
        owner:
          uuid: 655a2a4e-79b1-4637-9f13-b904730022ef
          entityType: actor
          associationType: reference
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        content:
          description: >-
            The content of the document. There are two different options on how
            the content can be provided. Either through

            an external link to where the content lives. Or directly as an
            encoded base64 string.
          allOf:
            - $ref: '#/components/schemas/content'
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        documentType:
          description: The type of the document, such as a photo, text document, PDF etc.
          type: string
        filename:
          description: The name of the file.
          type: string
        mimeType:
          description: >-
            The official MIME type of the file. See
            [Wikepedia](https://en.wikipedia.org/wiki/Media_type) for more
            information.
          type: string
        description:
          description: The description of the file, for example what purpose it serves.
          type: string
        creator:
          description: >-
            The actor who owns the document. If not provided, the creator will
            be assumed to be the owner.
          oneOf:
            - $ref: '#/components/schemas/document-creator-inline'
            - $ref: '#/components/schemas/reference-roles'
            - $ref: '#/components/schemas/attributeRestriction-roles'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/document-creator-inline'
              reference: '#/components/schemas/reference-roles'
              attributeRestriction: '#/components/schemas/attributeRestriction-roles'
        owner:
          description: >-
            The actor who owns the document. If not provided, the creator will
            be assumed to be the owner.
          oneOf:
            - $ref: '#/components/schemas/document-owner-inline'
            - $ref: '#/components/schemas/reference-roles'
            - $ref: '#/components/schemas/attributeRestriction-roles'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/document-owner-inline'
              reference: '#/components/schemas/reference-roles'
              attributeRestriction: '#/components/schemas/attributeRestriction-roles'
      required:
        - content
    documents-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/documents'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    consignment-constraint:
      example:
        id: 89a7bb4d-8720-4db9-aef7-4c3309186c3e
        name: Example combined constraint
        value:
          and:
            - startTime: '2021-06-23T10:00:00Z'
              endTime: '2021-06-23T13:00:00Z'
              description: alert-threshold
              type: timeWindowConstraint
            - constraintType: maximum
              maximum:
                value: 5
                unit: C
              type: temperatureConstraint
            - or:
                - fuelTypes:
                    - battery
                  type: fuelTypeConstraint
                - fuelTypes:
                    - biodiesel
                  type: fuelTypeConstraint
                - minimum: euro5
                  type: emissionStandardConstraint
              type: orConstraint
          type: andConstraint
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        value:
          $ref: '#/components/schemas/constraintValue'
        enforceability:
          description: >-
            The enforceability of the constraint. Indicates whether or not the
            constraint is a suggestion/preference or something that is mandatory
            to adhere to.
          default: enforced
          type: string
          enum:
            - enforced
            - preference
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
      required:
        - value
    consignment-constraint-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/consignment-constraint'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    relatedConsignments-association-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/relatedConsignments-association'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
        relation:
          description: >-
            New consignments can replace previous consignments because one of
            two reasons:
             * **split**: when the consignment is split into multiple sub-consignments, for example because the contents were too large for single transport.
             * **postponed**: when the consignment could not be delivered correctly.

            Note that the relation only goes from previous consignment to new
            consignment and not vice-versa. See also the

            `relatedConsignments` field on Consignments.
          type: string
          enum:
            - split
            - postponed
      required:
        - associationType
        - entity
    relatedConsignments-association:
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        description:
          description: >-
            General description of consignment in Free text. e.g 20 europallets
            fruit. Meant for human inspection, not for automating processes.
          type: string
        status:
          description: >-
            Whether this consignment is a draft, requested, confirmed, in
            transit, completed or cancelled. The values accepted

            (replaced by confirmed) and modified (replaced the lastModified
            field on every entity) are deprecated since

            OTM5.1, but will be supported for the whole OTM5.X line.
          type: string
          enum:
            - draft
            - requested
            - confirmed
            - inTransit
            - completed
            - cancelled
            - accepted
            - modified
        type:
          description: >-
            Free text to describe type of consignment. Usually used to indicate
            the property types of the products being transported (e.g. frozen,
            fragile, etc.).
          type: string
        goods:
          description: >-
            The various goods that need to be transported, together they are
            part of this consignment.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/goods-inline'
              - $ref: '#/components/schemas/reference'
              - $ref: '#/components/schemas/attributeRestriction'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/goods-inline'
                reference: '#/components/schemas/reference'
                attributeRestriction: '#/components/schemas/attributeRestriction'
        transportOrder:
          description: The transport order this consignment belongs to.
          oneOf:
            - $ref: '#/components/schemas/transportOrder-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/transportOrder-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        documents:
          description: >-
            Documents that are relevant for this consignment. Such as an
            official agreement between consignee and consignor.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/documents-inline'
              - $ref: '#/components/schemas/reference'
              - $ref: '#/components/schemas/attributeRestriction'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/documents-inline'
                reference: '#/components/schemas/reference'
                attributeRestriction: '#/components/schemas/attributeRestriction'
        remark:
          description: >-
            Remark concerning the complete consignment, to be printed on the
            transport document.
          type: string
        actors:
          description: >-
            The actors associated with this consignment, for instance the
            shipper and carrier. One should inline the actors only on the
            top-level entity (such as the transportOrder or trip)
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-actors-inline'
              - $ref: '#/components/schemas/reference-roles'
              - $ref: '#/components/schemas/attributeRestriction-roles'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-actors-inline'
                reference: '#/components/schemas/reference-roles'
                attributeRestriction: '#/components/schemas/attributeRestriction-roles'
        constraint:
          description: >-
            Constraints this consignment has to abide to, such special equipment
            (tail lift, truck mounted forklift), special

            vehicle, special instructions related to consignor and consignee.
            Note that you can put the constraints on the

            individual goods. However using constraints on the consignment is
            simpler and therefore recommended when

            possible.
          oneOf:
            - $ref: '#/components/schemas/consignment-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/consignment-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        relatedConsignments:
          description: >-
            Consignments that have replaced the current consignment. Because of
            various reasons a consignment can be

            cancelled and replaced by one or more other consignments. An example
            is that the consignment is too large

            to be transported as a single 'transportable unit'. You can use the
            `relation` field in the association to

            indicate the type of relationship.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/relatedConsignments-association-inline'
              - $ref: '#/components/schemas/reference'
              - $ref: '#/components/schemas/attributeRestriction'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/relatedConsignments-association-inline'
                reference: '#/components/schemas/reference'
                attributeRestriction: '#/components/schemas/attributeRestriction'
    consignments-association:
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        description:
          description: >-
            General description of consignment in Free text. e.g 20 europallets
            fruit. Meant for human inspection, not for automating processes.
          type: string
        status:
          description: >-
            Whether this consignment is a draft, requested, confirmed, in
            transit, completed or cancelled. The values accepted

            (replaced by confirmed) and modified (replaced the lastModified
            field on every entity) are deprecated since

            OTM5.1, but will be supported for the whole OTM5.X line.
          type: string
          enum:
            - draft
            - requested
            - confirmed
            - inTransit
            - completed
            - cancelled
            - accepted
            - modified
        type:
          description: >-
            Free text to describe type of consignment. Usually used to indicate
            the property types of the products being transported (e.g. frozen,
            fragile, etc.).
          type: string
        goods:
          description: >-
            The various goods that need to be transported, together they are
            part of this consignment.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/goods-inline'
              - $ref: '#/components/schemas/reference'
              - $ref: '#/components/schemas/attributeRestriction'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/goods-inline'
                reference: '#/components/schemas/reference'
                attributeRestriction: '#/components/schemas/attributeRestriction'
        transportOrder:
          description: The transport order this consignment belongs to.
          oneOf:
            - $ref: '#/components/schemas/transportOrder-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/transportOrder-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        documents:
          description: >-
            Documents that are relevant for this consignment. Such as an
            official agreement between consignee and consignor.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/documents-inline'
              - $ref: '#/components/schemas/reference'
              - $ref: '#/components/schemas/attributeRestriction'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/documents-inline'
                reference: '#/components/schemas/reference'
                attributeRestriction: '#/components/schemas/attributeRestriction'
        remark:
          description: >-
            Remark concerning the complete consignment, to be printed on the
            transport document.
          type: string
        actors:
          description: >-
            The actors associated with this consignment, for instance the
            shipper and carrier. One should inline the actors only on the
            top-level entity (such as the transportOrder or trip)
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-actors-inline'
              - $ref: '#/components/schemas/reference-roles'
              - $ref: '#/components/schemas/attributeRestriction-roles'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-actors-inline'
                reference: '#/components/schemas/reference-roles'
                attributeRestriction: '#/components/schemas/attributeRestriction-roles'
        constraint:
          description: >-
            Constraints this consignment has to abide to, such special equipment
            (tail lift, truck mounted forklift), special

            vehicle, special instructions related to consignor and consignee.
            Note that you can put the constraints on the

            individual goods. However using constraints on the consignment is
            simpler and therefore recommended when

            possible.
          oneOf:
            - $ref: '#/components/schemas/consignment-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/consignment-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        relatedConsignments:
          description: >-
            Consignments that have replaced the current consignment. Because of
            various reasons a consignment can be

            cancelled and replaced by one or more other consignments. An example
            is that the consignment is too large

            to be transported as a single 'transportable unit'. You can use the
            `relation` field in the association to

            indicate the type of relationship.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/relatedConsignments-association-inline'
              - $ref: '#/components/schemas/reference'
              - $ref: '#/components/schemas/attributeRestriction'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/relatedConsignments-association-inline'
                reference: '#/components/schemas/reference'
                attributeRestriction: '#/components/schemas/attributeRestriction'
    transportOrder:
      example:
        id: baa507c2-1d81-4092-a5c2-e80820ee4fd1
        externalAttributes:
          id: OrderId
        description: Transport order containing all consignments to be shipped.
        consignments:
          - entity:
              id: e75a541b-e9d9-49e7-8bba-95492d682a6c
              description: Package for miss X.
            associationType: inline
          - entity:
              id: 4a08bd61-720e-4a8c-81cf-028f1271c4da
              description: Package for mr Y.
            associationType: inline
      type: object
      properties:
        entityType:
          example: transportOrder
          type: string
          enum:
            - transportOrder
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        description:
          description: >-
            A free text description of this transport order, e.g. boxes of fruit
            ordered by Simacan.
          type: string
        consignments:
          description: All consignments belonging to this transport order.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/consignments-association-inline'
              - $ref: '#/components/schemas/reference'
              - $ref: '#/components/schemas/attributeRestriction'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/consignments-association-inline'
                reference: '#/components/schemas/reference'
                attributeRestriction: '#/components/schemas/attributeRestriction'
        actors:
          description: >-
            The actors associated with this transport order, for instance the
            consignor, consignee.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-actors-inline'
              - $ref: '#/components/schemas/reference-roles'
              - $ref: '#/components/schemas/attributeRestriction-roles'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-actors-inline'
                reference: '#/components/schemas/reference-roles'
                attributeRestriction: '#/components/schemas/attributeRestriction-roles'
        constraint:
          description: >-
            Constraints this transport order has to abide to, such as the
            expected delivery time windows.
          oneOf:
            - $ref: '#/components/schemas/transport-order-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/transport-order-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
      required:
        - entityType
    consignment:
      type: object
      properties:
        entityType:
          example: consignment
          type: string
          enum:
            - consignment
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        description:
          description: >-
            General description of consignment in Free text. e.g 20 europallets
            fruit. Meant for human inspection, not for automating processes.
          type: string
        status:
          description: >-
            Whether this consignment is a draft, requested, confirmed, in
            transit, completed or cancelled. The values accepted

            (replaced by confirmed) and modified (replaced the lastModified
            field on every entity) are deprecated since

            OTM5.1, but will be supported for the whole OTM5.X line.
          type: string
          enum:
            - draft
            - requested
            - confirmed
            - inTransit
            - completed
            - cancelled
            - accepted
            - modified
        type:
          description: >-
            Free text to describe type of consignment. Usually used to indicate
            the property types of the products being transported (e.g. frozen,
            fragile, etc.).
          type: string
        goods:
          description: >-
            The various goods that need to be transported, together they are
            part of this consignment.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/goods-inline'
              - $ref: '#/components/schemas/reference'
              - $ref: '#/components/schemas/attributeRestriction'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/goods-inline'
                reference: '#/components/schemas/reference'
                attributeRestriction: '#/components/schemas/attributeRestriction'
        transportOrder:
          description: The transport order this consignment belongs to.
          oneOf:
            - $ref: '#/components/schemas/transportOrder-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/transportOrder-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        documents:
          description: >-
            Documents that are relevant for this consignment. Such as an
            official agreement between consignee and consignor.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/documents-inline'
              - $ref: '#/components/schemas/reference'
              - $ref: '#/components/schemas/attributeRestriction'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/documents-inline'
                reference: '#/components/schemas/reference'
                attributeRestriction: '#/components/schemas/attributeRestriction'
        remark:
          description: >-
            Remark concerning the complete consignment, to be printed on the
            transport document.
          type: string
        actors:
          description: >-
            The actors associated with this consignment, for instance the
            shipper and carrier. One should inline the actors only on the
            top-level entity (such as the transportOrder or trip)
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-actors-inline'
              - $ref: '#/components/schemas/reference-roles'
              - $ref: '#/components/schemas/attributeRestriction-roles'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-actors-inline'
                reference: '#/components/schemas/reference-roles'
                attributeRestriction: '#/components/schemas/attributeRestriction-roles'
        constraint:
          description: >-
            Constraints this consignment has to abide to, such special equipment
            (tail lift, truck mounted forklift), special

            vehicle, special instructions related to consignor and consignee.
            Note that you can put the constraints on the

            individual goods. However using constraints on the consignment is
            simpler and therefore recommended when

            possible.
          oneOf:
            - $ref: '#/components/schemas/consignment-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/consignment-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        relatedConsignments:
          description: >-
            Consignments that have replaced the current consignment. Because of
            various reasons a consignment can be

            cancelled and replaced by one or more other consignments. An example
            is that the consignment is too large

            to be transported as a single 'transportable unit'. You can use the
            `relation` field in the association to

            indicate the type of relationship.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/relatedConsignments-association-inline'
              - $ref: '#/components/schemas/reference'
              - $ref: '#/components/schemas/attributeRestriction'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/relatedConsignments-association-inline'
                reference: '#/components/schemas/reference'
                attributeRestriction: '#/components/schemas/attributeRestriction'
      required:
        - entityType
    vehicle:
      example:
        id: b9bb914d-845e-46f2-91ff-31fa4bac2fbe
        name: Bob's Boxtruck
        vehicleType: boxtruck
        fuel: electricity
        loadCapacities:
          - value: 1000
            unit: kg
        length:
          value: 8
          unit: m
        height:
          value: 2.8
          unit: m
        width:
          value: 2
          unit: m
        licensePlate: AB-12-CD
        emptyWeight:
          value: 2000
          unit: kg
      type: object
      properties:
        entityType:
          example: vehicle
          type: string
          enum:
            - vehicle
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        vehicleType:
          description: The type of vehicle
          type: string
        fuel:
          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.
          type: string
          enum:
            - petrol
            - diesel
            - electricity
            - hydrogen
            - lng
            - cng
            - adBlue
            - other
        otherFuelType:
          description: >-
            Type of fuel, only to be used when the `fuel` field is set to
            `other`.
          type: string
        averageFuelConsumption:
          description: >-
            The average fuel consumption for this vehicle. Usually measured in
            distance per 100l
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        emissionStandard:
          description: >
            European emission standards are vehicle emission standards for
            exhaust emissions of new vehicles sold in the

            European Union and EEA member states. The standards are defined in a
            series of European Union directives

            staging the progressive introduction of increasingly stringent
            standards. See also

            [European emission standards -
            Wikipedia](https://en.wikipedia.org/wiki/European_emission_standards#Emission_standards_for_trucks_and_buses).
          type: string
          enum:
            - euro0
            - euro1
            - euro2
            - euro3
            - euro4
            - euro5
            - euro6
        maxLinks:
          description: >-
            Maximum number of links to other `Vehicle` s. Typical values are 0,
            1 or 2.
          type: integer
          format: int32
        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:
            type: object
            properties:
              value:
                description: Value in the given unit.
                type: number
                format: double
              unit:
                description: >-
                  Measurement unit of this value. OTM5 currently does not
                  enforce any units of measure. So you are free to use

                  any unit necessary. However to ensure parties use OTM5
                  consistently there are a few rules:

                  * For **currencies** use the [ISO_4217
                  standard](https://en.wikipedia.org/wiki/ISO_4217)

                  * For **mass**, **volume** and **length** the [SI system
                  (International System of
                  Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                  is
                    recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                    proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                  * For degrees the recommend approach is Celsius, but
                  Fahrenheit and Kelvin are also supported. To again avoid
                    problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                    (C, F, or K).
                  * For velocity use the metric system. The required format
                  would then be \<length\>/\<time unit\> for the metric
                    system, such as km/h (kilometer per hour) or m/s (meter per second).

                  Since usage is not enforced you can deviate from these rules,
                  though only do so if strictly necessary. The

                  benefit from using a standard comes from consistent use, so
                  deviating from the recommendations diminishes your

                  benefit.


                  If the type of unit you need is not supported please create a

                  [change
                  request](https://github.com/opentripmodel/otm5-change-requests)
                type: string
            required:
              - value
              - unit
        length:
          description: The length of the `Vehicle`.
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        height:
          description: The height of the `Vehicle`.
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        width:
          description: The width of the `Vehicle`.
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        licensePlate:
          description: The license plate of the vehicle.
          type: string
        emptyWeight:
          description: The weight of the `Vehicle` when empty.
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        actors:
          description: >-
            There are multiple roles in which actors can be associated with a
            vehicle, such as the owner or the driver of the vehicle.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-actors-inline'
              - $ref: '#/components/schemas/reference-roles'
              - $ref: '#/components/schemas/attributeRestriction-roles'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-actors-inline'
                reference: '#/components/schemas/reference-roles'
                attributeRestriction: '#/components/schemas/attributeRestriction-roles'
        sensors:
          description: >-
            Vehicles might have some sensors that are permanently attached,
            these can be described using the sensors field.
             If one works with detachable sensors the recommend approach is to use associationCreated and
             associationRemoved events instead.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/sensors-association-inline'
              - $ref: '#/components/schemas/reference'
              - $ref: '#/components/schemas/attributeRestriction'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/sensors-association-inline'
                reference: '#/components/schemas/reference'
                attributeRestriction: '#/components/schemas/attributeRestriction'
      required:
        - entityType
    document:
      example:
        id: cf32da57-5edc-4c46-9a97-58c97ae27cf8
        name: Photo of the PoD
        content:
          uri: https://link-to-the-actual-document.org/1234
          contentType: link
        externalAttributes:
          externalID: photo1234
        documentType: photo
        filename: my_photo.JPG
        mimeType: image/jpeg
        description: >-
          Proof that the goods are delivered by providing the photo that
          captures the moment
        creator:
          uuid: 655a2a4e-79b1-4637-9f13-b904730022ef
          entityType: actor
          associationType: reference
        owner:
          uuid: 655a2a4e-79b1-4637-9f13-b904730022ef
          entityType: actor
          associationType: reference
      type: object
      properties:
        entityType:
          example: document
          type: string
          enum:
            - document
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        content:
          description: >-
            The content of the document. There are two different options on how
            the content can be provided. Either through

            an external link to where the content lives. Or directly as an
            encoded base64 string.
          allOf:
            - $ref: '#/components/schemas/content'
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        documentType:
          description: The type of the document, such as a photo, text document, PDF etc.
          type: string
        filename:
          description: The name of the file.
          type: string
        mimeType:
          description: >-
            The official MIME type of the file. See
            [Wikepedia](https://en.wikipedia.org/wiki/Media_type) for more
            information.
          type: string
        description:
          description: The description of the file, for example what purpose it serves.
          type: string
        creator:
          description: >-
            The actor who owns the document. If not provided, the creator will
            be assumed to be the owner.
          oneOf:
            - $ref: '#/components/schemas/document-creator-inline'
            - $ref: '#/components/schemas/reference-roles'
            - $ref: '#/components/schemas/attributeRestriction-roles'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/document-creator-inline'
              reference: '#/components/schemas/reference-roles'
              attributeRestriction: '#/components/schemas/attributeRestriction-roles'
        owner:
          description: >-
            The actor who owns the document. If not provided, the creator will
            be assumed to be the owner.
          oneOf:
            - $ref: '#/components/schemas/document-owner-inline'
            - $ref: '#/components/schemas/reference-roles'
            - $ref: '#/components/schemas/attributeRestriction-roles'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/document-owner-inline'
              reference: '#/components/schemas/reference-roles'
              attributeRestriction: '#/components/schemas/attributeRestriction-roles'
      required:
        - entityType
        - content
    action-result-reason:
      type: string
      description: |-
        The reason why the action (partially) failed.
        Supported reasons are:
          * damage
            The package was damaged during transit and cannot be delivered.
          * deliveredElsewhere
            Indicates that the delivery was completed but not at the originally planned destination. This may occur due to instructions from the recipient, changes in delivery requirements, or operational constraints.
          * deliveredToWrongReceiver
            The package was delivered to the wrong recipient and is no longer available.
          * inaccessibleAddress
            The delivery address is temporarily unreachable (e.g., due to roadworks, severe weather, or emergencies).
          * incomplete
            Indicates that the delivery or transport operation was not fully completed. This could be due to partial delivery, missing items, or an inability to deliver all goods as planned.
          * invalidAddress
            The specified address is incorrect or does not exist.
          * invalidShippingLabel
            The shipping label contains incorrect or unreadable information.
          * receiverAbsent
            The recipient was not present at the time of delivery.
          * rejectedByReceiver
            The recipient refused to accept the package.
          * other
            A general result reason for outcomes that do not match any of the predefined result reasons. It is designed to capture edge cases or uncommon situations that may require further investigation or manual review. The specific reason is provided in the remark property of this result object.
      enum:
        - damage
        - deliveredElsewhere
        - deliveredToWrongReceiver
        - inaccessibleAddress
        - incomplete
        - invalidAddress
        - invalidShippingLabel
        - receiverAbsent
        - rejectedByReceiver
        - other
    consignment-association:
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        description:
          description: >-
            General description of consignment in Free text. e.g 20 europallets
            fruit. Meant for human inspection, not for automating processes.
          type: string
        status:
          description: >-
            Whether this consignment is a draft, requested, confirmed, in
            transit, completed or cancelled. The values accepted

            (replaced by confirmed) and modified (replaced the lastModified
            field on every entity) are deprecated since

            OTM5.1, but will be supported for the whole OTM5.X line.
          type: string
          enum:
            - draft
            - requested
            - confirmed
            - inTransit
            - completed
            - cancelled
            - accepted
            - modified
        type:
          description: >-
            Free text to describe type of consignment. Usually used to indicate
            the property types of the products being transported (e.g. frozen,
            fragile, etc.).
          type: string
        goods:
          description: >-
            The various goods that need to be transported, together they are
            part of this consignment.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/goods-inline'
              - $ref: '#/components/schemas/reference'
              - $ref: '#/components/schemas/attributeRestriction'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/goods-inline'
                reference: '#/components/schemas/reference'
                attributeRestriction: '#/components/schemas/attributeRestriction'
        transportOrder:
          description: The transport order this consignment belongs to.
          oneOf:
            - $ref: '#/components/schemas/transportOrder-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/transportOrder-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        documents:
          description: >-
            Documents that are relevant for this consignment. Such as an
            official agreement between consignee and consignor.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/documents-inline'
              - $ref: '#/components/schemas/reference'
              - $ref: '#/components/schemas/attributeRestriction'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/documents-inline'
                reference: '#/components/schemas/reference'
                attributeRestriction: '#/components/schemas/attributeRestriction'
        remark:
          description: >-
            Remark concerning the complete consignment, to be printed on the
            transport document.
          type: string
        actors:
          description: >-
            The actors associated with this consignment, for instance the
            shipper and carrier. One should inline the actors only on the
            top-level entity (such as the transportOrder or trip)
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-actors-inline'
              - $ref: '#/components/schemas/reference-roles'
              - $ref: '#/components/schemas/attributeRestriction-roles'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-actors-inline'
                reference: '#/components/schemas/reference-roles'
                attributeRestriction: '#/components/schemas/attributeRestriction-roles'
        constraint:
          description: >-
            Constraints this consignment has to abide to, such special equipment
            (tail lift, truck mounted forklift), special

            vehicle, special instructions related to consignor and consignee.
            Note that you can put the constraints on the

            individual goods. However using constraints on the consignment is
            simpler and therefore recommended when

            possible.
          oneOf:
            - $ref: '#/components/schemas/consignment-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/consignment-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        relatedConsignments:
          description: >-
            Consignments that have replaced the current consignment. Because of
            various reasons a consignment can be

            cancelled and replaced by one or more other consignments. An example
            is that the consignment is too large

            to be transported as a single 'transportable unit'. You can use the
            `relation` field in the association to

            indicate the type of relationship.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/relatedConsignments-association-inline'
              - $ref: '#/components/schemas/reference'
              - $ref: '#/components/schemas/attributeRestriction'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/relatedConsignments-association-inline'
                reference: '#/components/schemas/reference'
                attributeRestriction: '#/components/schemas/attributeRestriction'
    consignment-association-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/consignment-association'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
        relation:
          description: >-
            New consignments can replace previous consignments because one of
            two reasons:
             * **split**: when the consignment is split into multiple sub-consignments, for example because the contents were too large for single transport.
             * **postponed**: when the consignment could not be delivered correctly.

            Note that the relation only goes from previous consignment to new
            consignment and not vice-versa. See also the

            `relatedConsignments` field on Consignments.
          type: string
          enum:
            - split
            - postponed
      required:
        - associationType
        - entity
    transport-equipment-association:
      example:
        id: a29905bb-9af8-4118-896a-71b1eaf07cc0
        description: A trailer
        width:
          value: 2.46
          unit: m
        height:
          value: 2.7
          unit: m
        length:
          value: 13.62
          unit: m
        licensePlate: 123-ABC
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        description:
          description: A free text description of these goods.
          type: string
        remark:
          description: >-
            Remark belonging to the goods that need to be transported. For
            example a delivery note.
          type: string
        barCode:
          description: >-
            A barcode present on the (packaging of the) goods that uniquely
            identifies these goods.
          type: string
        quantity:
          description: >-
            A quantity determines how many of a certain transport equipment you
            have. An example could be when you have

            multiple pallets that contain the same goods
          type: integer
          format: int32
        weight:
          description: >-
            The net weight of a 'single' transportEquipment, so this does not
            include the weight of the goods it is

            carrying. You can calculate the total net weight of all transport
            equipments by taking the quantity and

            multiplying it with this weight.
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        grossWeight:
          description: >-
            The gross weight of a 'single' transportEquipment, this includes
            both the equipment and the goods it is

            carrying. You can calculate the total gross weight of all transport
            equipments by taking the quantity and

            multiplying it with this weight.
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        width:
          description: >-
            The width of a 'single' transport equipment, the total width can be
            calculated by using the quantity and multiplying it

            with this width.
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        height:
          description: >-
            The height of a 'single' transport equipment, the total height can
            be calculated by using the quantity and multiplying

            it with this height.
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        length:
          description: >-
            The length of a 'single' transport equipment, the total length can
            be calculated by using the quantity and multiplying

            it with this length.
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        loadMeters:
          description: >-
            The loading meter is used as a unit to account for goods that can
            not be stacked or where you can't stack on top of it.
             One loading meter corresponds to one running meter of cargo space in a vehicle
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        containedGoods:
          description: Goods can contain a subset of more goods that are grouped together.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/containedGoods-inline'
              - $ref: '#/components/schemas/reference'
              - $ref: '#/components/schemas/attributeRestriction'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/containedGoods-inline'
                reference: '#/components/schemas/reference'
                attributeRestriction: '#/components/schemas/attributeRestriction'
        equipmentType:
          description: The type of transport equipment that contains the goods.
          type: string
          enum:
            - trailer
            - box
            - loadCarrier
            - pallet
        equipmentSubType:
          description: >-
            The sub-type of the equipment. For example when the equipmentType is
            'pallet', the equipmentSubtype can be

            EUR6. OTM5 does not currently enforce the use of valid sub-types for
            any transport equipment type, but recommends using the

            standards available, such as [euro
            pallets](https://en.wikipedia.org/wiki/EUR-pallet)
          type: string
        licensePlate:
          description: The license plate of this transport equipment, if applicable.
          type: string
        classificationLines:
          description: >-
            Product classification information often required at customs. A
            single product can contain multiple classification

            lines. For example whenever the product consists of multiple
            components that can each be classified. The most

            important information in the classification lines is often the HS
            code.
          type: array
          items:
            type: object
            properties:
              hsCode:
                description: >-
                  [The Harmonized System (HS)
                  code](https://en.wikipedia.org/wiki/Harmonized_System) is a
                  product classification

                  code used by all members of the World Customs Organization
                  (WCO) to classify goods for customs purposes.
                type: string
              description:
                description: The description of this classification line.
                type: string
              quantity:
                description: >-
                  A quantity determines how many of a certain good you have.
                  Note that all other measurements are measured 

                  for a **single** product, not for the total of products.
                type: integer
                format: int32
              weight:
                description: >-
                  The net weight of a 'single' good, the total weight can be
                  calculated by using the quantity and multiplying it

                  with this weight.
                type: object
                properties:
                  value:
                    description: Value in the given unit.
                    type: number
                    format: double
                  unit:
                    description: >-
                      Measurement unit of this value. OTM5 currently does not
                      enforce any units of measure. So you are free to use

                      any unit necessary. However to ensure parties use OTM5
                      consistently there are a few rules:

                      * For **currencies** use the [ISO_4217
                      standard](https://en.wikipedia.org/wiki/ISO_4217)

                      * For **mass**, **volume** and **length** the [SI system
                      (International System of
                      Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                      is
                        recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                        proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                      * For degrees the recommend approach is Celsius, but
                      Fahrenheit and Kelvin are also supported. To again avoid
                        problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                        (C, F, or K).
                      * For velocity use the metric system. The required format
                      would then be \<length\>/\<time unit\> for the metric
                        system, such as km/h (kilometer per hour) or m/s (meter per second).

                      Since usage is not enforced you can deviate from these
                      rules, though only do so if strictly necessary. The

                      benefit from using a standard comes from consistent use,
                      so deviating from the recommendations diminishes your

                      benefit.


                      If the type of unit you need is not supported please
                      create a

                      [change
                      request](https://github.com/opentripmodel/otm5-change-requests)
                    type: string
                required:
                  - value
                  - unit
              grossWeight:
                description: >-
                  The gross weight of a 'single' good, the total weight can be
                  calculated by using the quantity and multiplying it

                  with this weight.
                type: object
                properties:
                  value:
                    description: Value in the given unit.
                    type: number
                    format: double
                  unit:
                    description: >-
                      Measurement unit of this value. OTM5 currently does not
                      enforce any units of measure. So you are free to use

                      any unit necessary. However to ensure parties use OTM5
                      consistently there are a few rules:

                      * For **currencies** use the [ISO_4217
                      standard](https://en.wikipedia.org/wiki/ISO_4217)

                      * For **mass**, **volume** and **length** the [SI system
                      (International System of
                      Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                      is
                        recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                        proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                      * For degrees the recommend approach is Celsius, but
                      Fahrenheit and Kelvin are also supported. To again avoid
                        problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                        (C, F, or K).
                      * For velocity use the metric system. The required format
                      would then be \<length\>/\<time unit\> for the metric
                        system, such as km/h (kilometer per hour) or m/s (meter per second).

                      Since usage is not enforced you can deviate from these
                      rules, though only do so if strictly necessary. The

                      benefit from using a standard comes from consistent use,
                      so deviating from the recommendations diminishes your

                      benefit.


                      If the type of unit you need is not supported please
                      create a

                      [change
                      request](https://github.com/opentripmodel/otm5-change-requests)
                    type: string
                required:
                  - value
                  - unit
              width:
                description: >-
                  The width of a 'single' classified goods part, the total width
                  can be calculated by using the quantity and multiplying it

                  with this width.
                type: object
                properties:
                  value:
                    description: Value in the given unit.
                    type: number
                    format: double
                  unit:
                    description: >-
                      Measurement unit of this value. OTM5 currently does not
                      enforce any units of measure. So you are free to use

                      any unit necessary. However to ensure parties use OTM5
                      consistently there are a few rules:

                      * For **currencies** use the [ISO_4217
                      standard](https://en.wikipedia.org/wiki/ISO_4217)

                      * For **mass**, **volume** and **length** the [SI system
                      (International System of
                      Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                      is
                        recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                        proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                      * For degrees the recommend approach is Celsius, but
                      Fahrenheit and Kelvin are also supported. To again avoid
                        problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                        (C, F, or K).
                      * For velocity use the metric system. The required format
                      would then be \<length\>/\<time unit\> for the metric
                        system, such as km/h (kilometer per hour) or m/s (meter per second).

                      Since usage is not enforced you can deviate from these
                      rules, though only do so if strictly necessary. The

                      benefit from using a standard comes from consistent use,
                      so deviating from the recommendations diminishes your

                      benefit.


                      If the type of unit you need is not supported please
                      create a

                      [change
                      request](https://github.com/opentripmodel/otm5-change-requests)
                    type: string
                required:
                  - value
                  - unit
              height:
                description: >-
                  The height of a 'single' classified goods part, the total
                  height can be calculated by using the quantity and multiplying

                  it with this height.
                type: object
                properties:
                  value:
                    description: Value in the given unit.
                    type: number
                    format: double
                  unit:
                    description: >-
                      Measurement unit of this value. OTM5 currently does not
                      enforce any units of measure. So you are free to use

                      any unit necessary. However to ensure parties use OTM5
                      consistently there are a few rules:

                      * For **currencies** use the [ISO_4217
                      standard](https://en.wikipedia.org/wiki/ISO_4217)

                      * For **mass**, **volume** and **length** the [SI system
                      (International System of
                      Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                      is
                        recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                        proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                      * For degrees the recommend approach is Celsius, but
                      Fahrenheit and Kelvin are also supported. To again avoid
                        problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                        (C, F, or K).
                      * For velocity use the metric system. The required format
                      would then be \<length\>/\<time unit\> for the metric
                        system, such as km/h (kilometer per hour) or m/s (meter per second).

                      Since usage is not enforced you can deviate from these
                      rules, though only do so if strictly necessary. The

                      benefit from using a standard comes from consistent use,
                      so deviating from the recommendations diminishes your

                      benefit.


                      If the type of unit you need is not supported please
                      create a

                      [change
                      request](https://github.com/opentripmodel/otm5-change-requests)
                    type: string
                required:
                  - value
                  - unit
              length:
                description: >-
                  The length of a 'single' classified goods part, the total
                  length can be calculated by using the quantity and multiplying

                  it with this length.
                type: object
                properties:
                  value:
                    description: Value in the given unit.
                    type: number
                    format: double
                  unit:
                    description: >-
                      Measurement unit of this value. OTM5 currently does not
                      enforce any units of measure. So you are free to use

                      any unit necessary. However to ensure parties use OTM5
                      consistently there are a few rules:

                      * For **currencies** use the [ISO_4217
                      standard](https://en.wikipedia.org/wiki/ISO_4217)

                      * For **mass**, **volume** and **length** the [SI system
                      (International System of
                      Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                      is
                        recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                        proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                      * For degrees the recommend approach is Celsius, but
                      Fahrenheit and Kelvin are also supported. To again avoid
                        problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                        (C, F, or K).
                      * For velocity use the metric system. The required format
                      would then be \<length\>/\<time unit\> for the metric
                        system, such as km/h (kilometer per hour) or m/s (meter per second).

                      Since usage is not enforced you can deviate from these
                      rules, though only do so if strictly necessary. The

                      benefit from using a standard comes from consistent use,
                      so deviating from the recommendations diminishes your

                      benefit.


                      If the type of unit you need is not supported please
                      create a

                      [change
                      request](https://github.com/opentripmodel/otm5-change-requests)
                    type: string
                required:
                  - value
                  - unit
              others:
                description: >-
                  Fallback solution as a stopgap for fields not yet in otm. You
                  can use these, but please file a

                  [change
                  request](https://github.com/opentripmodel/otm5-change-requests/issues)
                  so that they can be properly

                  incorporated into the specification.
                type: array
                items:
                  type: object
                  properties:
                    key:
                      description: The key of this classification field
                      type: string
                    value:
                      description: >-
                        The value that belongs to the kef of this classification
                        field
                      type: string
                  required:
                    - key
                    - value
        actors:
          description: >-
            All parties associated with these goods, for example the consignor
            and consignee.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-actors-inline'
              - $ref: '#/components/schemas/reference-roles'
              - $ref: '#/components/schemas/attributeRestriction-roles'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-actors-inline'
                reference: '#/components/schemas/reference-roles'
                attributeRestriction: '#/components/schemas/attributeRestriction-roles'
        constraint:
          description: >-
            The constraints put on these goods, most notably the required
            temperature range or size of the vehicle. You

            should only put constraints on the goods themselves when it is
            important to distinguish goods within one

            consignment with different requirements. Individual constraints on a
            goods are powerful, but also complicate

            the solution. When possible, prefer to put the constraint on the
            consignment of the goods.
          oneOf:
            - $ref: '#/components/schemas/transport-equipment-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/transport-equipment-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
    transport-equipment-association-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/transport-equipment-association'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    action-location:
      example:
        id: 11c11d75-e114-4b5f-9751-b3a4afa23ecf
        name: Main warehouse
        geoReference:
          lat: 5.4126792
          lon: 52.1956251
          type: latLonPointGeoReference
        type: warehouse
        administrativeReference:
          name: Supermarket warehouse
          street: Valutaboulevard
          houseNumber: '16'
          houseNumberAddition: C
          postalCode: 1825BT
          city: Amersfoort
          country: NL
        contactDetails:
          - value: '+312012345678'
            remark: private cellphone of the CEO
            language: nld
            type: phone
        remark: The cafe around the corner has the best coffee in town.
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        geoReference:
          description: >-
            Describes a geographic reference, this is the primary way to link a
            `Location` entity to a physical, geographic location.
          oneOf:
            - $ref: '#/components/schemas/latLonPointGeoReference'
            - $ref: '#/components/schemas/latLonArrayGeoReference'
            - $ref: '#/components/schemas/Feature'
            - $ref: '#/components/schemas/openLRGeoReference'
            - $ref: '#/components/schemas/tmcLocationGeoReference'
            - $ref: '#/components/schemas/tmcArrayGeoReference'
            - $ref: '#/components/schemas/addressGeoReference'
          discriminator:
            propertyName: type
            mapping:
              latLonPointGeoReference: '#/components/schemas/latLonPointGeoReference'
              latLonArrayGeoReference: '#/components/schemas/latLonArrayGeoReference'
              Feature: '#/components/schemas/Feature'
              openLRGeoReference: '#/components/schemas/openLRGeoReference'
              tmcLocationGeoReference: '#/components/schemas/tmcLocationGeoReference'
              tmcArrayGeoReference: '#/components/schemas/tmcArrayGeoReference'
              addressGeoReference: '#/components/schemas/addressGeoReference'
        externalAttributes:
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        unCode:
          description: >-
            the United Nations Code for Trade and Transport Locations, is a
            geographic coding scheme developed and
             maintained by United Nations Economic Commission for Europe (UNECE) to uniquely identify locations. See
             [this Wikipedia page](https://en.wikipedia.org/wiki/UN/LOCODE).
          type: string
        gln:
          description: >-
            The Global Location Number (GLN) is part of the GS1 systems of
            standards to uniquely identify a location. See
             also this [Wikipedia page](https://en.wikipedia.org/wiki/Global_Location_Number)
          type: string
        type:
          description: The type of location.
          type: string
          enum:
            - warehouse
            - store
            - environmentalZone
            - restrictedArea
            - customer
            - operationalBase
            - fuelStation
            - serviceStation
            - other
        otherLocationType:
          description: >-
            Description of the location in case type of location is set to
            'other'.
          type: string
        administrativeReference:
          description: >-
            Address information that is used as an administrative reference. For
            example: when the actual load location is different from the
            officially registered location, this holds the latter
          allOf:
            - $ref: '#/components/schemas/Address'
        contactDetails:
          description: Contact details for this `Location`.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/phone'
              - $ref: '#/components/schemas/mobilePhone'
              - $ref: '#/components/schemas/email'
              - $ref: '#/components/schemas/firstName'
              - $ref: '#/components/schemas/lastName'
              - $ref: '#/components/schemas/name'
              - $ref: '#/components/schemas/vatCode'
              - $ref: '#/components/schemas/gln'
              - $ref: '#/components/schemas/iban'
              - $ref: '#/components/schemas/eori'
              - $ref: '#/components/schemas/other'
            discriminator:
              propertyName: type
              mapping:
                phone: '#/components/schemas/phone'
                mobilePhone: '#/components/schemas/mobilePhone'
                email: '#/components/schemas/email'
                firstName: '#/components/schemas/firstName'
                lastName: '#/components/schemas/lastName'
                name: '#/components/schemas/name'
                vatCode: '#/components/schemas/vatCode'
                gln: '#/components/schemas/gln'
                iban: '#/components/schemas/iban'
                eori: '#/components/schemas/eori'
                other: '#/components/schemas/other'
        remark:
          description: >-
            Remark about the location. Please don't misuse this field for
            external references, use the `externalAttributes` field instead.
          type: string
        subLocations:
          description: >-
            The locations that are can be identified on their own, but are also
            part of this location. For example a dock at

            a large distribution area. Sub-locations can also be seen as 'points
            of interest' on a larger location.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-locations-inline'
              - $ref: '#/components/schemas/reference'
              - $ref: '#/components/schemas/attributeRestriction'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-locations-inline'
                reference: '#/components/schemas/reference'
                attributeRestriction: '#/components/schemas/attributeRestriction'
        actors:
          description: >-
            Locations can be associated with actors in multiple ways, though the
            most common one is the _owner_ of the location, either a person or a
            legal entity.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-actors-inline'
              - $ref: '#/components/schemas/reference-roles'
              - $ref: '#/components/schemas/attributeRestriction-roles'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-actors-inline'
                reference: '#/components/schemas/reference-roles'
                attributeRestriction: '#/components/schemas/attributeRestriction-roles'
        constraint:
          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`.
          oneOf:
            - $ref: '#/components/schemas/location-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/location-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
      required:
        - geoReference
    action-location-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/action-location'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    action-constraint:
      example:
        id: 89a7bb4d-8720-4db9-aef7-4c3309186c3e
        name: Example combined constraint
        value:
          and:
            - startTime: '2021-06-23T10:00:00Z'
              endTime: '2021-06-23T13:00:00Z'
              description: alert-threshold
              type: timeWindowConstraint
            - constraintType: maximum
              maximum:
                value: 5
                unit: C
              type: temperatureConstraint
            - or:
                - fuelTypes:
                    - battery
                  type: fuelTypeConstraint
                - fuelTypes:
                    - biodiesel
                  type: fuelTypeConstraint
                - minimum: euro5
                  type: emissionStandardConstraint
              type: orConstraint
          type: andConstraint
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        value:
          $ref: '#/components/schemas/constraintValue'
        enforceability:
          description: >-
            The enforceability of the constraint. Indicates whether or not the
            constraint is a suggestion/preference or something that is mandatory
            to adhere to.
          default: enforced
          type: string
          enum:
            - enforced
            - preference
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
      required:
        - value
    action-constraint-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/action-constraint'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    load-in-events:
      example:
        id: e81a7aa3-23a6-4089-b916-52b854c7b6f1
        lifecycle: planned
        remark: loading a consignment
        consignment:
          uuid: 047cfa4d-fd8b-47ba-b8e9-87067294d2fa
          entityType: consignment
          associationType: reference
        startTime: '2021-06-23T14:00:00Z'
        endTime: '2021-06-23T14:15:00Z'
        constraint:
          entity:
            id: 89a7bb4d-8720-4db9-aef7-4c3309186c3e
            name: Example combined constraint
            value:
              and:
                - startTime: '2021-06-23T10:00:00Z'
                  endTime: '2021-06-23T13:00:00Z'
                  description: alert-threshold
                  type: timeWindowConstraint
                - constraintType: maximum
                  maximum:
                    value: 5
                    unit: C
                  type: temperatureConstraint
                - or:
                    - fuelTypes:
                        - battery
                      type: fuelTypeConstraint
                    - fuelTypes:
                        - biodiesel
                      type: fuelTypeConstraint
                    - minimum: euro5
                      type: emissionStandardConstraint
                  type: orConstraint
              type: andConstraint
          associationType: inline
      type: object
      properties:
        entityType:
          example: load
          type: string
          enum:
            - load
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        result:
          description: >-
            The result of the action, can only be present in the actual or
            realized lifecycles. The result has a

            required status and optional additional info, like a remark and
            reason (in the case of failure).
          type: object
          properties:
            status:
              description: >-
                The status of the result, either succeeded, failed, partially
                succeeded or cancelled.
              type: string
              enum:
                - succeeded
                - failed
                - partiallySucceeded
                - cancelled
            remark:
              description: >-
                The remark of the result, usually only interesting in case the
                result was failed or partially succeedded. Note that

                differs from the remark on an action, which is a remark that is
                relevant before the execution of the action. Whereas

                this remark is relevant for the result after execution.
              type: string
            reason:
              $ref: '#/components/schemas/action-result-reason'
          required:
            - status
        remark:
          description: Free text field for adding an on remark on this action.
          type: string
        sequenceNr:
          description: >-
            The sequence number of this action within the entity it is taking
            place. Can be used to indicate order when no times are present
          type: integer
          format: int64
        consignment:
          description: The consignment that is the subject of this action.
          oneOf:
            - $ref: '#/components/schemas/consignment-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/consignment-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        transportEquipment:
          description: The transport equipment the consignment is loaded in/unloaded from.
          oneOf:
            - $ref: '#/components/schemas/transport-equipment-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/transport-equipment-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        documents:
          description: >-
            Documents that are relevant for this action. Such as a
            proof-of-delivery photo, or scanned CMR.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/documents-inline'
              - $ref: '#/components/schemas/reference'
              - $ref: '#/components/schemas/attributeRestriction'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/documents-inline'
                reference: '#/components/schemas/reference'
                attributeRestriction: '#/components/schemas/attributeRestriction'
        location:
          description: The location at which this action is taking place.
          oneOf:
            - $ref: '#/components/schemas/action-location-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/action-location-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        timeFormat:
          default: dateTime
          type: string
          enum:
            - dateTime
            - recurringDateTime
            - duration
        startTime:
          description: The time at which the actions starts in ISO format.
          type: string
        endTime:
          description: The time at which the action is completed in ISO format.
          type: string
        recurrence:
          description: >-
            The recurrence of the date time, should only be set when
            `timeFormat` is set to `recurringDateTime`. The

            recurrence follows the [Recurrence
            Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)

            specification
          type: string
          format: recurrence
        duration:
          description: >-
            The duration of this action/event, should only be set when
            `timeFormat` is set to `duration`. The

            duration follows the [ISO
            8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)

            specification
          example: PT168H
          type: string
          format: duration
        constraint:
          description: >-
            The constraints this action abides to, such as start and end time
            windows.
          oneOf:
            - $ref: '#/components/schemas/action-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/action-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
      required:
        - entityType
    unload-in-events:
      example:
        id: a5f5fc23-744a-46f7-81b4-bfe26629ad4f
        lifecycle: planned
        remark: unloading a consignment
        consignment:
          uuid: 047cfa4d-fd8b-47ba-b8e9-87067294d2fa
          entityType: consignment
          associationType: reference
        startTime: '2021-06-23T15:00:00Z'
        endTime: '2021-06-23T15:15:00Z'
        constraint:
          entity:
            id: 89a7bb4d-8720-4db9-aef7-4c3309186c3e
            name: Example combined constraint
            value:
              and:
                - startTime: '2021-06-23T10:00:00Z'
                  endTime: '2021-06-23T13:00:00Z'
                  description: alert-threshold
                  type: timeWindowConstraint
                - constraintType: maximum
                  maximum:
                    value: 5
                    unit: C
                  type: temperatureConstraint
                - or:
                    - fuelTypes:
                        - battery
                      type: fuelTypeConstraint
                    - fuelTypes:
                        - biodiesel
                      type: fuelTypeConstraint
                    - minimum: euro5
                      type: emissionStandardConstraint
                  type: orConstraint
              type: andConstraint
          associationType: inline
      type: object
      properties:
        entityType:
          example: unload
          type: string
          enum:
            - unload
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        result:
          description: >-
            The result of the action, can only be present in the actual or
            realized lifecycles. The result has a

            required status and optional additional info, like a remark and
            reason (in the case of failure).
          type: object
          properties:
            status:
              description: >-
                The status of the result, either succeeded, failed, partially
                succeeded or cancelled.
              type: string
              enum:
                - succeeded
                - failed
                - partiallySucceeded
                - cancelled
            remark:
              description: >-
                The remark of the result, usually only interesting in case the
                result was failed or partially succeedded. Note that

                differs from the remark on an action, which is a remark that is
                relevant before the execution of the action. Whereas

                this remark is relevant for the result after execution.
              type: string
            reason:
              $ref: '#/components/schemas/action-result-reason'
          required:
            - status
        remark:
          description: Free text field for adding an on remark on this action.
          type: string
        sequenceNr:
          description: >-
            The sequence number of this action within the entity it is taking
            place. Can be used to indicate order when no times are present
          type: integer
          format: int64
        consignment:
          description: The consignment that is the subject of this action.
          oneOf:
            - $ref: '#/components/schemas/consignment-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/consignment-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        transportEquipment:
          description: The transport equipment the consignment is loaded in/unloaded from.
          oneOf:
            - $ref: '#/components/schemas/transport-equipment-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/transport-equipment-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        documents:
          description: >-
            Documents that are relevant for this action. Such as a
            proof-of-delivery photo, or scanned CMR.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/documents-inline'
              - $ref: '#/components/schemas/reference'
              - $ref: '#/components/schemas/attributeRestriction'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/documents-inline'
                reference: '#/components/schemas/reference'
                attributeRestriction: '#/components/schemas/attributeRestriction'
        location:
          description: The location at which this action is taking place.
          oneOf:
            - $ref: '#/components/schemas/action-location-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/action-location-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        timeFormat:
          default: dateTime
          type: string
          enum:
            - dateTime
            - recurringDateTime
            - duration
        startTime:
          description: The time at which the actions starts in ISO format.
          type: string
        endTime:
          description: The time at which the action is completed in ISO format.
          type: string
        recurrence:
          description: >-
            The recurrence of the date time, should only be set when
            `timeFormat` is set to `recurringDateTime`. The

            recurrence follows the [Recurrence
            Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)

            specification
          type: string
          format: recurrence
        duration:
          description: >-
            The duration of this action/event, should only be set when
            `timeFormat` is set to `duration`. The

            duration follows the [ISO
            8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)

            specification
          example: PT168H
          type: string
          format: duration
        constraint:
          description: >-
            The constraints this action abides to, such as start and end time
            windows.
          oneOf:
            - $ref: '#/components/schemas/action-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/action-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
      required:
        - entityType
    trip-association:
      example:
        id: 50824123-0924-4563-ac1e-ca0e37487823
        name: Daily supply trip
        status: inTransit
        transportMode: road
        vehicle:
          uuid: b9bb914d-845e-46f2-91ff-31fa4bac2fbe
          entityType: vehicle
          associationType: reference
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        status:
          description: >-
            Whether this trip is a draft, requested, confirmed, in transit,
            completed or cancelled. The values accepted

            (replaced by confirmed) and modified (replaced the lastModified
            field on every entity) are deprecated since

            OTM5.1, but will be supported for the whole OTM5.X line.
          type: string
          enum:
            - draft
            - requested
            - confirmed
            - inTransit
            - completed
            - cancelled
            - accepted
            - modified
        transportMode:
          description: >-
            Method of transport used for the carriage of goods on this trip, can
            either be using a ship (maritime or

            inland waterway), a truck/car/van/bike/etc. (road), using the train
            (rail), or using a plane (air). These

            values are based on the

            [recommendation of
            UNECE](https://unece.org/fileadmin/DAM/cefact/recommendations/rec19/rec19_ecetrd138.pdf).
          type: string
          enum:
            - maritime
            - road
            - rail
            - air
            - inlandWaterway
        vehicle:
          description: The `Vehicle` that is driving this trip.
          oneOf:
            - $ref: '#/components/schemas/vehicle-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/vehicle-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        actors:
          description: >-
            The actors associated with this trip, for instance the client or the
            executing party
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-actors-inline'
              - $ref: '#/components/schemas/reference-roles'
              - $ref: '#/components/schemas/attributeRestriction-roles'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-actors-inline'
                reference: '#/components/schemas/reference-roles'
                attributeRestriction: '#/components/schemas/attributeRestriction-roles'
        constraint:
          description: >-
            Constraints this trip has to abide to, such as the start and end
            date times in which it has to be completed.
          oneOf:
            - $ref: '#/components/schemas/trip-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/trip-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
    trip-association-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/trip-association'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    stop-location:
      example:
        id: 11c11d75-e114-4b5f-9751-b3a4afa23ecf
        name: Main warehouse
        geoReference:
          lat: 5.4126792
          lon: 52.1956251
          type: latLonPointGeoReference
        type: warehouse
        administrativeReference:
          name: Supermarket warehouse
          street: Valutaboulevard
          houseNumber: '16'
          houseNumberAddition: C
          postalCode: 1825BT
          city: Amersfoort
          country: NL
        contactDetails:
          - value: '+312012345678'
            remark: private cellphone of the CEO
            language: nld
            type: phone
        remark: The cafe around the corner has the best coffee in town.
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        geoReference:
          description: >-
            Describes a geographic reference, this is the primary way to link a
            `Location` entity to a physical, geographic location.
          oneOf:
            - $ref: '#/components/schemas/latLonPointGeoReference'
            - $ref: '#/components/schemas/latLonArrayGeoReference'
            - $ref: '#/components/schemas/Feature'
            - $ref: '#/components/schemas/openLRGeoReference'
            - $ref: '#/components/schemas/tmcLocationGeoReference'
            - $ref: '#/components/schemas/tmcArrayGeoReference'
            - $ref: '#/components/schemas/addressGeoReference'
          discriminator:
            propertyName: type
            mapping:
              latLonPointGeoReference: '#/components/schemas/latLonPointGeoReference'
              latLonArrayGeoReference: '#/components/schemas/latLonArrayGeoReference'
              Feature: '#/components/schemas/Feature'
              openLRGeoReference: '#/components/schemas/openLRGeoReference'
              tmcLocationGeoReference: '#/components/schemas/tmcLocationGeoReference'
              tmcArrayGeoReference: '#/components/schemas/tmcArrayGeoReference'
              addressGeoReference: '#/components/schemas/addressGeoReference'
        externalAttributes:
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        unCode:
          description: >-
            the United Nations Code for Trade and Transport Locations, is a
            geographic coding scheme developed and
             maintained by United Nations Economic Commission for Europe (UNECE) to uniquely identify locations. See
             [this Wikipedia page](https://en.wikipedia.org/wiki/UN/LOCODE).
          type: string
        gln:
          description: >-
            The Global Location Number (GLN) is part of the GS1 systems of
            standards to uniquely identify a location. See
             also this [Wikipedia page](https://en.wikipedia.org/wiki/Global_Location_Number)
          type: string
        type:
          description: The type of location.
          type: string
          enum:
            - warehouse
            - store
            - environmentalZone
            - restrictedArea
            - customer
            - operationalBase
            - fuelStation
            - serviceStation
            - other
        otherLocationType:
          description: >-
            Description of the location in case type of location is set to
            'other'.
          type: string
        administrativeReference:
          description: >-
            Address information that is used as an administrative reference. For
            example: when the actual load location is different from the
            officially registered location, this holds the latter
          allOf:
            - $ref: '#/components/schemas/Address'
        contactDetails:
          description: Contact details for this `Location`.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/phone'
              - $ref: '#/components/schemas/mobilePhone'
              - $ref: '#/components/schemas/email'
              - $ref: '#/components/schemas/firstName'
              - $ref: '#/components/schemas/lastName'
              - $ref: '#/components/schemas/name'
              - $ref: '#/components/schemas/vatCode'
              - $ref: '#/components/schemas/gln'
              - $ref: '#/components/schemas/iban'
              - $ref: '#/components/schemas/eori'
              - $ref: '#/components/schemas/other'
            discriminator:
              propertyName: type
              mapping:
                phone: '#/components/schemas/phone'
                mobilePhone: '#/components/schemas/mobilePhone'
                email: '#/components/schemas/email'
                firstName: '#/components/schemas/firstName'
                lastName: '#/components/schemas/lastName'
                name: '#/components/schemas/name'
                vatCode: '#/components/schemas/vatCode'
                gln: '#/components/schemas/gln'
                iban: '#/components/schemas/iban'
                eori: '#/components/schemas/eori'
                other: '#/components/schemas/other'
        remark:
          description: >-
            Remark about the location. Please don't misuse this field for
            external references, use the `externalAttributes` field instead.
          type: string
        subLocations:
          description: >-
            The locations that are can be identified on their own, but are also
            part of this location. For example a dock at

            a large distribution area. Sub-locations can also be seen as 'points
            of interest' on a larger location.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-locations-inline'
              - $ref: '#/components/schemas/reference'
              - $ref: '#/components/schemas/attributeRestriction'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-locations-inline'
                reference: '#/components/schemas/reference'
                attributeRestriction: '#/components/schemas/attributeRestriction'
        actors:
          description: >-
            Locations can be associated with actors in multiple ways, though the
            most common one is the _owner_ of the location, either a person or a
            legal entity.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-actors-inline'
              - $ref: '#/components/schemas/reference-roles'
              - $ref: '#/components/schemas/attributeRestriction-roles'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-actors-inline'
                reference: '#/components/schemas/reference-roles'
                attributeRestriction: '#/components/schemas/attributeRestriction-roles'
        constraint:
          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`.
          oneOf:
            - $ref: '#/components/schemas/location-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/location-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
      required:
        - geoReference
    stop-location-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/stop-location'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    stop-constraint:
      example:
        id: 89a7bb4d-8720-4db9-aef7-4c3309186c3e
        name: Example combined constraint
        value:
          and:
            - startTime: '2021-06-23T10:00:00Z'
              endTime: '2021-06-23T13:00:00Z'
              description: alert-threshold
              type: timeWindowConstraint
            - constraintType: maximum
              maximum:
                value: 5
                unit: C
              type: temperatureConstraint
            - or:
                - fuelTypes:
                    - battery
                  type: fuelTypeConstraint
                - fuelTypes:
                    - biodiesel
                  type: fuelTypeConstraint
                - minimum: euro5
                  type: emissionStandardConstraint
              type: orConstraint
          type: andConstraint
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        value:
          $ref: '#/components/schemas/constraintValue'
        enforceability:
          description: >-
            The enforceability of the constraint. Indicates whether or not the
            constraint is a suggestion/preference or something that is mandatory
            to adhere to.
          default: enforced
          type: string
          enum:
            - enforced
            - preference
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
      required:
        - value
    stop-constraint-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/stop-constraint'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    stop-in-events:
      example:
        id: e0475c15-6d20-4085-a95e-427652585e5e
        remark: start stop at the warehouse
        location:
          uuid: 11c11d75-e114-4b5f-9751-b3a4afa23ecf
          entityType: location
          associationType: reference
        startTime: '2021-06-23T13:45:00Z'
        endTime: '2021-06-23T14:30:00Z'
      type: object
      properties:
        entityType:
          example: stop
          type: string
          enum:
            - stop
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        result:
          description: >-
            The result of the action, can only be present in the actual or
            realized lifecycles. The result has a

            required status and optional additional info, like a remark and
            reason (in the case of failure).
          type: object
          properties:
            status:
              description: >-
                The status of the result, either succeeded, failed, partially
                succeeded or cancelled.
              type: string
              enum:
                - succeeded
                - failed
                - partiallySucceeded
                - cancelled
            remark:
              description: >-
                The remark of the result, usually only interesting in case the
                result was failed or partially succeedded. Note that

                differs from the remark on an action, which is a remark that is
                relevant before the execution of the action. Whereas

                this remark is relevant for the result after execution.
              type: string
            reason:
              $ref: '#/components/schemas/action-result-reason'
          required:
            - status
        remark:
          description: Free text field for adding an on remark on this action.
          type: string
        sequenceNr:
          description: >-
            The sequence number of this action within the entity it is taking
            place. Can be used to indicate order when no times are present
          type: integer
          format: int64
        trip:
          description: >-
            The trip that this stop belongs too, usually is only provided if the
            trip is not clear from the context.
          oneOf:
            - $ref: '#/components/schemas/trip-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/trip-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        location:
          description: The location of this stop.
          oneOf:
            - $ref: '#/components/schemas/stop-location-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/stop-location-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        timeFormat:
          default: dateTime
          type: string
          enum:
            - dateTime
            - recurringDateTime
            - duration
        startTime:
          description: The time at which the actions starts in ISO format.
          type: string
        endTime:
          description: The time at which the action is completed in ISO format.
          type: string
        recurrence:
          description: >-
            The recurrence of the date time, should only be set when
            `timeFormat` is set to `recurringDateTime`. The

            recurrence follows the [Recurrence
            Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)

            specification
          type: string
          format: recurrence
        duration:
          description: >-
            The duration of this action/event, should only be set when
            `timeFormat` is set to `duration`. The

            duration follows the [ISO
            8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)

            specification
          example: PT168H
          type: string
          format: duration
        constraint:
          description: >-
            The constraints this stop abides to, such as start and end time
            windows.
          oneOf:
            - $ref: '#/components/schemas/stop-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/stop-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
      required:
        - entityType
    from-location-move:
      example:
        id: 11c11d75-e114-4b5f-9751-b3a4afa23ecf
        name: Main warehouse
        geoReference:
          lat: 5.4126792
          lon: 52.1956251
          type: latLonPointGeoReference
        type: warehouse
        administrativeReference:
          name: Supermarket warehouse
          street: Valutaboulevard
          houseNumber: '16'
          houseNumberAddition: C
          postalCode: 1825BT
          city: Amersfoort
          country: NL
        contactDetails:
          - value: '+312012345678'
            remark: private cellphone of the CEO
            language: nld
            type: phone
        remark: The cafe around the corner has the best coffee in town.
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        geoReference:
          description: >-
            Describes a geographic reference, this is the primary way to link a
            `Location` entity to a physical, geographic location.
          oneOf:
            - $ref: '#/components/schemas/latLonPointGeoReference'
            - $ref: '#/components/schemas/latLonArrayGeoReference'
            - $ref: '#/components/schemas/Feature'
            - $ref: '#/components/schemas/openLRGeoReference'
            - $ref: '#/components/schemas/tmcLocationGeoReference'
            - $ref: '#/components/schemas/tmcArrayGeoReference'
            - $ref: '#/components/schemas/addressGeoReference'
          discriminator:
            propertyName: type
            mapping:
              latLonPointGeoReference: '#/components/schemas/latLonPointGeoReference'
              latLonArrayGeoReference: '#/components/schemas/latLonArrayGeoReference'
              Feature: '#/components/schemas/Feature'
              openLRGeoReference: '#/components/schemas/openLRGeoReference'
              tmcLocationGeoReference: '#/components/schemas/tmcLocationGeoReference'
              tmcArrayGeoReference: '#/components/schemas/tmcArrayGeoReference'
              addressGeoReference: '#/components/schemas/addressGeoReference'
        externalAttributes:
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        unCode:
          description: >-
            the United Nations Code for Trade and Transport Locations, is a
            geographic coding scheme developed and
             maintained by United Nations Economic Commission for Europe (UNECE) to uniquely identify locations. See
             [this Wikipedia page](https://en.wikipedia.org/wiki/UN/LOCODE).
          type: string
        gln:
          description: >-
            The Global Location Number (GLN) is part of the GS1 systems of
            standards to uniquely identify a location. See
             also this [Wikipedia page](https://en.wikipedia.org/wiki/Global_Location_Number)
          type: string
        type:
          description: The type of location.
          type: string
          enum:
            - warehouse
            - store
            - environmentalZone
            - restrictedArea
            - customer
            - operationalBase
            - fuelStation
            - serviceStation
            - other
        otherLocationType:
          description: >-
            Description of the location in case type of location is set to
            'other'.
          type: string
        administrativeReference:
          description: >-
            Address information that is used as an administrative reference. For
            example: when the actual load location is different from the
            officially registered location, this holds the latter
          allOf:
            - $ref: '#/components/schemas/Address'
        contactDetails:
          description: Contact details for this `Location`.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/phone'
              - $ref: '#/components/schemas/mobilePhone'
              - $ref: '#/components/schemas/email'
              - $ref: '#/components/schemas/firstName'
              - $ref: '#/components/schemas/lastName'
              - $ref: '#/components/schemas/name'
              - $ref: '#/components/schemas/vatCode'
              - $ref: '#/components/schemas/gln'
              - $ref: '#/components/schemas/iban'
              - $ref: '#/components/schemas/eori'
              - $ref: '#/components/schemas/other'
            discriminator:
              propertyName: type
              mapping:
                phone: '#/components/schemas/phone'
                mobilePhone: '#/components/schemas/mobilePhone'
                email: '#/components/schemas/email'
                firstName: '#/components/schemas/firstName'
                lastName: '#/components/schemas/lastName'
                name: '#/components/schemas/name'
                vatCode: '#/components/schemas/vatCode'
                gln: '#/components/schemas/gln'
                iban: '#/components/schemas/iban'
                eori: '#/components/schemas/eori'
                other: '#/components/schemas/other'
        remark:
          description: >-
            Remark about the location. Please don't misuse this field for
            external references, use the `externalAttributes` field instead.
          type: string
        subLocations:
          description: >-
            The locations that are can be identified on their own, but are also
            part of this location. For example a dock at

            a large distribution area. Sub-locations can also be seen as 'points
            of interest' on a larger location.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-locations-inline'
              - $ref: '#/components/schemas/reference'
              - $ref: '#/components/schemas/attributeRestriction'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-locations-inline'
                reference: '#/components/schemas/reference'
                attributeRestriction: '#/components/schemas/attributeRestriction'
        actors:
          description: >-
            Locations can be associated with actors in multiple ways, though the
            most common one is the _owner_ of the location, either a person or a
            legal entity.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-actors-inline'
              - $ref: '#/components/schemas/reference-roles'
              - $ref: '#/components/schemas/attributeRestriction-roles'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-actors-inline'
                reference: '#/components/schemas/reference-roles'
                attributeRestriction: '#/components/schemas/attributeRestriction-roles'
        constraint:
          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`.
          oneOf:
            - $ref: '#/components/schemas/location-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/location-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
      required:
        - geoReference
    from-location-move-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/from-location-move'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    to-location-move:
      example:
        id: 11c11d75-e114-4b5f-9751-b3a4afa23ecf
        name: Main warehouse
        geoReference:
          lat: 5.4126792
          lon: 52.1956251
          type: latLonPointGeoReference
        type: warehouse
        administrativeReference:
          name: Supermarket warehouse
          street: Valutaboulevard
          houseNumber: '16'
          houseNumberAddition: C
          postalCode: 1825BT
          city: Amersfoort
          country: NL
        contactDetails:
          - value: '+312012345678'
            remark: private cellphone of the CEO
            language: nld
            type: phone
        remark: The cafe around the corner has the best coffee in town.
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        geoReference:
          description: >-
            Describes a geographic reference, this is the primary way to link a
            `Location` entity to a physical, geographic location.
          oneOf:
            - $ref: '#/components/schemas/latLonPointGeoReference'
            - $ref: '#/components/schemas/latLonArrayGeoReference'
            - $ref: '#/components/schemas/Feature'
            - $ref: '#/components/schemas/openLRGeoReference'
            - $ref: '#/components/schemas/tmcLocationGeoReference'
            - $ref: '#/components/schemas/tmcArrayGeoReference'
            - $ref: '#/components/schemas/addressGeoReference'
          discriminator:
            propertyName: type
            mapping:
              latLonPointGeoReference: '#/components/schemas/latLonPointGeoReference'
              latLonArrayGeoReference: '#/components/schemas/latLonArrayGeoReference'
              Feature: '#/components/schemas/Feature'
              openLRGeoReference: '#/components/schemas/openLRGeoReference'
              tmcLocationGeoReference: '#/components/schemas/tmcLocationGeoReference'
              tmcArrayGeoReference: '#/components/schemas/tmcArrayGeoReference'
              addressGeoReference: '#/components/schemas/addressGeoReference'
        externalAttributes:
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        unCode:
          description: >-
            the United Nations Code for Trade and Transport Locations, is a
            geographic coding scheme developed and
             maintained by United Nations Economic Commission for Europe (UNECE) to uniquely identify locations. See
             [this Wikipedia page](https://en.wikipedia.org/wiki/UN/LOCODE).
          type: string
        gln:
          description: >-
            The Global Location Number (GLN) is part of the GS1 systems of
            standards to uniquely identify a location. See
             also this [Wikipedia page](https://en.wikipedia.org/wiki/Global_Location_Number)
          type: string
        type:
          description: The type of location.
          type: string
          enum:
            - warehouse
            - store
            - environmentalZone
            - restrictedArea
            - customer
            - operationalBase
            - fuelStation
            - serviceStation
            - other
        otherLocationType:
          description: >-
            Description of the location in case type of location is set to
            'other'.
          type: string
        administrativeReference:
          description: >-
            Address information that is used as an administrative reference. For
            example: when the actual load location is different from the
            officially registered location, this holds the latter
          allOf:
            - $ref: '#/components/schemas/Address'
        contactDetails:
          description: Contact details for this `Location`.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/phone'
              - $ref: '#/components/schemas/mobilePhone'
              - $ref: '#/components/schemas/email'
              - $ref: '#/components/schemas/firstName'
              - $ref: '#/components/schemas/lastName'
              - $ref: '#/components/schemas/name'
              - $ref: '#/components/schemas/vatCode'
              - $ref: '#/components/schemas/gln'
              - $ref: '#/components/schemas/iban'
              - $ref: '#/components/schemas/eori'
              - $ref: '#/components/schemas/other'
            discriminator:
              propertyName: type
              mapping:
                phone: '#/components/schemas/phone'
                mobilePhone: '#/components/schemas/mobilePhone'
                email: '#/components/schemas/email'
                firstName: '#/components/schemas/firstName'
                lastName: '#/components/schemas/lastName'
                name: '#/components/schemas/name'
                vatCode: '#/components/schemas/vatCode'
                gln: '#/components/schemas/gln'
                iban: '#/components/schemas/iban'
                eori: '#/components/schemas/eori'
                other: '#/components/schemas/other'
        remark:
          description: >-
            Remark about the location. Please don't misuse this field for
            external references, use the `externalAttributes` field instead.
          type: string
        subLocations:
          description: >-
            The locations that are can be identified on their own, but are also
            part of this location. For example a dock at

            a large distribution area. Sub-locations can also be seen as 'points
            of interest' on a larger location.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-locations-inline'
              - $ref: '#/components/schemas/reference'
              - $ref: '#/components/schemas/attributeRestriction'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-locations-inline'
                reference: '#/components/schemas/reference'
                attributeRestriction: '#/components/schemas/attributeRestriction'
        actors:
          description: >-
            Locations can be associated with actors in multiple ways, though the
            most common one is the _owner_ of the location, either a person or a
            legal entity.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-actors-inline'
              - $ref: '#/components/schemas/reference-roles'
              - $ref: '#/components/schemas/attributeRestriction-roles'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-actors-inline'
                reference: '#/components/schemas/reference-roles'
                attributeRestriction: '#/components/schemas/attributeRestriction-roles'
        constraint:
          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`.
          oneOf:
            - $ref: '#/components/schemas/location-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/location-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
      required:
        - geoReference
    to-location-move-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/to-location-move'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    value-with-unit:
      type: object
      properties:
        value:
          description: Value in the given unit.
          type: number
        unit:
          description: >-
            Measurement unit of this value. OTM5 currently does not enforce any
            units of measure. So you are free to use

            any unit necessary. However to ensure parties use OTM5 consistently
            there are a few rules:

            * For **currencies** use the [ISO_4217
            standard](https://en.wikipedia.org/wiki/ISO_4217)

            * For **mass**, **volume** and **length** the [SI system
            (International System of
            Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
            is
              recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
              proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
            * For degrees the recommend approach is Celsius, but Fahrenheit and
            Kelvin are also supported. To again avoid
              problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
              (C, F, or K).
            * For velocity use the metric system. The required format would then
            be \<length\>/\<time unit\> for the metric
              system, such as km/h (kilometer per hour) or m/s (meter per second).

            Since usage is not enforced you can deviate from these rules, though
            only do so if strictly necessary. The

            benefit from using a standard comes from consistent use, so
            deviating from the recommendations diminishes your benefit.

            If the type of unit you need is not supported please create a
            [change
            request](https://github.com/opentripmodel/otm5-change-requests)
          type: string
          example: km
      required:
        - value
        - unit
    route-association:
      example:
        id: beb9a25f-3f64-42ae-b1c6-e89cd450f66b
        name: An example route using coordinates to indicate how to drive.
        geoReference:
          geometry:
            coordinates:
              - - 1
                - 0
              - - 5
                - 0
              - - 5
                - 3
              - - 13
                - 3
              - - 13
                - 7
            type: LineString
          type: Feature
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        geoReference:
          description: Geographic representation of this route.
          oneOf:
            - $ref: '#/components/schemas/latLonPointGeoReference'
            - $ref: '#/components/schemas/latLonArrayGeoReference'
            - $ref: '#/components/schemas/Feature'
            - $ref: '#/components/schemas/openLRGeoReference'
            - $ref: '#/components/schemas/tmcLocationGeoReference'
            - $ref: '#/components/schemas/tmcArrayGeoReference'
            - $ref: '#/components/schemas/addressGeoReference'
          discriminator:
            propertyName: type
            mapping:
              latLonPointGeoReference: '#/components/schemas/latLonPointGeoReference'
              latLonArrayGeoReference: '#/components/schemas/latLonArrayGeoReference'
              Feature: '#/components/schemas/Feature'
              openLRGeoReference: '#/components/schemas/openLRGeoReference'
              tmcLocationGeoReference: '#/components/schemas/tmcLocationGeoReference'
              tmcArrayGeoReference: '#/components/schemas/tmcArrayGeoReference'
              addressGeoReference: '#/components/schemas/addressGeoReference'
        geoReferences:
          deprecated: true
          description: >-
            Geographic representation of this route. This property is
            deprecated; use geoReferece (not plural) instead.
          oneOf:
            - $ref: '#/components/schemas/latLonPointGeoReference'
            - $ref: '#/components/schemas/latLonArrayGeoReference'
            - $ref: '#/components/schemas/Feature'
            - $ref: '#/components/schemas/openLRGeoReference'
            - $ref: '#/components/schemas/tmcLocationGeoReference'
            - $ref: '#/components/schemas/tmcArrayGeoReference'
            - $ref: '#/components/schemas/addressGeoReference'
          discriminator:
            propertyName: type
            mapping:
              latLonPointGeoReference: '#/components/schemas/latLonPointGeoReference'
              latLonArrayGeoReference: '#/components/schemas/latLonArrayGeoReference'
              Feature: '#/components/schemas/Feature'
              openLRGeoReference: '#/components/schemas/openLRGeoReference'
              tmcLocationGeoReference: '#/components/schemas/tmcLocationGeoReference'
              tmcArrayGeoReference: '#/components/schemas/tmcArrayGeoReference'
              addressGeoReference: '#/components/schemas/addressGeoReference'
        actors:
          description: >-
            Actors associated with this route, for instance the Company that
            requires this route as a Last-Mile guidance.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-actors-inline'
              - $ref: '#/components/schemas/reference-roles'
              - $ref: '#/components/schemas/attributeRestriction-roles'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-actors-inline'
                reference: '#/components/schemas/reference-roles'
                attributeRestriction: '#/components/schemas/attributeRestriction-roles'
        constraint:
          description: >-
            Constraints of using this route, for instance it might only be used
            by vehicles with below a certain weight.
          oneOf:
            - $ref: '#/components/schemas/route-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/route-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
      required:
        - geoReference
    route-association-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/route-association'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    move-constraint:
      example:
        id: 89a7bb4d-8720-4db9-aef7-4c3309186c3e
        name: Example combined constraint
        value:
          and:
            - startTime: '2021-06-23T10:00:00Z'
              endTime: '2021-06-23T13:00:00Z'
              description: alert-threshold
              type: timeWindowConstraint
            - constraintType: maximum
              maximum:
                value: 5
                unit: C
              type: temperatureConstraint
            - or:
                - fuelTypes:
                    - battery
                  type: fuelTypeConstraint
                - fuelTypes:
                    - biodiesel
                  type: fuelTypeConstraint
                - minimum: euro5
                  type: emissionStandardConstraint
              type: orConstraint
          type: andConstraint
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        value:
          $ref: '#/components/schemas/constraintValue'
        enforceability:
          description: >-
            The enforceability of the constraint. Indicates whether or not the
            constraint is a suggestion/preference or something that is mandatory
            to adhere to.
          default: enforced
          type: string
          enum:
            - enforced
            - preference
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
      required:
        - value
    move-constraint-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/move-constraint'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    move-in-events:
      example:
        id: a0e04457-a272-4160-91cc-4483aa5296c7
        name: Moving between the warehouse and the customer
        externalAttributes:
          timeDelay:
            value: 2
            unit: s
        from:
          entity:
            id: 11c11d75-e114-4b5f-9751-b3a4afa23ecf
            name: Main warehouse
            geoReference:
              lat: 5.4126792
              lon: 52.1956251
              type: latLonPointGeoReference
            type: warehouse
            administrativeReference:
              name: Supermarket warehouse
              street: Valutaboulevard
              houseNumber: '16'
              houseNumberAddition: C
              postalCode: 1825BT
              city: Amersfoort
              country: NL
            contactDetails:
              - value: '+312012345678'
                remark: private cellphone of the CEO
                language: nld
                type: phone
            remark: The cafe around the corner has the best coffee in town.
          associationType: inline
        to:
          entity:
            id: 9a3f26b2-8cf3-48db-b663-6c751c86d710
            geoReference:
              name: House of Alice
              street: North Lane
              houseNumber: '123'
              houseNumberAddition: B
              postalCode: 9999ZZ
              type: addressGeoReference
          associationType: inline
        distance:
          value: 120
          unit: km
        route:
          entity:
            id: beb9a25f-3f64-42ae-b1c6-e89cd450f66b
            name: An example route using coordinates to indicate how to drive.
            geoReference:
              geometry:
                coordinates:
                  - - 1
                    - 0
                  - - 5
                    - 0
                  - - 5
                    - 3
                  - - 13
                    - 3
                  - - 13
                    - 7
                type: LineString
              type: Feature
          associationType: inline
      type: object
      properties:
        entityType:
          example: move
          type: string
          enum:
            - move
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        result:
          description: >-
            The result of the action, can only be present in the actual or
            realized lifecycles. The result has a

            required status and optional additional info, like a remark and
            reason (in the case of failure).
          type: object
          properties:
            status:
              description: >-
                The status of the result, either succeeded, failed, partially
                succeeded or cancelled.
              type: string
              enum:
                - succeeded
                - failed
                - partiallySucceeded
                - cancelled
            remark:
              description: >-
                The remark of the result, usually only interesting in case the
                result was failed or partially succeedded. Note that

                differs from the remark on an action, which is a remark that is
                relevant before the execution of the action. Whereas

                this remark is relevant for the result after execution.
              type: string
            reason:
              $ref: '#/components/schemas/action-result-reason'
          required:
            - status
        transportMode:
          description: >-
            Method of transport used for the carriage of goods on this move, can
            either be using a ship (maritime or

            inland waterway), a truck/car/van/bike/etc. (road), using the train
            (rail), or using a plane (air). These

            values are based on the

            [recommendation of
            UNECE](https://unece.org/fileadmin/DAM/cefact/recommendations/rec19/rec19_ecetrd138.pdf).
          type: string
          enum:
            - maritime
            - road
            - rail
            - air
            - inlandWaterway
        remark:
          description: Free text field for adding an on remark on this action.
          type: string
        sequenceNr:
          description: >-
            The sequence number of this action within the entity it is taking
            place. Can be used to indicate order when no times are present
          type: integer
          format: int64
        trip:
          description: >-
            The trip in which this Move takes place, only provided if the trip
            is not clear from the context.
          oneOf:
            - $ref: '#/components/schemas/trip-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/trip-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        from:
          description: The location from which the move action is started.
          oneOf:
            - $ref: '#/components/schemas/from-location-move-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/from-location-move-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        to:
          description: The location where the move action is ended.
          oneOf:
            - $ref: '#/components/schemas/to-location-move-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/to-location-move-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        timeFormat:
          default: dateTime
          type: string
          enum:
            - dateTime
            - recurringDateTime
            - duration
        startTime:
          description: The time at which the actions starts in ISO format.
          type: string
        endTime:
          description: The time at which the action is completed in ISO format.
          type: string
        recurrence:
          description: >-
            The recurrence of the date time, should only be set when
            `timeFormat` is set to `recurringDateTime`. The

            recurrence follows the [Recurrence
            Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)

            specification
          type: string
          format: recurrence
        duration:
          description: >-
            The duration of this action/event, should only be set when
            `timeFormat` is set to `duration`. The

            duration follows the [ISO
            8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)

            specification
          example: PT168H
          type: string
          format: duration
        distance:
          description: >-
            The distance between `from` and `to` locations of this move action.
            The difference between calculated and actually driven distance can
            be specified using multiple move actions with a different lifecycle
            (e.g. 'projected' vs 'actual')
          $ref: '#/components/schemas/value-with-unit'
        route:
          description: The route from location A to location B that is travelled.
          oneOf:
            - $ref: '#/components/schemas/route-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/route-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        constraint:
          description: >-
            Constraints which this move action abides to, such as vehicle type
            or time window constraints.
          oneOf:
            - $ref: '#/components/schemas/move-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/move-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
      required:
        - entityType
    handover-from-actor:
      example:
        id: 45db6ed0-28a7-4e4a-baba-3d5f8d171103
        name: Logistics manager
        contactDetails:
          - value: Simon Isaac
            remark: Wants to be called 'Sim'.
            type: firstName
          - value: Macan
            type: lastName
          - value: '+312012345678'
            remark: private cellphone of the CEO
            language: nld
            type: phone
          - value: simon@macan
            type: email
          - value: NL74BANK5890469479
            type: iban
          - value: NL000099998B57
            type: vatCode
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        contactDetails:
          description: Contact details for this `Actor`.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/phone'
              - $ref: '#/components/schemas/mobilePhone'
              - $ref: '#/components/schemas/email'
              - $ref: '#/components/schemas/firstName'
              - $ref: '#/components/schemas/lastName'
              - $ref: '#/components/schemas/name'
              - $ref: '#/components/schemas/vatCode'
              - $ref: '#/components/schemas/gln'
              - $ref: '#/components/schemas/iban'
              - $ref: '#/components/schemas/eori'
              - $ref: '#/components/schemas/other'
            discriminator:
              propertyName: type
              mapping:
                phone: '#/components/schemas/phone'
                mobilePhone: '#/components/schemas/mobilePhone'
                email: '#/components/schemas/email'
                firstName: '#/components/schemas/firstName'
                lastName: '#/components/schemas/lastName'
                name: '#/components/schemas/name'
                vatCode: '#/components/schemas/vatCode'
                gln: '#/components/schemas/gln'
                iban: '#/components/schemas/iban'
                eori: '#/components/schemas/eori'
                other: '#/components/schemas/other'
        locations:
          description: Locations for this `Actor`.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-locations-inline'
              - $ref: '#/components/schemas/reference'
              - $ref: '#/components/schemas/attributeRestriction'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-locations-inline'
                reference: '#/components/schemas/reference'
                attributeRestriction: '#/components/schemas/attributeRestriction'
    handover-from-actor-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/handover-from-actor'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
        roles:
          description: >-
            The roles this actor can have, one or multiple of:


            - **Carrier**: the actor which is responsible for physically
            delivering the goods from one place to another. Note
              that the actual transport can be delegated to another party (subcontractor), but the carrier remains responsible.
            - **Shipper**: the actor that engages in shipping goods and is the
            main contractor, ensuring the shipment takes place.

            - **Consignee**: the actor that is the buyer of the goods.

            - **Consignor**: the actor that sells the goods.

            - **Receiver**: the actor that receives the goods.

            - **Driver**: the actor that drives the vehicle containing the
            goods.

            - **Subcontractor**: The actor actually carrying out the physical
            delivery of the goods.

            - **Owner**: The actor owning the associated entity, e.g. the owner
            of a location or vehicle.


            **How these are related**

            The _consignee_ requires goods from the _consignor_. The _shipper_
            is the party responsible for

            ensuring this shipment takes place. The _carrier_ is the one
            responsible for transporting the goods, and ensures

            they are delivered to the _receiver_. If required/desired, the
            carrier can delegate the actual delivery to

            another party, the _subcontractor_. A _driver_ is an actual person
            driving the vehicle. Note that a single

            actor can have multiple roles, for instance, an actor can be the
            shipper and consignor at the same time. Also

            note that there might be an actor that does not fit any of these
            roles. Then the roles may be left empty. However

            if the role of the actor fits any of the above it must be present.
          type: array
          items:
            type: string
            enum:
              - shipper
              - carrier
              - consignee
              - consignor
              - receiver
              - driver
              - subcontractor
              - owner
      required:
        - associationType
        - entity
    handover-to-actor:
      example:
        id: 45db6ed0-28a7-4e4a-baba-3d5f8d171103
        name: Logistics manager
        contactDetails:
          - value: Simon Isaac
            remark: Wants to be called 'Sim'.
            type: firstName
          - value: Macan
            type: lastName
          - value: '+312012345678'
            remark: private cellphone of the CEO
            language: nld
            type: phone
          - value: simon@macan
            type: email
          - value: NL74BANK5890469479
            type: iban
          - value: NL000099998B57
            type: vatCode
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        contactDetails:
          description: Contact details for this `Actor`.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/phone'
              - $ref: '#/components/schemas/mobilePhone'
              - $ref: '#/components/schemas/email'
              - $ref: '#/components/schemas/firstName'
              - $ref: '#/components/schemas/lastName'
              - $ref: '#/components/schemas/name'
              - $ref: '#/components/schemas/vatCode'
              - $ref: '#/components/schemas/gln'
              - $ref: '#/components/schemas/iban'
              - $ref: '#/components/schemas/eori'
              - $ref: '#/components/schemas/other'
            discriminator:
              propertyName: type
              mapping:
                phone: '#/components/schemas/phone'
                mobilePhone: '#/components/schemas/mobilePhone'
                email: '#/components/schemas/email'
                firstName: '#/components/schemas/firstName'
                lastName: '#/components/schemas/lastName'
                name: '#/components/schemas/name'
                vatCode: '#/components/schemas/vatCode'
                gln: '#/components/schemas/gln'
                iban: '#/components/schemas/iban'
                eori: '#/components/schemas/eori'
                other: '#/components/schemas/other'
        locations:
          description: Locations for this `Actor`.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-locations-inline'
              - $ref: '#/components/schemas/reference'
              - $ref: '#/components/schemas/attributeRestriction'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-locations-inline'
                reference: '#/components/schemas/reference'
                attributeRestriction: '#/components/schemas/attributeRestriction'
    handover-to-actor-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/handover-to-actor'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
        roles:
          description: >-
            The roles this actor can have, one or multiple of:


            - **Carrier**: the actor which is responsible for physically
            delivering the goods from one place to another. Note
              that the actual transport can be delegated to another party (subcontractor), but the carrier remains responsible.
            - **Shipper**: the actor that engages in shipping goods and is the
            main contractor, ensuring the shipment takes place.

            - **Consignee**: the actor that is the buyer of the goods.

            - **Consignor**: the actor that sells the goods.

            - **Receiver**: the actor that receives the goods.

            - **Driver**: the actor that drives the vehicle containing the
            goods.

            - **Subcontractor**: The actor actually carrying out the physical
            delivery of the goods.

            - **Owner**: The actor owning the associated entity, e.g. the owner
            of a location or vehicle.


            **How these are related**

            The _consignee_ requires goods from the _consignor_. The _shipper_
            is the party responsible for

            ensuring this shipment takes place. The _carrier_ is the one
            responsible for transporting the goods, and ensures

            they are delivered to the _receiver_. If required/desired, the
            carrier can delegate the actual delivery to

            another party, the _subcontractor_. A _driver_ is an actual person
            driving the vehicle. Note that a single

            actor can have multiple roles, for instance, an actor can be the
            shipper and consignor at the same time. Also

            note that there might be an actor that does not fit any of these
            roles. Then the roles may be left empty. However

            if the role of the actor fits any of the above it must be present.
          type: array
          items:
            type: string
            enum:
              - shipper
              - carrier
              - consignee
              - consignor
              - receiver
              - driver
              - subcontractor
              - owner
      required:
        - associationType
        - entity
    handover-location:
      example:
        id: 11c11d75-e114-4b5f-9751-b3a4afa23ecf
        name: Main warehouse
        geoReference:
          lat: 5.4126792
          lon: 52.1956251
          type: latLonPointGeoReference
        type: warehouse
        administrativeReference:
          name: Supermarket warehouse
          street: Valutaboulevard
          houseNumber: '16'
          houseNumberAddition: C
          postalCode: 1825BT
          city: Amersfoort
          country: NL
        contactDetails:
          - value: '+312012345678'
            remark: private cellphone of the CEO
            language: nld
            type: phone
        remark: The cafe around the corner has the best coffee in town.
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        geoReference:
          description: >-
            Describes a geographic reference, this is the primary way to link a
            `Location` entity to a physical, geographic location.
          oneOf:
            - $ref: '#/components/schemas/latLonPointGeoReference'
            - $ref: '#/components/schemas/latLonArrayGeoReference'
            - $ref: '#/components/schemas/Feature'
            - $ref: '#/components/schemas/openLRGeoReference'
            - $ref: '#/components/schemas/tmcLocationGeoReference'
            - $ref: '#/components/schemas/tmcArrayGeoReference'
            - $ref: '#/components/schemas/addressGeoReference'
          discriminator:
            propertyName: type
            mapping:
              latLonPointGeoReference: '#/components/schemas/latLonPointGeoReference'
              latLonArrayGeoReference: '#/components/schemas/latLonArrayGeoReference'
              Feature: '#/components/schemas/Feature'
              openLRGeoReference: '#/components/schemas/openLRGeoReference'
              tmcLocationGeoReference: '#/components/schemas/tmcLocationGeoReference'
              tmcArrayGeoReference: '#/components/schemas/tmcArrayGeoReference'
              addressGeoReference: '#/components/schemas/addressGeoReference'
        externalAttributes:
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        unCode:
          description: >-
            the United Nations Code for Trade and Transport Locations, is a
            geographic coding scheme developed and
             maintained by United Nations Economic Commission for Europe (UNECE) to uniquely identify locations. See
             [this Wikipedia page](https://en.wikipedia.org/wiki/UN/LOCODE).
          type: string
        gln:
          description: >-
            The Global Location Number (GLN) is part of the GS1 systems of
            standards to uniquely identify a location. See
             also this [Wikipedia page](https://en.wikipedia.org/wiki/Global_Location_Number)
          type: string
        type:
          description: The type of location.
          type: string
          enum:
            - warehouse
            - store
            - environmentalZone
            - restrictedArea
            - customer
            - operationalBase
            - fuelStation
            - serviceStation
            - other
        otherLocationType:
          description: >-
            Description of the location in case type of location is set to
            'other'.
          type: string
        administrativeReference:
          description: >-
            Address information that is used as an administrative reference. For
            example: when the actual load location is different from the
            officially registered location, this holds the latter
          allOf:
            - $ref: '#/components/schemas/Address'
        contactDetails:
          description: Contact details for this `Location`.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/phone'
              - $ref: '#/components/schemas/mobilePhone'
              - $ref: '#/components/schemas/email'
              - $ref: '#/components/schemas/firstName'
              - $ref: '#/components/schemas/lastName'
              - $ref: '#/components/schemas/name'
              - $ref: '#/components/schemas/vatCode'
              - $ref: '#/components/schemas/gln'
              - $ref: '#/components/schemas/iban'
              - $ref: '#/components/schemas/eori'
              - $ref: '#/components/schemas/other'
            discriminator:
              propertyName: type
              mapping:
                phone: '#/components/schemas/phone'
                mobilePhone: '#/components/schemas/mobilePhone'
                email: '#/components/schemas/email'
                firstName: '#/components/schemas/firstName'
                lastName: '#/components/schemas/lastName'
                name: '#/components/schemas/name'
                vatCode: '#/components/schemas/vatCode'
                gln: '#/components/schemas/gln'
                iban: '#/components/schemas/iban'
                eori: '#/components/schemas/eori'
                other: '#/components/schemas/other'
        remark:
          description: >-
            Remark about the location. Please don't misuse this field for
            external references, use the `externalAttributes` field instead.
          type: string
        subLocations:
          description: >-
            The locations that are can be identified on their own, but are also
            part of this location. For example a dock at

            a large distribution area. Sub-locations can also be seen as 'points
            of interest' on a larger location.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-locations-inline'
              - $ref: '#/components/schemas/reference'
              - $ref: '#/components/schemas/attributeRestriction'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-locations-inline'
                reference: '#/components/schemas/reference'
                attributeRestriction: '#/components/schemas/attributeRestriction'
        actors:
          description: >-
            Locations can be associated with actors in multiple ways, though the
            most common one is the _owner_ of the location, either a person or a
            legal entity.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-actors-inline'
              - $ref: '#/components/schemas/reference-roles'
              - $ref: '#/components/schemas/attributeRestriction-roles'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-actors-inline'
                reference: '#/components/schemas/reference-roles'
                attributeRestriction: '#/components/schemas/attributeRestriction-roles'
        constraint:
          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`.
          oneOf:
            - $ref: '#/components/schemas/location-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/location-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
      required:
        - geoReference
    handover-location-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/handover-location'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    handover-constraint:
      example:
        id: 89a7bb4d-8720-4db9-aef7-4c3309186c3e
        name: Example combined constraint
        value:
          and:
            - startTime: '2021-06-23T10:00:00Z'
              endTime: '2021-06-23T13:00:00Z'
              description: alert-threshold
              type: timeWindowConstraint
            - constraintType: maximum
              maximum:
                value: 5
                unit: C
              type: temperatureConstraint
            - or:
                - fuelTypes:
                    - battery
                  type: fuelTypeConstraint
                - fuelTypes:
                    - biodiesel
                  type: fuelTypeConstraint
                - minimum: euro5
                  type: emissionStandardConstraint
              type: orConstraint
          type: andConstraint
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        value:
          $ref: '#/components/schemas/constraintValue'
        enforceability:
          description: >-
            The enforceability of the constraint. Indicates whether or not the
            constraint is a suggestion/preference or something that is mandatory
            to adhere to.
          default: enforced
          type: string
          enum:
            - enforced
            - preference
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
      required:
        - value
    handover-constraint-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/handover-constraint'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    handover-in-events:
      example:
        id: 84506b63-3da2-44d4-aaef-d034ae6e3afe
        remark: Handing over a consignment from one party to another
        consignment:
          uuid: 047cfa4d-fd8b-47ba-b8e9-87067294d2fa
          entityType: consignment
          associationType: reference
        startTime: '2021-06-23T15:05:00Z'
        endTime: '2021-06-23T15:10:00Z'
      type: object
      properties:
        entityType:
          example: handOver
          type: string
          enum:
            - handOver
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        result:
          description: >-
            The result of the action, can only be present in the actual or
            realized lifecycles. The result has a

            required status and optional additional info, like a remark and
            reason (in the case of failure).
          type: object
          properties:
            status:
              description: >-
                The status of the result, either succeeded, failed, partially
                succeeded or cancelled.
              type: string
              enum:
                - succeeded
                - failed
                - partiallySucceeded
                - cancelled
            remark:
              description: >-
                The remark of the result, usually only interesting in case the
                result was failed or partially succeedded. Note that

                differs from the remark on an action, which is a remark that is
                relevant before the execution of the action. Whereas

                this remark is relevant for the result after execution.
              type: string
            reason:
              $ref: '#/components/schemas/action-result-reason'
          required:
            - status
        remark:
          description: Free text field for adding an on remark on this action.
          type: string
        sequenceNr:
          description: >-
            The sequence number of this action within the entity it is taking
            place. Can be used to indicate order when no times are present
          type: integer
          format: int64
        from:
          description: The party that is handing over the consignment/goods.
          oneOf:
            - $ref: '#/components/schemas/handover-from-actor-inline'
            - $ref: '#/components/schemas/reference-roles'
            - $ref: '#/components/schemas/attributeRestriction-roles'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/handover-from-actor-inline'
              reference: '#/components/schemas/reference-roles'
              attributeRestriction: '#/components/schemas/attributeRestriction-roles'
        to:
          description: The party that is receiving the consignments/goods.
          oneOf:
            - $ref: '#/components/schemas/handover-to-actor-inline'
            - $ref: '#/components/schemas/reference-roles'
            - $ref: '#/components/schemas/attributeRestriction-roles'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/handover-to-actor-inline'
              reference: '#/components/schemas/reference-roles'
              attributeRestriction: '#/components/schemas/attributeRestriction-roles'
        consignment:
          description: The consignment that is the subject of this action.
          oneOf:
            - $ref: '#/components/schemas/consignment-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/consignment-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        documents:
          description: >-
            Documents that are relevant for this action. Such as a
            proof-of-delivery photo, or scanned CMR.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/documents-inline'
              - $ref: '#/components/schemas/reference'
              - $ref: '#/components/schemas/attributeRestriction'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/documents-inline'
                reference: '#/components/schemas/reference'
                attributeRestriction: '#/components/schemas/attributeRestriction'
        location:
          description: The location at which this action is taking place.
          oneOf:
            - $ref: '#/components/schemas/handover-location-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/handover-location-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        timeFormat:
          default: dateTime
          type: string
          enum:
            - dateTime
            - recurringDateTime
            - duration
        startTime:
          description: The time at which the actions starts in ISO format.
          type: string
        endTime:
          description: The time at which the action is completed in ISO format.
          type: string
        recurrence:
          description: >-
            The recurrence of the date time, should only be set when
            `timeFormat` is set to `recurringDateTime`. The

            recurrence follows the [Recurrence
            Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)

            specification
          type: string
          format: recurrence
        duration:
          description: >-
            The duration of this action/event, should only be set when
            `timeFormat` is set to `duration`. The

            duration follows the [ISO
            8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)

            specification
          example: PT168H
          type: string
          format: duration
        constraint:
          description: >-
            The constraints this action abides to, such as start and end time
            windows.
          oneOf:
            - $ref: '#/components/schemas/handover-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/handover-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
      required:
        - entityType
    attach-in-events:
      example:
        id: e2b597bd-feb5-4951-a070-e143eae22a29
        lifecycle: planned
        remark: attaching a trailer
        vehicle:
          entity:
            id: b9bb914d-845e-46f2-91ff-31fa4bac2fbe
            name: Bob's Boxtruck
            vehicleType: boxtruck
            fuel: electricity
            loadCapacities:
              - value: 1000
                unit: kg
            length:
              value: 8
              unit: m
            height:
              value: 2.8
              unit: m
            width:
              value: 2
              unit: m
            licensePlate: AB-12-CD
            emptyWeight:
              value: 2000
              unit: kg
          associationType: inline
        transportEquipment:
          entity:
            id: a29905bb-9af8-4118-896a-71b1eaf07cc0
            description: A trailer
            width:
              value: 2.46
              unit: m
            height:
              value: 2.7
              unit: m
            length:
              value: 13.62
              unit: m
            licensePlate: 123-ABC
          associationType: inline
        startTime: '2021-06-23T15:15:00Z'
        endTime: '2021-06-23T15:20:00Z'
      type: object
      properties:
        entityType:
          example: attachTransportEquipment
          type: string
          enum:
            - attachTransportEquipment
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        result:
          description: >-
            The result of the action, can only be present in the actual or
            realized lifecycles. The result has a

            required status and optional additional info, like a remark and
            reason (in the case of failure).
          type: object
          properties:
            status:
              description: >-
                The status of the result, either succeeded, failed, partially
                succeeded or cancelled.
              type: string
              enum:
                - succeeded
                - failed
                - partiallySucceeded
                - cancelled
            remark:
              description: >-
                The remark of the result, usually only interesting in case the
                result was failed or partially succeedded. Note that

                differs from the remark on an action, which is a remark that is
                relevant before the execution of the action. Whereas

                this remark is relevant for the result after execution.
              type: string
            reason:
              $ref: '#/components/schemas/action-result-reason'
          required:
            - status
        remark:
          description: Free text field for adding an on remark on this action.
          type: string
        sequenceNr:
          description: >-
            The sequence number of this action within the entity it is taking
            place. Can be used to indicate order when no times are present
          type: integer
          format: int64
        vehicle:
          description: The vehicle that is involved in this action.
          oneOf:
            - $ref: '#/components/schemas/vehicle-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/vehicle-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        transportEquipment:
          description: >-
            The transport equipment that is being attached/detached to the
            associated vehicle.
          oneOf:
            - $ref: '#/components/schemas/transport-equipment-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/transport-equipment-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        location:
          description: The location at which this action is taking place.
          oneOf:
            - $ref: '#/components/schemas/action-location-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/action-location-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        timeFormat:
          default: dateTime
          type: string
          enum:
            - dateTime
            - recurringDateTime
            - duration
        startTime:
          description: The time at which the actions starts in ISO format.
          type: string
        endTime:
          description: The time at which the action is completed in ISO format.
          type: string
        recurrence:
          description: >-
            The recurrence of the date time, should only be set when
            `timeFormat` is set to `recurringDateTime`. The

            recurrence follows the [Recurrence
            Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)

            specification
          type: string
          format: recurrence
        duration:
          description: >-
            The duration of this action/event, should only be set when
            `timeFormat` is set to `duration`. The

            duration follows the [ISO
            8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)

            specification
          example: PT168H
          type: string
          format: duration
        constraint:
          description: >-
            The constraints this action abides to, such as start and end time
            windows.
          oneOf:
            - $ref: '#/components/schemas/action-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/action-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
      required:
        - entityType
    detach-in-events:
      example:
        id: a2d2595f-9554-45a3-8c7d-df2d1923ef51
        lifecycle: planned
        remark: attaching a trailer
        vehicle:
          entity:
            id: b9bb914d-845e-46f2-91ff-31fa4bac2fbe
            name: Bob's Boxtruck
            vehicleType: boxtruck
            fuel: electricity
            loadCapacities:
              - value: 1000
                unit: kg
            length:
              value: 8
              unit: m
            height:
              value: 2.8
              unit: m
            width:
              value: 2
              unit: m
            licensePlate: AB-12-CD
            emptyWeight:
              value: 2000
              unit: kg
          associationType: inline
        transportEquipment:
          uuid: a29905bb-9af8-4118-896a-71b1eaf07cc0
          entityType: transportEquipment
          associationType: reference
        startTime: '2021-06-23T15:20:00Z'
        endTime: '2021-06-23T15:30:00Z'
      type: object
      properties:
        entityType:
          example: detachTransportEquipment
          type: string
          enum:
            - detachTransportEquipment
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        result:
          description: >-
            The result of the action, can only be present in the actual or
            realized lifecycles. The result has a

            required status and optional additional info, like a remark and
            reason (in the case of failure).
          type: object
          properties:
            status:
              description: >-
                The status of the result, either succeeded, failed, partially
                succeeded or cancelled.
              type: string
              enum:
                - succeeded
                - failed
                - partiallySucceeded
                - cancelled
            remark:
              description: >-
                The remark of the result, usually only interesting in case the
                result was failed or partially succeedded. Note that

                differs from the remark on an action, which is a remark that is
                relevant before the execution of the action. Whereas

                this remark is relevant for the result after execution.
              type: string
            reason:
              $ref: '#/components/schemas/action-result-reason'
          required:
            - status
        remark:
          description: Free text field for adding an on remark on this action.
          type: string
        sequenceNr:
          description: >-
            The sequence number of this action within the entity it is taking
            place. Can be used to indicate order when no times are present
          type: integer
          format: int64
        vehicle:
          description: The vehicle that is involved in this action.
          oneOf:
            - $ref: '#/components/schemas/vehicle-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/vehicle-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        transportEquipment:
          description: >-
            The transport equipment that is being attached/detached to the
            associated vehicle.
          oneOf:
            - $ref: '#/components/schemas/transport-equipment-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/transport-equipment-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        location:
          description: The location at which this action is taking place.
          oneOf:
            - $ref: '#/components/schemas/action-location-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/action-location-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        timeFormat:
          default: dateTime
          type: string
          enum:
            - dateTime
            - recurringDateTime
            - duration
        startTime:
          description: The time at which the actions starts in ISO format.
          type: string
        endTime:
          description: The time at which the action is completed in ISO format.
          type: string
        recurrence:
          description: >-
            The recurrence of the date time, should only be set when
            `timeFormat` is set to `recurringDateTime`. The

            recurrence follows the [Recurrence
            Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)

            specification
          type: string
          format: recurrence
        duration:
          description: >-
            The duration of this action/event, should only be set when
            `timeFormat` is set to `duration`. The

            duration follows the [ISO
            8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)

            specification
          example: PT168H
          type: string
          format: duration
        constraint:
          description: >-
            The constraints this action abides to, such as start and end time
            windows.
          oneOf:
            - $ref: '#/components/schemas/action-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/action-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
      required:
        - entityType
    refuel-in-events:
      example:
        id: d348a354-78c9-4c1f-a011-99c048b977a3
        lifecycle: planned
        remark: need to fill the tank again!
        vehicle:
          entity:
            id: b9bb914d-845e-46f2-91ff-31fa4bac2fbe
            name: Bob's Boxtruck
            vehicleType: boxtruck
            fuel: electricity
            loadCapacities:
              - value: 1000
                unit: kg
            length:
              value: 8
              unit: m
            height:
              value: 2.8
              unit: m
            width:
              value: 2
              unit: m
            licensePlate: AB-12-CD
            emptyWeight:
              value: 2000
              unit: kg
          associationType: inline
        startTime: '2021-06-23T15:35:00Z'
        endTime: '2021-06-23T15:37:00Z'
      type: object
      properties:
        entityType:
          example: refuel
          type: string
          enum:
            - refuel
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        result:
          description: >-
            The result of the action, can only be present in the actual or
            realized lifecycles. The result has a

            required status and optional additional info, like a remark and
            reason (in the case of failure).
          type: object
          properties:
            status:
              description: >-
                The status of the result, either succeeded, failed, partially
                succeeded or cancelled.
              type: string
              enum:
                - succeeded
                - failed
                - partiallySucceeded
                - cancelled
            remark:
              description: >-
                The remark of the result, usually only interesting in case the
                result was failed or partially succeedded. Note that

                differs from the remark on an action, which is a remark that is
                relevant before the execution of the action. Whereas

                this remark is relevant for the result after execution.
              type: string
            reason:
              $ref: '#/components/schemas/action-result-reason'
          required:
            - status
        remark:
          description: Free text field for adding an on remark on this action.
          type: string
        sequenceNr:
          description: >-
            The sequence number of this action within the entity it is taking
            place. Can be used to indicate order when no times are present
          type: integer
          format: int64
        vehicle:
          description: The vehicle that is involved in this action.
          oneOf:
            - $ref: '#/components/schemas/vehicle-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/vehicle-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        location:
          description: The location at which this action is taking place.
          oneOf:
            - $ref: '#/components/schemas/action-location-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/action-location-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        timeFormat:
          default: dateTime
          type: string
          enum:
            - dateTime
            - recurringDateTime
            - duration
        startTime:
          description: The time at which the actions starts in ISO format.
          type: string
        endTime:
          description: The time at which the action is completed in ISO format.
          type: string
        recurrence:
          description: >-
            The recurrence of the date time, should only be set when
            `timeFormat` is set to `recurringDateTime`. The

            recurrence follows the [Recurrence
            Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)

            specification
          type: string
          format: recurrence
        duration:
          description: >-
            The duration of this action/event, should only be set when
            `timeFormat` is set to `duration`. The

            duration follows the [ISO
            8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)

            specification
          example: PT168H
          type: string
          format: duration
        constraint:
          description: >-
            The constraints this action abides to, such as start and end time
            windows.
          oneOf:
            - $ref: '#/components/schemas/action-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/action-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
      required:
        - entityType
    break-constraint:
      example:
        id: 89a7bb4d-8720-4db9-aef7-4c3309186c3e
        name: Example combined constraint
        value:
          and:
            - startTime: '2021-06-23T10:00:00Z'
              endTime: '2021-06-23T13:00:00Z'
              description: alert-threshold
              type: timeWindowConstraint
            - constraintType: maximum
              maximum:
                value: 5
                unit: C
              type: temperatureConstraint
            - or:
                - fuelTypes:
                    - battery
                  type: fuelTypeConstraint
                - fuelTypes:
                    - biodiesel
                  type: fuelTypeConstraint
                - minimum: euro5
                  type: emissionStandardConstraint
              type: orConstraint
          type: andConstraint
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        value:
          $ref: '#/components/schemas/constraintValue'
        enforceability:
          description: >-
            The enforceability of the constraint. Indicates whether or not the
            constraint is a suggestion/preference or something that is mandatory
            to adhere to.
          default: enforced
          type: string
          enum:
            - enforced
            - preference
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
      required:
        - value
    break-constraint-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/break-constraint'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    break-in-events:
      type: object
      properties:
        entityType:
          example: break
          type: string
          enum:
            - break
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        result:
          description: >-
            The result of the action, can only be present in the actual or
            realized lifecycles. The result has a

            required status and optional additional info, like a remark and
            reason (in the case of failure).
          type: object
          properties:
            status:
              description: >-
                The status of the result, either succeeded, failed, partially
                succeeded or cancelled.
              type: string
              enum:
                - succeeded
                - failed
                - partiallySucceeded
                - cancelled
            remark:
              description: >-
                The remark of the result, usually only interesting in case the
                result was failed or partially succeedded. Note that

                differs from the remark on an action, which is a remark that is
                relevant before the execution of the action. Whereas

                this remark is relevant for the result after execution.
              type: string
            reason:
              $ref: '#/components/schemas/action-result-reason'
          required:
            - status
        remark:
          description: Free text field for adding an on remark on this action.
          type: string
        sequenceNr:
          description: >-
            The sequence number of this action within the entity it is taking
            place. Can be used to indicate order when no times are present
          type: integer
          format: int64
        location:
          description: The location at which this action is taking place.
          oneOf:
            - $ref: '#/components/schemas/action-location-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/action-location-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        trip:
          description: The trip this action takes place on.
          oneOf:
            - $ref: '#/components/schemas/trip-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/trip-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        timeFormat:
          default: dateTime
          type: string
          enum:
            - dateTime
            - recurringDateTime
            - duration
        startTime:
          description: The time at which the actions starts in ISO format.
          type: string
        endTime:
          description: The time at which the action is completed in ISO format.
          type: string
        recurrence:
          description: >-
            The recurrence of the date time, should only be set when
            `timeFormat` is set to `recurringDateTime`. The

            recurrence follows the [Recurrence
            Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)

            specification
          type: string
          format: recurrence
        duration:
          description: >-
            The duration of this action/event, should only be set when
            `timeFormat` is set to `duration`. The

            duration follows the [ISO
            8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)

            specification
          example: PT168H
          type: string
          format: duration
        constraint:
          description: >-
            The constraints this action abides to, such as start and end time
            windows.
          oneOf:
            - $ref: '#/components/schemas/break-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/break-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
      required:
        - entityType
    wait-constraint:
      example:
        id: 89a7bb4d-8720-4db9-aef7-4c3309186c3e
        name: Example combined constraint
        value:
          and:
            - startTime: '2021-06-23T10:00:00Z'
              endTime: '2021-06-23T13:00:00Z'
              description: alert-threshold
              type: timeWindowConstraint
            - constraintType: maximum
              maximum:
                value: 5
                unit: C
              type: temperatureConstraint
            - or:
                - fuelTypes:
                    - battery
                  type: fuelTypeConstraint
                - fuelTypes:
                    - biodiesel
                  type: fuelTypeConstraint
                - minimum: euro5
                  type: emissionStandardConstraint
              type: orConstraint
          type: andConstraint
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        value:
          $ref: '#/components/schemas/constraintValue'
        enforceability:
          description: >-
            The enforceability of the constraint. Indicates whether or not the
            constraint is a suggestion/preference or something that is mandatory
            to adhere to.
          default: enforced
          type: string
          enum:
            - enforced
            - preference
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
      required:
        - value
    wait-constraint-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/wait-constraint'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    wait-in-events:
      type: object
      properties:
        entityType:
          example: wait
          type: string
          enum:
            - wait
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        result:
          description: >-
            The result of the action, can only be present in the actual or
            realized lifecycles. The result has a

            required status and optional additional info, like a remark and
            reason (in the case of failure).
          type: object
          properties:
            status:
              description: >-
                The status of the result, either succeeded, failed, partially
                succeeded or cancelled.
              type: string
              enum:
                - succeeded
                - failed
                - partiallySucceeded
                - cancelled
            remark:
              description: >-
                The remark of the result, usually only interesting in case the
                result was failed or partially succeedded. Note that

                differs from the remark on an action, which is a remark that is
                relevant before the execution of the action. Whereas

                this remark is relevant for the result after execution.
              type: string
            reason:
              $ref: '#/components/schemas/action-result-reason'
          required:
            - status
        remark:
          description: Free text field for adding an on remark on this action.
          type: string
        sequenceNr:
          description: >-
            The sequence number of this action within the entity it is taking
            place. Can be used to indicate order when no times are present
          type: integer
          format: int64
        reason:
          description: >-
            Reason why the driver has to wait, for example because the dock is
            occupied.
          type: string
        location:
          description: The location at which this action is taking place.
          oneOf:
            - $ref: '#/components/schemas/action-location-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/action-location-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        trip:
          description: The trip this action takes place on.
          oneOf:
            - $ref: '#/components/schemas/trip-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/trip-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        timeFormat:
          default: dateTime
          type: string
          enum:
            - dateTime
            - recurringDateTime
            - duration
        startTime:
          description: The time at which the actions starts in ISO format.
          type: string
        endTime:
          description: The time at which the action is completed in ISO format.
          type: string
        recurrence:
          description: >-
            The recurrence of the date time, should only be set when
            `timeFormat` is set to `recurringDateTime`. The

            recurrence follows the [Recurrence
            Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)

            specification
          type: string
          format: recurrence
        duration:
          description: >-
            The duration of this action/event, should only be set when
            `timeFormat` is set to `duration`. The

            duration follows the [ISO
            8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)

            specification
          example: PT168H
          type: string
          format: duration
        constraint:
          description: >-
            The constraints this action abides to, such as start and end time
            windows.
          oneOf:
            - $ref: '#/components/schemas/wait-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/wait-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
      required:
        - entityType
    generic-action-constraint:
      example:
        id: 89a7bb4d-8720-4db9-aef7-4c3309186c3e
        name: Example combined constraint
        value:
          and:
            - startTime: '2021-06-23T10:00:00Z'
              endTime: '2021-06-23T13:00:00Z'
              description: alert-threshold
              type: timeWindowConstraint
            - constraintType: maximum
              maximum:
                value: 5
                unit: C
              type: temperatureConstraint
            - or:
                - fuelTypes:
                    - battery
                  type: fuelTypeConstraint
                - fuelTypes:
                    - biodiesel
                  type: fuelTypeConstraint
                - minimum: euro5
                  type: emissionStandardConstraint
              type: orConstraint
          type: andConstraint
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        value:
          $ref: '#/components/schemas/constraintValue'
        enforceability:
          description: >-
            The enforceability of the constraint. Indicates whether or not the
            constraint is a suggestion/preference or something that is mandatory
            to adhere to.
          default: enforced
          type: string
          enum:
            - enforced
            - preference
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
      required:
        - value
    generic-action-constraint-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/generic-action-constraint'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    move-association:
      example:
        id: a0e04457-a272-4160-91cc-4483aa5296c7
        name: Moving between the warehouse and the customer
        externalAttributes:
          timeDelay:
            value: 2
            unit: s
        from:
          entity:
            id: 11c11d75-e114-4b5f-9751-b3a4afa23ecf
            name: Main warehouse
            geoReference:
              lat: 5.4126792
              lon: 52.1956251
              type: latLonPointGeoReference
            type: warehouse
            administrativeReference:
              name: Supermarket warehouse
              street: Valutaboulevard
              houseNumber: '16'
              houseNumberAddition: C
              postalCode: 1825BT
              city: Amersfoort
              country: NL
            contactDetails:
              - value: '+312012345678'
                remark: private cellphone of the CEO
                language: nld
                type: phone
            remark: The cafe around the corner has the best coffee in town.
          associationType: inline
        to:
          entity:
            id: 9a3f26b2-8cf3-48db-b663-6c751c86d710
            geoReference:
              name: House of Alice
              street: North Lane
              houseNumber: '123'
              houseNumberAddition: B
              postalCode: 9999ZZ
              type: addressGeoReference
          associationType: inline
        distance:
          value: 120
          unit: km
        route:
          entity:
            id: beb9a25f-3f64-42ae-b1c6-e89cd450f66b
            name: An example route using coordinates to indicate how to drive.
            geoReference:
              geometry:
                coordinates:
                  - - 1
                    - 0
                  - - 5
                    - 0
                  - - 5
                    - 3
                  - - 13
                    - 3
                  - - 13
                    - 7
                type: LineString
              type: Feature
          associationType: inline
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        result:
          description: >-
            The result of the action, can only be present in the actual or
            realized lifecycles. The result has a

            required status and optional additional info, like a remark and
            reason (in the case of failure).
          type: object
          properties:
            status:
              description: >-
                The status of the result, either succeeded, failed, partially
                succeeded or cancelled.
              type: string
              enum:
                - succeeded
                - failed
                - partiallySucceeded
                - cancelled
            remark:
              description: >-
                The remark of the result, usually only interesting in case the
                result was failed or partially succeedded. Note that

                differs from the remark on an action, which is a remark that is
                relevant before the execution of the action. Whereas

                this remark is relevant for the result after execution.
              type: string
            reason:
              $ref: '#/components/schemas/action-result-reason'
          required:
            - status
        transportMode:
          description: >-
            Method of transport used for the carriage of goods on this move, can
            either be using a ship (maritime or

            inland waterway), a truck/car/van/bike/etc. (road), using the train
            (rail), or using a plane (air). These

            values are based on the

            [recommendation of
            UNECE](https://unece.org/fileadmin/DAM/cefact/recommendations/rec19/rec19_ecetrd138.pdf).
          type: string
          enum:
            - maritime
            - road
            - rail
            - air
            - inlandWaterway
        remark:
          description: Free text field for adding an on remark on this action.
          type: string
        sequenceNr:
          description: >-
            The sequence number of this action within the entity it is taking
            place. Can be used to indicate order when no times are present
          type: integer
          format: int64
        trip:
          description: >-
            The trip in which this Move takes place, only provided if the trip
            is not clear from the context.
          oneOf:
            - $ref: '#/components/schemas/trip-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/trip-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        from:
          description: The location from which the move action is started.
          oneOf:
            - $ref: '#/components/schemas/from-location-move-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/from-location-move-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        to:
          description: The location where the move action is ended.
          oneOf:
            - $ref: '#/components/schemas/to-location-move-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/to-location-move-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        timeFormat:
          default: dateTime
          type: string
          enum:
            - dateTime
            - recurringDateTime
            - duration
        startTime:
          description: The time at which the actions starts in ISO format.
          type: string
        endTime:
          description: The time at which the action is completed in ISO format.
          type: string
        recurrence:
          description: >-
            The recurrence of the date time, should only be set when
            `timeFormat` is set to `recurringDateTime`. The

            recurrence follows the [Recurrence
            Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)

            specification
          type: string
          format: recurrence
        duration:
          description: >-
            The duration of this action/event, should only be set when
            `timeFormat` is set to `duration`. The

            duration follows the [ISO
            8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)

            specification
          example: PT168H
          type: string
          format: duration
        distance:
          description: >-
            The distance between `from` and `to` locations of this move action.
            The difference between calculated and actually driven distance can
            be specified using multiple move actions with a different lifecycle
            (e.g. 'projected' vs 'actual')
          $ref: '#/components/schemas/value-with-unit'
        route:
          description: The route from location A to location B that is travelled.
          oneOf:
            - $ref: '#/components/schemas/route-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/route-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        constraint:
          description: >-
            Constraints which this move action abides to, such as vehicle type
            or time window constraints.
          oneOf:
            - $ref: '#/components/schemas/move-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/move-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
    move-association-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/move-association'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    generic-in-events:
      example:
        id: 64d42a96-2ac3-4ae5-bce2-726536f1616d
        lifecycle: planned
        description: Adding fuel to the truck
        startTime: '2021-06-23T16:00:00Z'
        endTime: '2021-06-23T16:05:00Z'
      type: object
      properties:
        entityType:
          example: genericAction
          type: string
          enum:
            - genericAction
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        result:
          description: >-
            The result of the action, can only be present in the actual or
            realized lifecycles. The result has a

            required status and optional additional info, like a remark and
            reason (in the case of failure).
          type: object
          properties:
            status:
              description: >-
                The status of the result, either succeeded, failed, partially
                succeeded or cancelled.
              type: string
              enum:
                - succeeded
                - failed
                - partiallySucceeded
                - cancelled
            remark:
              description: >-
                The remark of the result, usually only interesting in case the
                result was failed or partially succeedded. Note that

                differs from the remark on an action, which is a remark that is
                relevant before the execution of the action. Whereas

                this remark is relevant for the result after execution.
              type: string
            reason:
              $ref: '#/components/schemas/action-result-reason'
          required:
            - status
        remark:
          description: Free text field for adding an on remark on this action.
          type: string
        sequenceNr:
          description: >-
            The sequence number of this action within the entity it is taking
            place. Can be used to indicate order when no times are present
          type: integer
          format: int64
        description:
          type: string
        trip:
          description: >-
            The trip in which this action takes place, only provided if the trip
            is not clear from the context.
          oneOf:
            - $ref: '#/components/schemas/trip-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/trip-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        timeFormat:
          default: dateTime
          type: string
          enum:
            - dateTime
            - recurringDateTime
            - duration
        startTime:
          description: The time at which the actions starts in ISO format.
          type: string
        endTime:
          description: The time at which the action is completed in ISO format.
          type: string
        recurrence:
          description: >-
            The recurrence of the date time, should only be set when
            `timeFormat` is set to `recurringDateTime`. The

            recurrence follows the [Recurrence
            Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)

            specification
          type: string
          format: recurrence
        duration:
          description: >-
            The duration of this action/event, should only be set when
            `timeFormat` is set to `duration`. The

            duration follows the [ISO
            8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)

            specification
          example: PT168H
          type: string
          format: duration
        constraint:
          description: >-
            The constraints this action abides to, such as start and end time
            windows.
          oneOf:
            - $ref: '#/components/schemas/generic-action-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/generic-action-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        move:
          description: >-
            The trip in which this Move takes place, only provided if the trip
            is not clear from the context.
          oneOf:
            - $ref: '#/components/schemas/move-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/move-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
      required:
        - entityType
        - description
    entity:
      oneOf:
        - $ref: '#/components/schemas/trip'
        - $ref: '#/components/schemas/sensor'
        - $ref: '#/components/schemas/route'
        - $ref: '#/components/schemas/location'
        - $ref: '#/components/schemas/actor'
        - $ref: '#/components/schemas/constraint'
        - $ref: '#/components/schemas/transportOrder'
        - $ref: '#/components/schemas/goods'
        - $ref: '#/components/schemas/consignment'
        - $ref: '#/components/schemas/vehicle'
        - $ref: '#/components/schemas/document'
        - $ref: '#/components/schemas/load-in-events'
        - $ref: '#/components/schemas/unload-in-events'
        - $ref: '#/components/schemas/stop-in-events'
        - $ref: '#/components/schemas/move-in-events'
        - $ref: '#/components/schemas/handover-in-events'
        - $ref: '#/components/schemas/attach-in-events'
        - $ref: '#/components/schemas/detach-in-events'
        - $ref: '#/components/schemas/refuel-in-events'
        - $ref: '#/components/schemas/break-in-events'
        - $ref: '#/components/schemas/wait-in-events'
        - $ref: '#/components/schemas/generic-in-events'
      discriminator:
        propertyName: entityType
        mapping:
          trip: '#/components/schemas/trip'
          sensor: '#/components/schemas/sensor'
          route: '#/components/schemas/route'
          location: '#/components/schemas/location'
          actor: '#/components/schemas/actor'
          constraint: '#/components/schemas/constraint'
          transportOrder: '#/components/schemas/transportOrder'
          goods: '#/components/schemas/goods'
          consignment: '#/components/schemas/consignment'
          vehicle: '#/components/schemas/vehicle'
          document: '#/components/schemas/document'
          load: '#/components/schemas/load-in-events'
          unload: '#/components/schemas/unload-in-events'
          stop: '#/components/schemas/stop-in-events'
          move: '#/components/schemas/move-in-events'
          handOver: '#/components/schemas/handover-in-events'
          attachTransportEquipment: '#/components/schemas/attach-in-events'
          detachTransportEquipment: '#/components/schemas/detach-in-events'
          refuel: '#/components/schemas/refuel-in-events'
          break: '#/components/schemas/break-in-events'
          wait: '#/components/schemas/wait-in-events'
          genericAction: '#/components/schemas/generic-in-events'
    entity1-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/entity'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    entity1:
      oneOf:
        - $ref: '#/components/schemas/entity1-inline'
        - $ref: '#/components/schemas/reference'
        - $ref: '#/components/schemas/attributeRestriction'
      discriminator:
        propertyName: associationType
        mapping:
          inline: '#/components/schemas/entity1-inline'
          reference: '#/components/schemas/reference'
          attributeRestriction: '#/components/schemas/attributeRestriction'
    entity2-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/entity'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    entity2:
      oneOf:
        - $ref: '#/components/schemas/entity2-inline'
        - $ref: '#/components/schemas/reference'
        - $ref: '#/components/schemas/attributeRestriction'
      discriminator:
        propertyName: associationType
        mapping:
          inline: '#/components/schemas/entity2-inline'
          reference: '#/components/schemas/reference'
          attributeRestriction: '#/components/schemas/attributeRestriction'
    associationCreatedEvent:
      example:
        id: fc6b2b0c-2f0a-40c6-a580-212c5c7984c8
        name: couple vehicle to trip
        lifecycle: planned
        entity1:
          uuid: 50824123-0924-4563-ac1e-ca0e37487823
          entityType: trip
          associationType: reference
        entity2:
          entity:
            id: b9bb914d-845e-46f2-91ff-31fa4bac2fbe
            name: Bob's Boxtruck
            vehicleType: boxtruck
            fuel: electricity
            loadCapacities:
              - value: 1000
                unit: kg
            length:
              value: 8
              unit: m
            height:
              value: 2.8
              unit: m
            width:
              value: 2
              unit: m
            licensePlate: AB-12-CD
            emptyWeight:
              value: 2000
              unit: kg
            entityType: vehicle
          associationType: inline
        eventType: associationCreatedEvent
      type: object
      properties:
        eventType:
          example: associationCreatedEvent
          type: string
          enum:
            - associationCreatedEvent
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        entity1:
          description: >-
            One of the two entities between which an association is created.
            Note that the order of the entities is unimportant, an association
            created works both ways.
          allOf:
            - $ref: '#/components/schemas/entity1'
        entity2:
          description: >-
            One of the two entities between which an association is created.
            Note that the order of the entities is unimportant, an association
            created works both ways.
          allOf:
            - $ref: '#/components/schemas/entity2'
        actors:
          description: >-
            The actors that are relevant to this event, such as the carrier or
            shipper it belongs to.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-actors-inline'
              - $ref: '#/components/schemas/reference-roles'
              - $ref: '#/components/schemas/attributeRestriction-roles'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-actors-inline'
                reference: '#/components/schemas/reference-roles'
                attributeRestriction: '#/components/schemas/attributeRestriction-roles'
      required:
        - eventType
        - entity1
        - entity2
    associationRemovedEvent:
      example:
        id: fc6b2b0c-2f0a-40c6-a580-212c5c7984c8
        name: remove previous coupled vehicle from trip
        lifecycle: planned
        entity1:
          uuid: 50824123-0924-4563-ac1e-ca0e37487823
          entityType: trip
          associationType: reference
        entity2:
          entity:
            id: b9bb914d-845e-46f2-91ff-31fa4bac2fbe
            name: Bob's Boxtruck
            vehicleType: boxtruck
            fuel: electricity
            loadCapacities:
              - value: 1000
                unit: kg
            length:
              value: 8
              unit: m
            height:
              value: 2.8
              unit: m
            width:
              value: 2
              unit: m
            licensePlate: AB-12-CD
            emptyWeight:
              value: 2000
              unit: kg
            entityType: vehicle
          associationType: inline
        eventType: associationRemovedEvent
      type: object
      properties:
        eventType:
          example: associationRemovedEvent
          type: string
          enum:
            - associationRemovedEvent
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        entity1:
          description: >-
            One of the two entities between which an association is removed.
            Note that the order of the entities is unimportant, an association
            removed works both ways.
          allOf:
            - $ref: '#/components/schemas/entity1'
        entity2:
          description: >-
            One of the two entities between which an association is created.
            Note that the order of the entities is unimportant, an association
            created works both ways.
          allOf:
            - $ref: '#/components/schemas/entity2'
        actors:
          description: >-
            The actors that are relevant to this event, such as the carrier or
            shipper it belongs to.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-actors-inline'
              - $ref: '#/components/schemas/reference-roles'
              - $ref: '#/components/schemas/attributeRestriction-roles'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-actors-inline'
                reference: '#/components/schemas/reference-roles'
                attributeRestriction: '#/components/schemas/attributeRestriction-roles'
      required:
        - eventType
        - entity1
        - entity2
    updateEvent:
      type: object
      properties:
        eventType:
          example: updateEvent
          type: string
          enum:
            - updateEvent
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        entity:
          description: >-
            The _fields_ of the entity that need to be updated. All fields that
            are not present remain **unchanged**. If you want to unset a field
            explicitly use null
          allOf:
            - $ref: '#/components/schemas/entity'
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        actors:
          description: >-
            The actors that are relevant to this event, such as the carrier or
            shipper it belongs to.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-actors-inline'
              - $ref: '#/components/schemas/reference-roles'
              - $ref: '#/components/schemas/attributeRestriction-roles'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-actors-inline'
                reference: '#/components/schemas/reference-roles'
                attributeRestriction: '#/components/schemas/attributeRestriction-roles'
      required:
        - eventType
        - entity
    locationUpdateEvent:
      example:
        id: ad324860-ee07-488a-8908-9794326c6e29
        creationDate: '2023-02-09T13:33:22Z'
        lifecycle: actual
        vehicle:
          entity:
            licensePlate: AA-11-BB
          associationType: inline
        geoReference:
          lat: 52.1938879
          lon: 5.4066468
          speed:
            value: 50
            unit: km/h
          heading:
            value: 20
            unit: degrees
          type: latLonPointGeoReference
        actors:
          - entity:
              name: some-shipper
            roles:
              - shipper
            associationType: inline
          - entity:
              name: and-a-carrier
            roles:
              - carrier
            associationType: inline
        eventType: locationUpdateEvent
      type: object
      properties:
        eventType:
          example: locationUpdateEvent
          type: string
          enum:
            - locationUpdateEvent
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        vehicle:
          description: The vehicle that is relevant for this event
          oneOf:
            - $ref: '#/components/schemas/vehicle-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/vehicle-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        geoReference:
          description: >-
            The location that is registered at the specified time, often using a
            single latitude/longitude combination.
          oneOf:
            - $ref: '#/components/schemas/latLonPointGeoReference'
            - $ref: '#/components/schemas/latLonArrayGeoReference'
            - $ref: '#/components/schemas/Feature'
            - $ref: '#/components/schemas/openLRGeoReference'
            - $ref: '#/components/schemas/tmcLocationGeoReference'
            - $ref: '#/components/schemas/tmcArrayGeoReference'
            - $ref: '#/components/schemas/addressGeoReference'
          discriminator:
            propertyName: type
            mapping:
              latLonPointGeoReference: '#/components/schemas/latLonPointGeoReference'
              latLonArrayGeoReference: '#/components/schemas/latLonArrayGeoReference'
              Feature: '#/components/schemas/Feature'
              openLRGeoReference: '#/components/schemas/openLRGeoReference'
              tmcLocationGeoReference: '#/components/schemas/tmcLocationGeoReference'
              tmcArrayGeoReference: '#/components/schemas/tmcArrayGeoReference'
              addressGeoReference: '#/components/schemas/addressGeoReference'
        actors:
          description: >-
            The actors that are relevant to this event, such as the carrier or
            shipper it belongs to.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-actors-inline'
              - $ref: '#/components/schemas/reference-roles'
              - $ref: '#/components/schemas/attributeRestriction-roles'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-actors-inline'
                reference: '#/components/schemas/reference-roles'
                attributeRestriction: '#/components/schemas/attributeRestriction-roles'
      required:
        - eventType
        - geoReference
    startMovingEvent:
      example:
        id: 706d7796-269e-46d4-b292-a8eea0b360c5
        lifecycle: actual
        vehicle:
          entity:
            id: b9bb914d-845e-46f2-91ff-31fa4bac2fbe
            name: Bob's Boxtruck
            vehicleType: boxtruck
            fuel: electricity
            loadCapacities:
              - value: 1000
                unit: kg
            length:
              value: 8
              unit: m
            height:
              value: 2.8
              unit: m
            width:
              value: 2
              unit: m
            licensePlate: AB-12-CD
            emptyWeight:
              value: 2000
              unit: kg
          associationType: inline
        geoReference:
          lat: 52.0905356
          lon: 5.1124527
          type: latLonPointGeoReference
        eventType: startMovingEvent
      type: object
      properties:
        eventType:
          example: startMovingEvent
          type: string
          enum:
            - startMovingEvent
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        vehicle:
          description: The vehicle that is relevant for this event
          oneOf:
            - $ref: '#/components/schemas/vehicle-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/vehicle-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        geoReference:
          description: >-
            The location that is registered at the specified time, often using a
            single latitude/longitude combination.
          oneOf:
            - $ref: '#/components/schemas/latLonPointGeoReference'
            - $ref: '#/components/schemas/latLonArrayGeoReference'
            - $ref: '#/components/schemas/Feature'
            - $ref: '#/components/schemas/openLRGeoReference'
            - $ref: '#/components/schemas/tmcLocationGeoReference'
            - $ref: '#/components/schemas/tmcArrayGeoReference'
            - $ref: '#/components/schemas/addressGeoReference'
          discriminator:
            propertyName: type
            mapping:
              latLonPointGeoReference: '#/components/schemas/latLonPointGeoReference'
              latLonArrayGeoReference: '#/components/schemas/latLonArrayGeoReference'
              Feature: '#/components/schemas/Feature'
              openLRGeoReference: '#/components/schemas/openLRGeoReference'
              tmcLocationGeoReference: '#/components/schemas/tmcLocationGeoReference'
              tmcArrayGeoReference: '#/components/schemas/tmcArrayGeoReference'
              addressGeoReference: '#/components/schemas/addressGeoReference'
        actors:
          description: >-
            The actors that are relevant to this event, such as the carrier or
            shipper it belongs to.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-actors-inline'
              - $ref: '#/components/schemas/reference-roles'
              - $ref: '#/components/schemas/attributeRestriction-roles'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-actors-inline'
                reference: '#/components/schemas/reference-roles'
                attributeRestriction: '#/components/schemas/attributeRestriction-roles'
      required:
        - eventType
        - geoReference
    stopMovingEvent:
      example:
        id: 706d7796-269e-46d4-b292-a8eea0b360c5
        lifecycle: actual
        vehicle:
          entity:
            id: b9bb914d-845e-46f2-91ff-31fa4bac2fbe
            name: Bob's Boxtruck
            vehicleType: boxtruck
            fuel: electricity
            loadCapacities:
              - value: 1000
                unit: kg
            length:
              value: 8
              unit: m
            height:
              value: 2.8
              unit: m
            width:
              value: 2
              unit: m
            licensePlate: AB-12-CD
            emptyWeight:
              value: 2000
              unit: kg
          associationType: inline
        geoReference:
          lat: 52.0905356
          lon: 5.1124527
          type: latLonPointGeoReference
        eventType: stopMovingEvent
      type: object
      properties:
        eventType:
          example: stopMovingEvent
          type: string
          enum:
            - stopMovingEvent
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        vehicle:
          description: The vehicle that is relevant for this event
          oneOf:
            - $ref: '#/components/schemas/vehicle-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/vehicle-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        geoReference:
          description: >-
            The location that is registered at the specified time, often using a
            single latitude/longitude combination.
          oneOf:
            - $ref: '#/components/schemas/latLonPointGeoReference'
            - $ref: '#/components/schemas/latLonArrayGeoReference'
            - $ref: '#/components/schemas/Feature'
            - $ref: '#/components/schemas/openLRGeoReference'
            - $ref: '#/components/schemas/tmcLocationGeoReference'
            - $ref: '#/components/schemas/tmcArrayGeoReference'
            - $ref: '#/components/schemas/addressGeoReference'
          discriminator:
            propertyName: type
            mapping:
              latLonPointGeoReference: '#/components/schemas/latLonPointGeoReference'
              latLonArrayGeoReference: '#/components/schemas/latLonArrayGeoReference'
              Feature: '#/components/schemas/Feature'
              openLRGeoReference: '#/components/schemas/openLRGeoReference'
              tmcLocationGeoReference: '#/components/schemas/tmcLocationGeoReference'
              tmcArrayGeoReference: '#/components/schemas/tmcArrayGeoReference'
              addressGeoReference: '#/components/schemas/addressGeoReference'
        actors:
          description: >-
            The actors that are relevant to this event, such as the carrier or
            shipper it belongs to.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-actors-inline'
              - $ref: '#/components/schemas/reference-roles'
              - $ref: '#/components/schemas/attributeRestriction-roles'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-actors-inline'
                reference: '#/components/schemas/reference-roles'
                attributeRestriction: '#/components/schemas/attributeRestriction-roles'
      required:
        - eventType
        - geoReference
    startWaitingEvent:
      example:
        id: 706d7796-269e-46d4-b292-a8eea0b360c5
        lifecycle: actual
        vehicle:
          entity:
            id: b9bb914d-845e-46f2-91ff-31fa4bac2fbe
            name: Bob's Boxtruck
            vehicleType: boxtruck
            fuel: electricity
            loadCapacities:
              - value: 1000
                unit: kg
            length:
              value: 8
              unit: m
            height:
              value: 2.8
              unit: m
            width:
              value: 2
              unit: m
            licensePlate: AB-12-CD
            emptyWeight:
              value: 2000
              unit: kg
          associationType: inline
        geoReference:
          lat: 52.0905356
          lon: 5.1124527
          type: latLonPointGeoReference
        eventType: startWaitingEvent
      type: object
      properties:
        eventType:
          example: startWaitingEvent
          type: string
          enum:
            - startWaitingEvent
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        vehicle:
          description: The vehicle that is relevant for this event
          oneOf:
            - $ref: '#/components/schemas/vehicle-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/vehicle-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        geoReference:
          description: >-
            The location that is registered at the specified time, often using a
            single latitude/longitude combination.
          oneOf:
            - $ref: '#/components/schemas/latLonPointGeoReference'
            - $ref: '#/components/schemas/latLonArrayGeoReference'
            - $ref: '#/components/schemas/Feature'
            - $ref: '#/components/schemas/openLRGeoReference'
            - $ref: '#/components/schemas/tmcLocationGeoReference'
            - $ref: '#/components/schemas/tmcArrayGeoReference'
            - $ref: '#/components/schemas/addressGeoReference'
          discriminator:
            propertyName: type
            mapping:
              latLonPointGeoReference: '#/components/schemas/latLonPointGeoReference'
              latLonArrayGeoReference: '#/components/schemas/latLonArrayGeoReference'
              Feature: '#/components/schemas/Feature'
              openLRGeoReference: '#/components/schemas/openLRGeoReference'
              tmcLocationGeoReference: '#/components/schemas/tmcLocationGeoReference'
              tmcArrayGeoReference: '#/components/schemas/tmcArrayGeoReference'
              addressGeoReference: '#/components/schemas/addressGeoReference'
        actors:
          description: >-
            The actors that are relevant to this event, such as the carrier or
            shipper it belongs to.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-actors-inline'
              - $ref: '#/components/schemas/reference-roles'
              - $ref: '#/components/schemas/attributeRestriction-roles'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-actors-inline'
                reference: '#/components/schemas/reference-roles'
                attributeRestriction: '#/components/schemas/attributeRestriction-roles'
      required:
        - eventType
        - geoReference
    startEngineEvent:
      example:
        id: 706d7796-269e-46d4-b292-a8eea0b360c5
        lifecycle: actual
        vehicle:
          entity:
            id: b9bb914d-845e-46f2-91ff-31fa4bac2fbe
            name: Bob's Boxtruck
            vehicleType: boxtruck
            fuel: electricity
            loadCapacities:
              - value: 1000
                unit: kg
            length:
              value: 8
              unit: m
            height:
              value: 2.8
              unit: m
            width:
              value: 2
              unit: m
            licensePlate: AB-12-CD
            emptyWeight:
              value: 2000
              unit: kg
          associationType: inline
        geoReference:
          lat: 52.0905356
          lon: 5.1124527
          type: latLonPointGeoReference
        eventType: startEngineEvent
      type: object
      properties:
        eventType:
          example: startEngineEvent
          type: string
          enum:
            - startEngineEvent
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        vehicle:
          description: The vehicle that is relevant for this event
          oneOf:
            - $ref: '#/components/schemas/vehicle-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/vehicle-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        geoReference:
          description: >-
            The location that is registered at the specified time, often using a
            single latitude/longitude combination.
          oneOf:
            - $ref: '#/components/schemas/latLonPointGeoReference'
            - $ref: '#/components/schemas/latLonArrayGeoReference'
            - $ref: '#/components/schemas/Feature'
            - $ref: '#/components/schemas/openLRGeoReference'
            - $ref: '#/components/schemas/tmcLocationGeoReference'
            - $ref: '#/components/schemas/tmcArrayGeoReference'
            - $ref: '#/components/schemas/addressGeoReference'
          discriminator:
            propertyName: type
            mapping:
              latLonPointGeoReference: '#/components/schemas/latLonPointGeoReference'
              latLonArrayGeoReference: '#/components/schemas/latLonArrayGeoReference'
              Feature: '#/components/schemas/Feature'
              openLRGeoReference: '#/components/schemas/openLRGeoReference'
              tmcLocationGeoReference: '#/components/schemas/tmcLocationGeoReference'
              tmcArrayGeoReference: '#/components/schemas/tmcArrayGeoReference'
              addressGeoReference: '#/components/schemas/addressGeoReference'
        actors:
          description: >-
            The actors that are relevant to this event, such as the carrier or
            shipper it belongs to.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-actors-inline'
              - $ref: '#/components/schemas/reference-roles'
              - $ref: '#/components/schemas/attributeRestriction-roles'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-actors-inline'
                reference: '#/components/schemas/reference-roles'
                attributeRestriction: '#/components/schemas/attributeRestriction-roles'
      required:
        - eventType
        - geoReference
    stopEngineEvent:
      example:
        id: 706d7796-269e-46d4-b292-a8eea0b360c5
        lifecycle: actual
        vehicle:
          entity:
            id: b9bb914d-845e-46f2-91ff-31fa4bac2fbe
            name: Bob's Boxtruck
            vehicleType: boxtruck
            fuel: electricity
            loadCapacities:
              - value: 1000
                unit: kg
            length:
              value: 8
              unit: m
            height:
              value: 2.8
              unit: m
            width:
              value: 2
              unit: m
            licensePlate: AB-12-CD
            emptyWeight:
              value: 2000
              unit: kg
          associationType: inline
        geoReference:
          lat: 52.0905356
          lon: 5.1124527
          type: latLonPointGeoReference
        eventType: stopEngineEvent
      type: object
      properties:
        eventType:
          example: stopEngineEvent
          type: string
          enum:
            - stopEngineEvent
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        vehicle:
          description: The vehicle that is relevant for this event
          oneOf:
            - $ref: '#/components/schemas/vehicle-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/vehicle-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        geoReference:
          description: >-
            The location that is registered at the specified time, often using a
            single latitude/longitude combination.
          oneOf:
            - $ref: '#/components/schemas/latLonPointGeoReference'
            - $ref: '#/components/schemas/latLonArrayGeoReference'
            - $ref: '#/components/schemas/Feature'
            - $ref: '#/components/schemas/openLRGeoReference'
            - $ref: '#/components/schemas/tmcLocationGeoReference'
            - $ref: '#/components/schemas/tmcArrayGeoReference'
            - $ref: '#/components/schemas/addressGeoReference'
          discriminator:
            propertyName: type
            mapping:
              latLonPointGeoReference: '#/components/schemas/latLonPointGeoReference'
              latLonArrayGeoReference: '#/components/schemas/latLonArrayGeoReference'
              Feature: '#/components/schemas/Feature'
              openLRGeoReference: '#/components/schemas/openLRGeoReference'
              tmcLocationGeoReference: '#/components/schemas/tmcLocationGeoReference'
              tmcArrayGeoReference: '#/components/schemas/tmcArrayGeoReference'
              addressGeoReference: '#/components/schemas/addressGeoReference'
        actors:
          description: >-
            The actors that are relevant to this event, such as the carrier or
            shipper it belongs to.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-actors-inline'
              - $ref: '#/components/schemas/reference-roles'
              - $ref: '#/components/schemas/attributeRestriction-roles'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-actors-inline'
                reference: '#/components/schemas/reference-roles'
                attributeRestriction: '#/components/schemas/attributeRestriction-roles'
      required:
        - eventType
        - geoReference
    sensor-association:
      example:
        id: 6666f00c-1332-472c-aff9-bc11b3d53296
        name: Temperature sensor in trailer x
        placement: Compartment 1
        sensorType: accelerometer
        actors:
          - entity:
              id: 45db6ed0-28a7-4e4a-baba-3d5f8d171103
              name: Logistics manager
              contactDetails:
                - value: Simon Isaac
                  remark: Wants to be called 'Sim'.
                  type: firstName
                - value: Macan
                  type: lastName
                - value: '+312012345678'
                  remark: private cellphone of the CEO
                  language: nld
                  type: phone
                - value: simon@macan
                  type: email
                - value: NL74BANK5890469479
                  type: iban
                - value: NL000099998B57
                  type: vatCode
            associationType: inline
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        placement:
          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.
          type: string
        sensorType:
          description: The type of sensor.
          type: string
        actors:
          description: >-
            The actors associated with this sensor, for instance the owners, the
            producers or the users of this sensor.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-actors-inline'
              - $ref: '#/components/schemas/reference-roles'
              - $ref: '#/components/schemas/attributeRestriction-roles'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-actors-inline'
                reference: '#/components/schemas/reference-roles'
                attributeRestriction: '#/components/schemas/attributeRestriction-roles'
        constraint:
          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`.
          oneOf:
            - $ref: '#/components/schemas/sensor-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/sensor-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
    sensor-association-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/sensor-association'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    sensorUpdateEvent:
      example:
        name: temperature sensor
        creationDate: '2021-06-23T10:00:00Z'
        lifecycle: actual
        sensor:
          uuid: 9d2f8c40-ced5-4d48-89a2-6377b0362d2a
          entityType: sensor
          associationType: reference
        value:
          value: -20
          unit: °C
        eventType: sensorUpdateEvent
      type: object
      properties:
        eventType:
          example: sensorUpdateEvent
          type: string
          enum:
            - sensorUpdateEvent
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        sensor:
          description: The value that is measured by the sensor at the specified time.
          oneOf:
            - $ref: '#/components/schemas/sensor-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/sensor-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        value:
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        actors:
          description: >-
            The actors that are relevant to this event, such as the carrier or
            shipper it belongs to.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-actors-inline'
              - $ref: '#/components/schemas/reference-roles'
              - $ref: '#/components/schemas/attributeRestriction-roles'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-actors-inline'
                reference: '#/components/schemas/reference-roles'
                attributeRestriction: '#/components/schemas/attributeRestriction-roles'
      required:
        - eventType
        - value
    fuelConsumedEvent:
      type: object
      properties:
        eventType:
          example: fuelConsumedEvent
          type: string
          enum:
            - fuelConsumedEvent
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        vehicle:
          description: The vehicle that is relevant for this event
          oneOf:
            - $ref: '#/components/schemas/vehicle-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/vehicle-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        trip:
          description: The trip that is relevant for this event
          oneOf:
            - $ref: '#/components/schemas/trip-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/trip-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        consignment:
          description: The consignment that is relevant for this event
          oneOf:
            - $ref: '#/components/schemas/consignment-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/consignment-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        fuel:
          description: The type of fuel consumed in this event.
          type: string
        amount:
          description: The amount of fuel consumed in this event.
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        actors:
          description: >-
            The actors that are relevant to this event, such as the carrier or
            shipper it belongs to.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-actors-inline'
              - $ref: '#/components/schemas/reference-roles'
              - $ref: '#/components/schemas/attributeRestriction-roles'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-actors-inline'
                reference: '#/components/schemas/reference-roles'
                attributeRestriction: '#/components/schemas/attributeRestriction-roles'
      required:
        - eventType
        - amount
    emissionEvent:
      type: object
      properties:
        eventType:
          example: emissionEvent
          type: string
          enum:
            - emissionEvent
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        vehicle:
          description: The vehicle that is relevant for this event
          oneOf:
            - $ref: '#/components/schemas/vehicle-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/vehicle-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        trip:
          description: The trip that is relevant for this event
          oneOf:
            - $ref: '#/components/schemas/trip-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/trip-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        consignment:
          description: The consignment that is relevant for this event
          oneOf:
            - $ref: '#/components/schemas/consignment-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/consignment-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        method:
          description: >-
            The method used to determine the amount of emissions. Especially
            useful in the projected/planned lifecycle where an estimation is
            made.
          type: string
        amount:
          description: The amount of emitted pollutants in this event.
          type: object
          properties:
            value:
              description: Value in the given unit.
              type: number
              format: double
            unit:
              description: >-
                Measurement unit of this value. OTM5 currently does not enforce
                any units of measure. So you are free to use

                any unit necessary. However to ensure parties use OTM5
                consistently there are a few rules:

                * For **currencies** use the [ISO_4217
                standard](https://en.wikipedia.org/wiki/ISO_4217)

                * For **mass**, **volume** and **length** the [SI system
                (International System of
                Units)](https://en.wikipedia.org/wiki/International_System_of_Units)
                is
                  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the
                  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.
                * For degrees the recommend approach is Celsius, but Fahrenheit
                and Kelvin are also supported. To again avoid
                  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains
                  (C, F, or K).
                * For velocity use the metric system. The required format would
                then be \<length\>/\<time unit\> for the metric
                  system, such as km/h (kilometer per hour) or m/s (meter per second).

                Since usage is not enforced you can deviate from these rules,
                though only do so if strictly necessary. The

                benefit from using a standard comes from consistent use, so
                deviating from the recommendations diminishes your

                benefit.


                If the type of unit you need is not supported please create a

                [change
                request](https://github.com/opentripmodel/otm5-change-requests)
              type: string
          required:
            - value
            - unit
        actors:
          description: >-
            The actors that are relevant to this event, such as the carrier or
            shipper it belongs to.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/associated-actors-inline'
              - $ref: '#/components/schemas/reference-roles'
              - $ref: '#/components/schemas/attributeRestriction-roles'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/associated-actors-inline'
                reference: '#/components/schemas/reference-roles'
                attributeRestriction: '#/components/schemas/attributeRestriction-roles'
      required:
        - eventType
        - amount
    invalidJson:
      type: object
      properties:
        type:
          example: invalidJson
          type: string
          enum:
            - invalidJson
        message:
          type: string
      required:
        - type
        - message
    invalidField:
      type: object
      properties:
        type:
          example: invalidField
          type: string
          enum:
            - invalidField
        field:
          type: string
        message:
          type: string
      required:
        - type
        - field
        - message
    missingField:
      type: object
      properties:
        type:
          example: missingField
          type: string
          enum:
            - missingField
        field:
          type: string
        message:
          type: string
      required:
        - type
        - field
        - message
    clientError:
      type: array
      items:
        oneOf:
          - $ref: '#/components/schemas/invalidJson'
          - $ref: '#/components/schemas/invalidField'
          - $ref: '#/components/schemas/missingField'
        discriminator:
          propertyName: type
          mapping:
            invalidJson: '#/components/schemas/invalidJson'
            invalidField: '#/components/schemas/invalidField'
            missingField: '#/components/schemas/missingField'
    serverError:
      type: string
    load-stop:
      example:
        id: e0475c15-6d20-4085-a95e-427652585e5e
        remark: start stop at the warehouse
        location:
          uuid: 11c11d75-e114-4b5f-9751-b3a4afa23ecf
          entityType: location
          associationType: reference
        startTime: '2021-06-23T13:45:00Z'
        endTime: '2021-06-23T14:30:00Z'
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        result:
          description: >-
            The result of the action, can only be present in the actual or
            realized lifecycles. The result has a

            required status and optional additional info, like a remark and
            reason (in the case of failure).
          type: object
          properties:
            status:
              description: >-
                The status of the result, either succeeded, failed, partially
                succeeded or cancelled.
              type: string
              enum:
                - succeeded
                - failed
                - partiallySucceeded
                - cancelled
            remark:
              description: >-
                The remark of the result, usually only interesting in case the
                result was failed or partially succeedded. Note that

                differs from the remark on an action, which is a remark that is
                relevant before the execution of the action. Whereas

                this remark is relevant for the result after execution.
              type: string
            reason:
              $ref: '#/components/schemas/action-result-reason'
          required:
            - status
        remark:
          description: Free text field for adding an on remark on this action.
          type: string
        sequenceNr:
          description: >-
            The sequence number of this action within the entity it is taking
            place. Can be used to indicate order when no times are present
          type: integer
          format: int64
        trip:
          description: >-
            The trip that this stop belongs too, usually is only provided if the
            trip is not clear from the context.
          oneOf:
            - $ref: '#/components/schemas/trip-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/trip-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        location:
          description: The location of this stop.
          oneOf:
            - $ref: '#/components/schemas/stop-location-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/stop-location-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        timeFormat:
          default: dateTime
          type: string
          enum:
            - dateTime
            - recurringDateTime
            - duration
        startTime:
          description: The time at which the actions starts in ISO format.
          type: string
        endTime:
          description: The time at which the action is completed in ISO format.
          type: string
        recurrence:
          description: >-
            The recurrence of the date time, should only be set when
            `timeFormat` is set to `recurringDateTime`. The

            recurrence follows the [Recurrence
            Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)

            specification
          type: string
          format: recurrence
        duration:
          description: >-
            The duration of this action/event, should only be set when
            `timeFormat` is set to `duration`. The

            duration follows the [ISO
            8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)

            specification
          example: PT168H
          type: string
          format: duration
        constraint:
          description: >-
            The constraints this stop abides to, such as start and end time
            windows.
          oneOf:
            - $ref: '#/components/schemas/stop-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/stop-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
    load-stop-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/load-stop'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    load:
      example:
        id: e81a7aa3-23a6-4089-b916-52b854c7b6f1
        lifecycle: planned
        remark: loading a consignment
        consignment:
          uuid: 047cfa4d-fd8b-47ba-b8e9-87067294d2fa
          entityType: consignment
          associationType: reference
        startTime: '2021-06-23T14:00:00Z'
        endTime: '2021-06-23T14:15:00Z'
        constraint:
          entity:
            id: 89a7bb4d-8720-4db9-aef7-4c3309186c3e
            name: Example combined constraint
            value:
              and:
                - startTime: '2021-06-23T10:00:00Z'
                  endTime: '2021-06-23T13:00:00Z'
                  description: alert-threshold
                  type: timeWindowConstraint
                - constraintType: maximum
                  maximum:
                    value: 5
                    unit: C
                  type: temperatureConstraint
                - or:
                    - fuelTypes:
                        - battery
                      type: fuelTypeConstraint
                    - fuelTypes:
                        - biodiesel
                      type: fuelTypeConstraint
                    - minimum: euro5
                      type: emissionStandardConstraint
                  type: orConstraint
              type: andConstraint
          associationType: inline
        actionType: load
      type: object
      properties:
        actionType:
          example: load
          type: string
          enum:
            - load
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        result:
          description: >-
            The result of the action, can only be present in the actual or
            realized lifecycles. The result has a

            required status and optional additional info, like a remark and
            reason (in the case of failure).
          type: object
          properties:
            status:
              description: >-
                The status of the result, either succeeded, failed, partially
                succeeded or cancelled.
              type: string
              enum:
                - succeeded
                - failed
                - partiallySucceeded
                - cancelled
            remark:
              description: >-
                The remark of the result, usually only interesting in case the
                result was failed or partially succeedded. Note that

                differs from the remark on an action, which is a remark that is
                relevant before the execution of the action. Whereas

                this remark is relevant for the result after execution.
              type: string
            reason:
              $ref: '#/components/schemas/action-result-reason'
          required:
            - status
        remark:
          description: Free text field for adding an on remark on this action.
          type: string
        sequenceNr:
          description: >-
            The sequence number of this action within the entity it is taking
            place. Can be used to indicate order when no times are present
          type: integer
          format: int64
        stop:
          description: The stop that is associated with this action.
          oneOf:
            - $ref: '#/components/schemas/load-stop-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/load-stop-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        consignment:
          description: The consignment that is the subject of this action.
          oneOf:
            - $ref: '#/components/schemas/consignment-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/consignment-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        transportEquipment:
          description: The transport equipment the consignment is loaded in/unloaded from.
          oneOf:
            - $ref: '#/components/schemas/transport-equipment-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/transport-equipment-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        documents:
          description: >-
            Documents that are relevant for this action. Such as a
            proof-of-delivery photo, or scanned CMR.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/documents-inline'
              - $ref: '#/components/schemas/reference'
              - $ref: '#/components/schemas/attributeRestriction'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/documents-inline'
                reference: '#/components/schemas/reference'
                attributeRestriction: '#/components/schemas/attributeRestriction'
        location:
          description: The location at which this action is taking place.
          oneOf:
            - $ref: '#/components/schemas/action-location-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/action-location-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        timeFormat:
          default: dateTime
          type: string
          enum:
            - dateTime
            - recurringDateTime
            - duration
        startTime:
          description: The time at which the actions starts in ISO format.
          type: string
        endTime:
          description: The time at which the action is completed in ISO format.
          type: string
        recurrence:
          description: >-
            The recurrence of the date time, should only be set when
            `timeFormat` is set to `recurringDateTime`. The

            recurrence follows the [Recurrence
            Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)

            specification
          type: string
          format: recurrence
        duration:
          description: >-
            The duration of this action/event, should only be set when
            `timeFormat` is set to `duration`. The

            duration follows the [ISO
            8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)

            specification
          example: PT168H
          type: string
          format: duration
        constraint:
          description: >-
            The constraints this action abides to, such as start and end time
            windows.
          oneOf:
            - $ref: '#/components/schemas/action-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/action-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
      required:
        - actionType
    unload-stop:
      example:
        id: e0475c15-6d20-4085-a95e-427652585e5e
        remark: start stop at the warehouse
        location:
          uuid: 11c11d75-e114-4b5f-9751-b3a4afa23ecf
          entityType: location
          associationType: reference
        startTime: '2021-06-23T13:45:00Z'
        endTime: '2021-06-23T14:30:00Z'
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        result:
          description: >-
            The result of the action, can only be present in the actual or
            realized lifecycles. The result has a

            required status and optional additional info, like a remark and
            reason (in the case of failure).
          type: object
          properties:
            status:
              description: >-
                The status of the result, either succeeded, failed, partially
                succeeded or cancelled.
              type: string
              enum:
                - succeeded
                - failed
                - partiallySucceeded
                - cancelled
            remark:
              description: >-
                The remark of the result, usually only interesting in case the
                result was failed or partially succeedded. Note that

                differs from the remark on an action, which is a remark that is
                relevant before the execution of the action. Whereas

                this remark is relevant for the result after execution.
              type: string
            reason:
              $ref: '#/components/schemas/action-result-reason'
          required:
            - status
        remark:
          description: Free text field for adding an on remark on this action.
          type: string
        sequenceNr:
          description: >-
            The sequence number of this action within the entity it is taking
            place. Can be used to indicate order when no times are present
          type: integer
          format: int64
        trip:
          description: >-
            The trip that this stop belongs too, usually is only provided if the
            trip is not clear from the context.
          oneOf:
            - $ref: '#/components/schemas/trip-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/trip-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        location:
          description: The location of this stop.
          oneOf:
            - $ref: '#/components/schemas/stop-location-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/stop-location-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        timeFormat:
          default: dateTime
          type: string
          enum:
            - dateTime
            - recurringDateTime
            - duration
        startTime:
          description: The time at which the actions starts in ISO format.
          type: string
        endTime:
          description: The time at which the action is completed in ISO format.
          type: string
        recurrence:
          description: >-
            The recurrence of the date time, should only be set when
            `timeFormat` is set to `recurringDateTime`. The

            recurrence follows the [Recurrence
            Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)

            specification
          type: string
          format: recurrence
        duration:
          description: >-
            The duration of this action/event, should only be set when
            `timeFormat` is set to `duration`. The

            duration follows the [ISO
            8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)

            specification
          example: PT168H
          type: string
          format: duration
        constraint:
          description: >-
            The constraints this stop abides to, such as start and end time
            windows.
          oneOf:
            - $ref: '#/components/schemas/stop-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/stop-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
    unload-stop-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/unload-stop'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    unload:
      example:
        id: a5f5fc23-744a-46f7-81b4-bfe26629ad4f
        lifecycle: planned
        remark: unloading a consignment
        consignment:
          uuid: 047cfa4d-fd8b-47ba-b8e9-87067294d2fa
          entityType: consignment
          associationType: reference
        startTime: '2021-06-23T15:00:00Z'
        endTime: '2021-06-23T15:15:00Z'
        constraint:
          entity:
            id: 89a7bb4d-8720-4db9-aef7-4c3309186c3e
            name: Example combined constraint
            value:
              and:
                - startTime: '2021-06-23T10:00:00Z'
                  endTime: '2021-06-23T13:00:00Z'
                  description: alert-threshold
                  type: timeWindowConstraint
                - constraintType: maximum
                  maximum:
                    value: 5
                    unit: C
                  type: temperatureConstraint
                - or:
                    - fuelTypes:
                        - battery
                      type: fuelTypeConstraint
                    - fuelTypes:
                        - biodiesel
                      type: fuelTypeConstraint
                    - minimum: euro5
                      type: emissionStandardConstraint
                  type: orConstraint
              type: andConstraint
          associationType: inline
        actionType: unload
      type: object
      properties:
        actionType:
          example: unload
          type: string
          enum:
            - unload
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        result:
          description: >-
            The result of the action, can only be present in the actual or
            realized lifecycles. The result has a

            required status and optional additional info, like a remark and
            reason (in the case of failure).
          type: object
          properties:
            status:
              description: >-
                The status of the result, either succeeded, failed, partially
                succeeded or cancelled.
              type: string
              enum:
                - succeeded
                - failed
                - partiallySucceeded
                - cancelled
            remark:
              description: >-
                The remark of the result, usually only interesting in case the
                result was failed or partially succeedded. Note that

                differs from the remark on an action, which is a remark that is
                relevant before the execution of the action. Whereas

                this remark is relevant for the result after execution.
              type: string
            reason:
              $ref: '#/components/schemas/action-result-reason'
          required:
            - status
        remark:
          description: Free text field for adding an on remark on this action.
          type: string
        sequenceNr:
          description: >-
            The sequence number of this action within the entity it is taking
            place. Can be used to indicate order when no times are present
          type: integer
          format: int64
        stop:
          description: The stop that is associated with this action.
          oneOf:
            - $ref: '#/components/schemas/unload-stop-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/unload-stop-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        consignment:
          description: The consignment that is the subject of this action.
          oneOf:
            - $ref: '#/components/schemas/consignment-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/consignment-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        transportEquipment:
          description: The transport equipment the consignment is loaded in/unloaded from.
          oneOf:
            - $ref: '#/components/schemas/transport-equipment-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/transport-equipment-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        documents:
          description: >-
            Documents that are relevant for this action. Such as a
            proof-of-delivery photo, or scanned CMR.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/documents-inline'
              - $ref: '#/components/schemas/reference'
              - $ref: '#/components/schemas/attributeRestriction'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/documents-inline'
                reference: '#/components/schemas/reference'
                attributeRestriction: '#/components/schemas/attributeRestriction'
        location:
          description: The location at which this action is taking place.
          oneOf:
            - $ref: '#/components/schemas/action-location-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/action-location-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        timeFormat:
          default: dateTime
          type: string
          enum:
            - dateTime
            - recurringDateTime
            - duration
        startTime:
          description: The time at which the actions starts in ISO format.
          type: string
        endTime:
          description: The time at which the action is completed in ISO format.
          type: string
        recurrence:
          description: >-
            The recurrence of the date time, should only be set when
            `timeFormat` is set to `recurringDateTime`. The

            recurrence follows the [Recurrence
            Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)

            specification
          type: string
          format: recurrence
        duration:
          description: >-
            The duration of this action/event, should only be set when
            `timeFormat` is set to `duration`. The

            duration follows the [ISO
            8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)

            specification
          example: PT168H
          type: string
          format: duration
        constraint:
          description: >-
            The constraints this action abides to, such as start and end time
            windows.
          oneOf:
            - $ref: '#/components/schemas/action-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/action-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
      required:
        - actionType
    associations-actions:
      oneOf:
        - $ref: '#/components/schemas/actions-inline'
        - $ref: '#/components/schemas/reference'
        - $ref: '#/components/schemas/attributeRestriction'
      discriminator:
        propertyName: associationType
        mapping:
          inline: '#/components/schemas/actions-inline'
          reference: '#/components/schemas/reference'
          attributeRestriction: '#/components/schemas/attributeRestriction'
    stop:
      example:
        id: e0475c15-6d20-4085-a95e-427652585e5e
        remark: start stop at the warehouse
        location:
          uuid: 11c11d75-e114-4b5f-9751-b3a4afa23ecf
          entityType: location
          associationType: reference
        startTime: '2021-06-23T13:45:00Z'
        endTime: '2021-06-23T14:30:00Z'
        actions:
          - entity:
              id: cfb71ae8-ef85-4529-9b65-b2a3c8bc5aaa
              remark: We hope this is not going to take too long
              reason: Dock is occupied
              startTime: '2021-04-13T10:00:00Z'
              endTime: '2021-04-13T11:00:00Z'
              actionType: wait
            associationType: inline
          - entity:
              id: e81a7aa3-23a6-4089-b916-52b854c7b6f1
              lifecycle: planned
              remark: loading a consignment
              consignment:
                uuid: 047cfa4d-fd8b-47ba-b8e9-87067294d2fa
                entityType: consignment
                associationType: reference
              startTime: '2021-06-23T14:00:00Z'
              endTime: '2021-06-23T14:15:00Z'
              constraint:
                entity:
                  id: 89a7bb4d-8720-4db9-aef7-4c3309186c3e
                  name: Example combined constraint
                  value:
                    and:
                      - startTime: '2021-06-23T10:00:00Z'
                        endTime: '2021-06-23T13:00:00Z'
                        description: alert-threshold
                        type: timeWindowConstraint
                      - constraintType: maximum
                        maximum:
                          value: 5
                          unit: C
                        type: temperatureConstraint
                      - or:
                          - fuelTypes:
                              - battery
                            type: fuelTypeConstraint
                          - fuelTypes:
                              - biodiesel
                            type: fuelTypeConstraint
                          - minimum: euro5
                            type: emissionStandardConstraint
                        type: orConstraint
                    type: andConstraint
                associationType: inline
              actionType: load
            associationType: inline
          - entity:
              id: a5f5fc23-744a-46f7-81b4-bfe26629ad4f
              lifecycle: planned
              remark: unloading a consignment
              consignment:
                uuid: 047cfa4d-fd8b-47ba-b8e9-87067294d2fa
                entityType: consignment
                associationType: reference
              startTime: '2021-06-23T15:00:00Z'
              endTime: '2021-06-23T15:15:00Z'
              constraint:
                entity:
                  id: 89a7bb4d-8720-4db9-aef7-4c3309186c3e
                  name: Example combined constraint
                  value:
                    and:
                      - startTime: '2021-06-23T10:00:00Z'
                        endTime: '2021-06-23T13:00:00Z'
                        description: alert-threshold
                        type: timeWindowConstraint
                      - constraintType: maximum
                        maximum:
                          value: 5
                          unit: C
                        type: temperatureConstraint
                      - or:
                          - fuelTypes:
                              - battery
                            type: fuelTypeConstraint
                          - fuelTypes:
                              - biodiesel
                            type: fuelTypeConstraint
                          - minimum: euro5
                            type: emissionStandardConstraint
                        type: orConstraint
                    type: andConstraint
                associationType: inline
              actionType: unload
            associationType: inline
          - entity:
              id: 82aaffea-45e1-4c19-8720-ef44bc9a1968
              name: Lunch break
              remark: Everybody deserves a break once in a while
              startTime: '2021-04-13T11:00:00Z'
              endTime: '2021-04-13T11:30:00Z'
              actionType: break
            associationType: inline
        actionType: stop
      type: object
      properties:
        actionType:
          example: stop
          type: string
          enum:
            - stop
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        result:
          description: >-
            The result of the action, can only be present in the actual or
            realized lifecycles. The result has a

            required status and optional additional info, like a remark and
            reason (in the case of failure).
          type: object
          properties:
            status:
              description: >-
                The status of the result, either succeeded, failed, partially
                succeeded or cancelled.
              type: string
              enum:
                - succeeded
                - failed
                - partiallySucceeded
                - cancelled
            remark:
              description: >-
                The remark of the result, usually only interesting in case the
                result was failed or partially succeedded. Note that

                differs from the remark on an action, which is a remark that is
                relevant before the execution of the action. Whereas

                this remark is relevant for the result after execution.
              type: string
            reason:
              $ref: '#/components/schemas/action-result-reason'
          required:
            - status
        remark:
          description: Free text field for adding an on remark on this action.
          type: string
        sequenceNr:
          description: >-
            The sequence number of this action within the entity it is taking
            place. Can be used to indicate order when no times are present
          type: integer
          format: int64
        trip:
          description: >-
            The trip that this stop belongs too, usually is only provided if the
            trip is not clear from the context.
          oneOf:
            - $ref: '#/components/schemas/trip-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/trip-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        location:
          description: The location of this stop.
          oneOf:
            - $ref: '#/components/schemas/stop-location-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/stop-location-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        timeFormat:
          default: dateTime
          type: string
          enum:
            - dateTime
            - recurringDateTime
            - duration
        startTime:
          description: The time at which the actions starts in ISO format.
          type: string
        endTime:
          description: The time at which the action is completed in ISO format.
          type: string
        recurrence:
          description: >-
            The recurrence of the date time, should only be set when
            `timeFormat` is set to `recurringDateTime`. The

            recurrence follows the [Recurrence
            Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)

            specification
          type: string
          format: recurrence
        duration:
          description: >-
            The duration of this action/event, should only be set when
            `timeFormat` is set to `duration`. The

            duration follows the [ISO
            8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)

            specification
          example: PT168H
          type: string
          format: duration
        actions:
          description: >-
            All the actions that are taking place at this stop, such as loading
            and unloading all consignments/goods.
          type: array
          items:
            $ref: '#/components/schemas/associations-actions'
        constraint:
          description: >-
            The constraints this stop abides to, such as start and end time
            windows.
          oneOf:
            - $ref: '#/components/schemas/stop-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/stop-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
      required:
        - actionType
    move:
      example:
        id: a0e04457-a272-4160-91cc-4483aa5296c7
        name: Moving between the warehouse and the customer
        externalAttributes:
          timeDelay:
            value: 2
            unit: s
        from:
          entity:
            id: 11c11d75-e114-4b5f-9751-b3a4afa23ecf
            name: Main warehouse
            geoReference:
              lat: 5.4126792
              lon: 52.1956251
              type: latLonPointGeoReference
            type: warehouse
            administrativeReference:
              name: Supermarket warehouse
              street: Valutaboulevard
              houseNumber: '16'
              houseNumberAddition: C
              postalCode: 1825BT
              city: Amersfoort
              country: NL
            contactDetails:
              - value: '+312012345678'
                remark: private cellphone of the CEO
                language: nld
                type: phone
            remark: The cafe around the corner has the best coffee in town.
          associationType: inline
        to:
          entity:
            id: 9a3f26b2-8cf3-48db-b663-6c751c86d710
            geoReference:
              name: House of Alice
              street: North Lane
              houseNumber: '123'
              houseNumberAddition: B
              postalCode: 9999ZZ
              type: addressGeoReference
          associationType: inline
        distance:
          value: 120
          unit: km
        route:
          entity:
            id: beb9a25f-3f64-42ae-b1c6-e89cd450f66b
            name: An example route using coordinates to indicate how to drive.
            geoReference:
              geometry:
                coordinates:
                  - - 1
                    - 0
                  - - 5
                    - 0
                  - - 5
                    - 3
                  - - 13
                    - 3
                  - - 13
                    - 7
                type: LineString
              type: Feature
          associationType: inline
        actionType: move
      type: object
      properties:
        actionType:
          example: move
          type: string
          enum:
            - move
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        result:
          description: >-
            The result of the action, can only be present in the actual or
            realized lifecycles. The result has a

            required status and optional additional info, like a remark and
            reason (in the case of failure).
          type: object
          properties:
            status:
              description: >-
                The status of the result, either succeeded, failed, partially
                succeeded or cancelled.
              type: string
              enum:
                - succeeded
                - failed
                - partiallySucceeded
                - cancelled
            remark:
              description: >-
                The remark of the result, usually only interesting in case the
                result was failed or partially succeedded. Note that

                differs from the remark on an action, which is a remark that is
                relevant before the execution of the action. Whereas

                this remark is relevant for the result after execution.
              type: string
            reason:
              $ref: '#/components/schemas/action-result-reason'
          required:
            - status
        transportMode:
          description: >-
            Method of transport used for the carriage of goods on this move, can
            either be using a ship (maritime or

            inland waterway), a truck/car/van/bike/etc. (road), using the train
            (rail), or using a plane (air). These

            values are based on the

            [recommendation of
            UNECE](https://unece.org/fileadmin/DAM/cefact/recommendations/rec19/rec19_ecetrd138.pdf).
          type: string
          enum:
            - maritime
            - road
            - rail
            - air
            - inlandWaterway
        remark:
          description: Free text field for adding an on remark on this action.
          type: string
        sequenceNr:
          description: >-
            The sequence number of this action within the entity it is taking
            place. Can be used to indicate order when no times are present
          type: integer
          format: int64
        trip:
          description: >-
            The trip in which this Move takes place, only provided if the trip
            is not clear from the context.
          oneOf:
            - $ref: '#/components/schemas/trip-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/trip-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        from:
          description: The location from which the move action is started.
          oneOf:
            - $ref: '#/components/schemas/from-location-move-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/from-location-move-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        to:
          description: The location where the move action is ended.
          oneOf:
            - $ref: '#/components/schemas/to-location-move-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/to-location-move-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        timeFormat:
          default: dateTime
          type: string
          enum:
            - dateTime
            - recurringDateTime
            - duration
        startTime:
          description: The time at which the actions starts in ISO format.
          type: string
        endTime:
          description: The time at which the action is completed in ISO format.
          type: string
        recurrence:
          description: >-
            The recurrence of the date time, should only be set when
            `timeFormat` is set to `recurringDateTime`. The

            recurrence follows the [Recurrence
            Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)

            specification
          type: string
          format: recurrence
        duration:
          description: >-
            The duration of this action/event, should only be set when
            `timeFormat` is set to `duration`. The

            duration follows the [ISO
            8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)

            specification
          example: PT168H
          type: string
          format: duration
        distance:
          description: >-
            The distance between `from` and `to` locations of this move action.
            The difference between calculated and actually driven distance can
            be specified using multiple move actions with a different lifecycle
            (e.g. 'projected' vs 'actual')
          $ref: '#/components/schemas/value-with-unit'
        route:
          description: The route from location A to location B that is travelled.
          oneOf:
            - $ref: '#/components/schemas/route-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/route-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        actions:
          description: All actions that are done between the from and the to location.
          type: array
          items:
            $ref: '#/components/schemas/associations-actions'
        constraint:
          description: >-
            Constraints which this move action abides to, such as vehicle type
            or time window constraints.
          oneOf:
            - $ref: '#/components/schemas/move-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/move-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
      required:
        - actionType
    handover-stop:
      example:
        id: e0475c15-6d20-4085-a95e-427652585e5e
        remark: start stop at the warehouse
        location:
          uuid: 11c11d75-e114-4b5f-9751-b3a4afa23ecf
          entityType: location
          associationType: reference
        startTime: '2021-06-23T13:45:00Z'
        endTime: '2021-06-23T14:30:00Z'
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        result:
          description: >-
            The result of the action, can only be present in the actual or
            realized lifecycles. The result has a

            required status and optional additional info, like a remark and
            reason (in the case of failure).
          type: object
          properties:
            status:
              description: >-
                The status of the result, either succeeded, failed, partially
                succeeded or cancelled.
              type: string
              enum:
                - succeeded
                - failed
                - partiallySucceeded
                - cancelled
            remark:
              description: >-
                The remark of the result, usually only interesting in case the
                result was failed or partially succeedded. Note that

                differs from the remark on an action, which is a remark that is
                relevant before the execution of the action. Whereas

                this remark is relevant for the result after execution.
              type: string
            reason:
              $ref: '#/components/schemas/action-result-reason'
          required:
            - status
        remark:
          description: Free text field for adding an on remark on this action.
          type: string
        sequenceNr:
          description: >-
            The sequence number of this action within the entity it is taking
            place. Can be used to indicate order when no times are present
          type: integer
          format: int64
        trip:
          description: >-
            The trip that this stop belongs too, usually is only provided if the
            trip is not clear from the context.
          oneOf:
            - $ref: '#/components/schemas/trip-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/trip-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        location:
          description: The location of this stop.
          oneOf:
            - $ref: '#/components/schemas/stop-location-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/stop-location-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        timeFormat:
          default: dateTime
          type: string
          enum:
            - dateTime
            - recurringDateTime
            - duration
        startTime:
          description: The time at which the actions starts in ISO format.
          type: string
        endTime:
          description: The time at which the action is completed in ISO format.
          type: string
        recurrence:
          description: >-
            The recurrence of the date time, should only be set when
            `timeFormat` is set to `recurringDateTime`. The

            recurrence follows the [Recurrence
            Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)

            specification
          type: string
          format: recurrence
        duration:
          description: >-
            The duration of this action/event, should only be set when
            `timeFormat` is set to `duration`. The

            duration follows the [ISO
            8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)

            specification
          example: PT168H
          type: string
          format: duration
        constraint:
          description: >-
            The constraints this stop abides to, such as start and end time
            windows.
          oneOf:
            - $ref: '#/components/schemas/stop-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/stop-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
    handover-stop-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/handover-stop'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    handOver:
      example:
        id: 84506b63-3da2-44d4-aaef-d034ae6e3afe
        remark: Handing over a consignment from one party to another
        consignment:
          uuid: 047cfa4d-fd8b-47ba-b8e9-87067294d2fa
          entityType: consignment
          associationType: reference
        startTime: '2021-06-23T15:05:00Z'
        endTime: '2021-06-23T15:10:00Z'
        actionType: handOver
      type: object
      properties:
        actionType:
          example: handOver
          type: string
          enum:
            - handOver
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        result:
          description: >-
            The result of the action, can only be present in the actual or
            realized lifecycles. The result has a

            required status and optional additional info, like a remark and
            reason (in the case of failure).
          type: object
          properties:
            status:
              description: >-
                The status of the result, either succeeded, failed, partially
                succeeded or cancelled.
              type: string
              enum:
                - succeeded
                - failed
                - partiallySucceeded
                - cancelled
            remark:
              description: >-
                The remark of the result, usually only interesting in case the
                result was failed or partially succeedded. Note that

                differs from the remark on an action, which is a remark that is
                relevant before the execution of the action. Whereas

                this remark is relevant for the result after execution.
              type: string
            reason:
              $ref: '#/components/schemas/action-result-reason'
          required:
            - status
        remark:
          description: Free text field for adding an on remark on this action.
          type: string
        sequenceNr:
          description: >-
            The sequence number of this action within the entity it is taking
            place. Can be used to indicate order when no times are present
          type: integer
          format: int64
        from:
          description: The party that is handing over the consignment/goods.
          oneOf:
            - $ref: '#/components/schemas/handover-from-actor-inline'
            - $ref: '#/components/schemas/reference-roles'
            - $ref: '#/components/schemas/attributeRestriction-roles'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/handover-from-actor-inline'
              reference: '#/components/schemas/reference-roles'
              attributeRestriction: '#/components/schemas/attributeRestriction-roles'
        to:
          description: The party that is receiving the consignments/goods.
          oneOf:
            - $ref: '#/components/schemas/handover-to-actor-inline'
            - $ref: '#/components/schemas/reference-roles'
            - $ref: '#/components/schemas/attributeRestriction-roles'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/handover-to-actor-inline'
              reference: '#/components/schemas/reference-roles'
              attributeRestriction: '#/components/schemas/attributeRestriction-roles'
        stop:
          description: The stop that is associated with this action.
          oneOf:
            - $ref: '#/components/schemas/handover-stop-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/handover-stop-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        consignment:
          description: The consignment that is the subject of this action.
          oneOf:
            - $ref: '#/components/schemas/consignment-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/consignment-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        documents:
          description: >-
            Documents that are relevant for this action. Such as a
            proof-of-delivery photo, or scanned CMR.
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/documents-inline'
              - $ref: '#/components/schemas/reference'
              - $ref: '#/components/schemas/attributeRestriction'
            discriminator:
              propertyName: associationType
              mapping:
                inline: '#/components/schemas/documents-inline'
                reference: '#/components/schemas/reference'
                attributeRestriction: '#/components/schemas/attributeRestriction'
        location:
          description: The location at which this action is taking place.
          oneOf:
            - $ref: '#/components/schemas/handover-location-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/handover-location-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        timeFormat:
          default: dateTime
          type: string
          enum:
            - dateTime
            - recurringDateTime
            - duration
        startTime:
          description: The time at which the actions starts in ISO format.
          type: string
        endTime:
          description: The time at which the action is completed in ISO format.
          type: string
        recurrence:
          description: >-
            The recurrence of the date time, should only be set when
            `timeFormat` is set to `recurringDateTime`. The

            recurrence follows the [Recurrence
            Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)

            specification
          type: string
          format: recurrence
        duration:
          description: >-
            The duration of this action/event, should only be set when
            `timeFormat` is set to `duration`. The

            duration follows the [ISO
            8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)

            specification
          example: PT168H
          type: string
          format: duration
        constraint:
          description: >-
            The constraints this action abides to, such as start and end time
            windows.
          oneOf:
            - $ref: '#/components/schemas/handover-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/handover-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
      required:
        - actionType
    attach-stop:
      example:
        id: e0475c15-6d20-4085-a95e-427652585e5e
        remark: start stop at the warehouse
        location:
          uuid: 11c11d75-e114-4b5f-9751-b3a4afa23ecf
          entityType: location
          associationType: reference
        startTime: '2021-06-23T13:45:00Z'
        endTime: '2021-06-23T14:30:00Z'
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        result:
          description: >-
            The result of the action, can only be present in the actual or
            realized lifecycles. The result has a

            required status and optional additional info, like a remark and
            reason (in the case of failure).
          type: object
          properties:
            status:
              description: >-
                The status of the result, either succeeded, failed, partially
                succeeded or cancelled.
              type: string
              enum:
                - succeeded
                - failed
                - partiallySucceeded
                - cancelled
            remark:
              description: >-
                The remark of the result, usually only interesting in case the
                result was failed or partially succeedded. Note that

                differs from the remark on an action, which is a remark that is
                relevant before the execution of the action. Whereas

                this remark is relevant for the result after execution.
              type: string
            reason:
              $ref: '#/components/schemas/action-result-reason'
          required:
            - status
        remark:
          description: Free text field for adding an on remark on this action.
          type: string
        sequenceNr:
          description: >-
            The sequence number of this action within the entity it is taking
            place. Can be used to indicate order when no times are present
          type: integer
          format: int64
        trip:
          description: >-
            The trip that this stop belongs too, usually is only provided if the
            trip is not clear from the context.
          oneOf:
            - $ref: '#/components/schemas/trip-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/trip-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        location:
          description: The location of this stop.
          oneOf:
            - $ref: '#/components/schemas/stop-location-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/stop-location-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        timeFormat:
          default: dateTime
          type: string
          enum:
            - dateTime
            - recurringDateTime
            - duration
        startTime:
          description: The time at which the actions starts in ISO format.
          type: string
        endTime:
          description: The time at which the action is completed in ISO format.
          type: string
        recurrence:
          description: >-
            The recurrence of the date time, should only be set when
            `timeFormat` is set to `recurringDateTime`. The

            recurrence follows the [Recurrence
            Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)

            specification
          type: string
          format: recurrence
        duration:
          description: >-
            The duration of this action/event, should only be set when
            `timeFormat` is set to `duration`. The

            duration follows the [ISO
            8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)

            specification
          example: PT168H
          type: string
          format: duration
        constraint:
          description: >-
            The constraints this stop abides to, such as start and end time
            windows.
          oneOf:
            - $ref: '#/components/schemas/stop-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/stop-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
    attach-stop-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/attach-stop'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    attachTransportEquipment:
      example:
        id: e2b597bd-feb5-4951-a070-e143eae22a29
        lifecycle: planned
        remark: attaching a trailer
        vehicle:
          entity:
            id: b9bb914d-845e-46f2-91ff-31fa4bac2fbe
            name: Bob's Boxtruck
            vehicleType: boxtruck
            fuel: electricity
            loadCapacities:
              - value: 1000
                unit: kg
            length:
              value: 8
              unit: m
            height:
              value: 2.8
              unit: m
            width:
              value: 2
              unit: m
            licensePlate: AB-12-CD
            emptyWeight:
              value: 2000
              unit: kg
          associationType: inline
        transportEquipment:
          entity:
            id: a29905bb-9af8-4118-896a-71b1eaf07cc0
            description: A trailer
            width:
              value: 2.46
              unit: m
            height:
              value: 2.7
              unit: m
            length:
              value: 13.62
              unit: m
            licensePlate: 123-ABC
          associationType: inline
        startTime: '2021-06-23T15:15:00Z'
        endTime: '2021-06-23T15:20:00Z'
        actionType: attachTransportEquipment
      type: object
      properties:
        actionType:
          example: attachTransportEquipment
          type: string
          enum:
            - attachTransportEquipment
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        result:
          description: >-
            The result of the action, can only be present in the actual or
            realized lifecycles. The result has a

            required status and optional additional info, like a remark and
            reason (in the case of failure).
          type: object
          properties:
            status:
              description: >-
                The status of the result, either succeeded, failed, partially
                succeeded or cancelled.
              type: string
              enum:
                - succeeded
                - failed
                - partiallySucceeded
                - cancelled
            remark:
              description: >-
                The remark of the result, usually only interesting in case the
                result was failed or partially succeedded. Note that

                differs from the remark on an action, which is a remark that is
                relevant before the execution of the action. Whereas

                this remark is relevant for the result after execution.
              type: string
            reason:
              $ref: '#/components/schemas/action-result-reason'
          required:
            - status
        remark:
          description: Free text field for adding an on remark on this action.
          type: string
        sequenceNr:
          description: >-
            The sequence number of this action within the entity it is taking
            place. Can be used to indicate order when no times are present
          type: integer
          format: int64
        vehicle:
          description: The vehicle that is involved in this action.
          oneOf:
            - $ref: '#/components/schemas/vehicle-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/vehicle-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        transportEquipment:
          description: >-
            The transport equipment that is being attached/detached to the
            associated vehicle.
          oneOf:
            - $ref: '#/components/schemas/transport-equipment-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/transport-equipment-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        stop:
          description: The stop that is associated with this action.
          oneOf:
            - $ref: '#/components/schemas/attach-stop-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/attach-stop-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        location:
          description: The location at which this action is taking place.
          oneOf:
            - $ref: '#/components/schemas/action-location-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/action-location-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        timeFormat:
          default: dateTime
          type: string
          enum:
            - dateTime
            - recurringDateTime
            - duration
        startTime:
          description: The time at which the actions starts in ISO format.
          type: string
        endTime:
          description: The time at which the action is completed in ISO format.
          type: string
        recurrence:
          description: >-
            The recurrence of the date time, should only be set when
            `timeFormat` is set to `recurringDateTime`. The

            recurrence follows the [Recurrence
            Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)

            specification
          type: string
          format: recurrence
        duration:
          description: >-
            The duration of this action/event, should only be set when
            `timeFormat` is set to `duration`. The

            duration follows the [ISO
            8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)

            specification
          example: PT168H
          type: string
          format: duration
        constraint:
          description: >-
            The constraints this action abides to, such as start and end time
            windows.
          oneOf:
            - $ref: '#/components/schemas/action-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/action-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
      required:
        - actionType
    detach-stop:
      example:
        id: e0475c15-6d20-4085-a95e-427652585e5e
        remark: start stop at the warehouse
        location:
          uuid: 11c11d75-e114-4b5f-9751-b3a4afa23ecf
          entityType: location
          associationType: reference
        startTime: '2021-06-23T13:45:00Z'
        endTime: '2021-06-23T14:30:00Z'
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        result:
          description: >-
            The result of the action, can only be present in the actual or
            realized lifecycles. The result has a

            required status and optional additional info, like a remark and
            reason (in the case of failure).
          type: object
          properties:
            status:
              description: >-
                The status of the result, either succeeded, failed, partially
                succeeded or cancelled.
              type: string
              enum:
                - succeeded
                - failed
                - partiallySucceeded
                - cancelled
            remark:
              description: >-
                The remark of the result, usually only interesting in case the
                result was failed or partially succeedded. Note that

                differs from the remark on an action, which is a remark that is
                relevant before the execution of the action. Whereas

                this remark is relevant for the result after execution.
              type: string
            reason:
              $ref: '#/components/schemas/action-result-reason'
          required:
            - status
        remark:
          description: Free text field for adding an on remark on this action.
          type: string
        sequenceNr:
          description: >-
            The sequence number of this action within the entity it is taking
            place. Can be used to indicate order when no times are present
          type: integer
          format: int64
        trip:
          description: >-
            The trip that this stop belongs too, usually is only provided if the
            trip is not clear from the context.
          oneOf:
            - $ref: '#/components/schemas/trip-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/trip-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        location:
          description: The location of this stop.
          oneOf:
            - $ref: '#/components/schemas/stop-location-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/stop-location-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        timeFormat:
          default: dateTime
          type: string
          enum:
            - dateTime
            - recurringDateTime
            - duration
        startTime:
          description: The time at which the actions starts in ISO format.
          type: string
        endTime:
          description: The time at which the action is completed in ISO format.
          type: string
        recurrence:
          description: >-
            The recurrence of the date time, should only be set when
            `timeFormat` is set to `recurringDateTime`. The

            recurrence follows the [Recurrence
            Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)

            specification
          type: string
          format: recurrence
        duration:
          description: >-
            The duration of this action/event, should only be set when
            `timeFormat` is set to `duration`. The

            duration follows the [ISO
            8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)

            specification
          example: PT168H
          type: string
          format: duration
        constraint:
          description: >-
            The constraints this stop abides to, such as start and end time
            windows.
          oneOf:
            - $ref: '#/components/schemas/stop-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/stop-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
    detach-stop-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/detach-stop'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    detachTransportEquipment:
      example:
        id: a2d2595f-9554-45a3-8c7d-df2d1923ef51
        lifecycle: planned
        remark: attaching a trailer
        vehicle:
          entity:
            id: b9bb914d-845e-46f2-91ff-31fa4bac2fbe
            name: Bob's Boxtruck
            vehicleType: boxtruck
            fuel: electricity
            loadCapacities:
              - value: 1000
                unit: kg
            length:
              value: 8
              unit: m
            height:
              value: 2.8
              unit: m
            width:
              value: 2
              unit: m
            licensePlate: AB-12-CD
            emptyWeight:
              value: 2000
              unit: kg
          associationType: inline
        transportEquipment:
          uuid: a29905bb-9af8-4118-896a-71b1eaf07cc0
          entityType: transportEquipment
          associationType: reference
        startTime: '2021-06-23T15:20:00Z'
        endTime: '2021-06-23T15:30:00Z'
        actionType: detachTransportEquipment
      type: object
      properties:
        actionType:
          example: detachTransportEquipment
          type: string
          enum:
            - detachTransportEquipment
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        result:
          description: >-
            The result of the action, can only be present in the actual or
            realized lifecycles. The result has a

            required status and optional additional info, like a remark and
            reason (in the case of failure).
          type: object
          properties:
            status:
              description: >-
                The status of the result, either succeeded, failed, partially
                succeeded or cancelled.
              type: string
              enum:
                - succeeded
                - failed
                - partiallySucceeded
                - cancelled
            remark:
              description: >-
                The remark of the result, usually only interesting in case the
                result was failed or partially succeedded. Note that

                differs from the remark on an action, which is a remark that is
                relevant before the execution of the action. Whereas

                this remark is relevant for the result after execution.
              type: string
            reason:
              $ref: '#/components/schemas/action-result-reason'
          required:
            - status
        remark:
          description: Free text field for adding an on remark on this action.
          type: string
        sequenceNr:
          description: >-
            The sequence number of this action within the entity it is taking
            place. Can be used to indicate order when no times are present
          type: integer
          format: int64
        vehicle:
          description: The vehicle that is involved in this action.
          oneOf:
            - $ref: '#/components/schemas/vehicle-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/vehicle-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        transportEquipment:
          description: >-
            The transport equipment that is being attached/detached to the
            associated vehicle.
          oneOf:
            - $ref: '#/components/schemas/transport-equipment-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/transport-equipment-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        stop:
          description: The stop that is associated with this action.
          oneOf:
            - $ref: '#/components/schemas/detach-stop-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/detach-stop-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        location:
          description: The location at which this action is taking place.
          oneOf:
            - $ref: '#/components/schemas/action-location-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/action-location-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        timeFormat:
          default: dateTime
          type: string
          enum:
            - dateTime
            - recurringDateTime
            - duration
        startTime:
          description: The time at which the actions starts in ISO format.
          type: string
        endTime:
          description: The time at which the action is completed in ISO format.
          type: string
        recurrence:
          description: >-
            The recurrence of the date time, should only be set when
            `timeFormat` is set to `recurringDateTime`. The

            recurrence follows the [Recurrence
            Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)

            specification
          type: string
          format: recurrence
        duration:
          description: >-
            The duration of this action/event, should only be set when
            `timeFormat` is set to `duration`. The

            duration follows the [ISO
            8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)

            specification
          example: PT168H
          type: string
          format: duration
        constraint:
          description: >-
            The constraints this action abides to, such as start and end time
            windows.
          oneOf:
            - $ref: '#/components/schemas/action-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/action-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
      required:
        - actionType
    refuel-stop:
      example:
        id: e0475c15-6d20-4085-a95e-427652585e5e
        remark: start stop at the warehouse
        location:
          uuid: 11c11d75-e114-4b5f-9751-b3a4afa23ecf
          entityType: location
          associationType: reference
        startTime: '2021-06-23T13:45:00Z'
        endTime: '2021-06-23T14:30:00Z'
      type: object
      properties:
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        result:
          description: >-
            The result of the action, can only be present in the actual or
            realized lifecycles. The result has a

            required status and optional additional info, like a remark and
            reason (in the case of failure).
          type: object
          properties:
            status:
              description: >-
                The status of the result, either succeeded, failed, partially
                succeeded or cancelled.
              type: string
              enum:
                - succeeded
                - failed
                - partiallySucceeded
                - cancelled
            remark:
              description: >-
                The remark of the result, usually only interesting in case the
                result was failed or partially succeedded. Note that

                differs from the remark on an action, which is a remark that is
                relevant before the execution of the action. Whereas

                this remark is relevant for the result after execution.
              type: string
            reason:
              $ref: '#/components/schemas/action-result-reason'
          required:
            - status
        remark:
          description: Free text field for adding an on remark on this action.
          type: string
        sequenceNr:
          description: >-
            The sequence number of this action within the entity it is taking
            place. Can be used to indicate order when no times are present
          type: integer
          format: int64
        trip:
          description: >-
            The trip that this stop belongs too, usually is only provided if the
            trip is not clear from the context.
          oneOf:
            - $ref: '#/components/schemas/trip-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/trip-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        location:
          description: The location of this stop.
          oneOf:
            - $ref: '#/components/schemas/stop-location-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/stop-location-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        timeFormat:
          default: dateTime
          type: string
          enum:
            - dateTime
            - recurringDateTime
            - duration
        startTime:
          description: The time at which the actions starts in ISO format.
          type: string
        endTime:
          description: The time at which the action is completed in ISO format.
          type: string
        recurrence:
          description: >-
            The recurrence of the date time, should only be set when
            `timeFormat` is set to `recurringDateTime`. The

            recurrence follows the [Recurrence
            Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)

            specification
          type: string
          format: recurrence
        duration:
          description: >-
            The duration of this action/event, should only be set when
            `timeFormat` is set to `duration`. The

            duration follows the [ISO
            8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)

            specification
          example: PT168H
          type: string
          format: duration
        constraint:
          description: >-
            The constraints this stop abides to, such as start and end time
            windows.
          oneOf:
            - $ref: '#/components/schemas/stop-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/stop-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
    refuel-stop-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/refuel-stop'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    refuel:
      example:
        id: d348a354-78c9-4c1f-a011-99c048b977a3
        lifecycle: planned
        remark: need to fill the tank again!
        vehicle:
          entity:
            id: b9bb914d-845e-46f2-91ff-31fa4bac2fbe
            name: Bob's Boxtruck
            vehicleType: boxtruck
            fuel: electricity
            loadCapacities:
              - value: 1000
                unit: kg
            length:
              value: 8
              unit: m
            height:
              value: 2.8
              unit: m
            width:
              value: 2
              unit: m
            licensePlate: AB-12-CD
            emptyWeight:
              value: 2000
              unit: kg
          associationType: inline
        startTime: '2021-06-23T15:35:00Z'
        endTime: '2021-06-23T15:37:00Z'
        actionType: refuel
      type: object
      properties:
        actionType:
          example: refuel
          type: string
          enum:
            - refuel
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        result:
          description: >-
            The result of the action, can only be present in the actual or
            realized lifecycles. The result has a

            required status and optional additional info, like a remark and
            reason (in the case of failure).
          type: object
          properties:
            status:
              description: >-
                The status of the result, either succeeded, failed, partially
                succeeded or cancelled.
              type: string
              enum:
                - succeeded
                - failed
                - partiallySucceeded
                - cancelled
            remark:
              description: >-
                The remark of the result, usually only interesting in case the
                result was failed or partially succeedded. Note that

                differs from the remark on an action, which is a remark that is
                relevant before the execution of the action. Whereas

                this remark is relevant for the result after execution.
              type: string
            reason:
              $ref: '#/components/schemas/action-result-reason'
          required:
            - status
        remark:
          description: Free text field for adding an on remark on this action.
          type: string
        sequenceNr:
          description: >-
            The sequence number of this action within the entity it is taking
            place. Can be used to indicate order when no times are present
          type: integer
          format: int64
        vehicle:
          description: The vehicle that is involved in this action.
          oneOf:
            - $ref: '#/components/schemas/vehicle-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/vehicle-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        stop:
          description: The stop that is associated with this action.
          oneOf:
            - $ref: '#/components/schemas/refuel-stop-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/refuel-stop-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        location:
          description: The location at which this action is taking place.
          oneOf:
            - $ref: '#/components/schemas/action-location-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/action-location-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        timeFormat:
          default: dateTime
          type: string
          enum:
            - dateTime
            - recurringDateTime
            - duration
        startTime:
          description: The time at which the actions starts in ISO format.
          type: string
        endTime:
          description: The time at which the action is completed in ISO format.
          type: string
        recurrence:
          description: >-
            The recurrence of the date time, should only be set when
            `timeFormat` is set to `recurringDateTime`. The

            recurrence follows the [Recurrence
            Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)

            specification
          type: string
          format: recurrence
        duration:
          description: >-
            The duration of this action/event, should only be set when
            `timeFormat` is set to `duration`. The

            duration follows the [ISO
            8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)

            specification
          example: PT168H
          type: string
          format: duration
        constraint:
          description: >-
            The constraints this action abides to, such as start and end time
            windows.
          oneOf:
            - $ref: '#/components/schemas/action-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/action-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
      required:
        - actionType
    break:
      type: object
      properties:
        actionType:
          example: break
          type: string
          enum:
            - break
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        result:
          description: >-
            The result of the action, can only be present in the actual or
            realized lifecycles. The result has a

            required status and optional additional info, like a remark and
            reason (in the case of failure).
          type: object
          properties:
            status:
              description: >-
                The status of the result, either succeeded, failed, partially
                succeeded or cancelled.
              type: string
              enum:
                - succeeded
                - failed
                - partiallySucceeded
                - cancelled
            remark:
              description: >-
                The remark of the result, usually only interesting in case the
                result was failed or partially succeedded. Note that

                differs from the remark on an action, which is a remark that is
                relevant before the execution of the action. Whereas

                this remark is relevant for the result after execution.
              type: string
            reason:
              $ref: '#/components/schemas/action-result-reason'
          required:
            - status
        remark:
          description: Free text field for adding an on remark on this action.
          type: string
        sequenceNr:
          description: >-
            The sequence number of this action within the entity it is taking
            place. Can be used to indicate order when no times are present
          type: integer
          format: int64
        location:
          description: The location at which this action is taking place.
          oneOf:
            - $ref: '#/components/schemas/action-location-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/action-location-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        trip:
          description: The trip this action takes place on.
          oneOf:
            - $ref: '#/components/schemas/trip-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/trip-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        timeFormat:
          default: dateTime
          type: string
          enum:
            - dateTime
            - recurringDateTime
            - duration
        startTime:
          description: The time at which the actions starts in ISO format.
          type: string
        endTime:
          description: The time at which the action is completed in ISO format.
          type: string
        recurrence:
          description: >-
            The recurrence of the date time, should only be set when
            `timeFormat` is set to `recurringDateTime`. The

            recurrence follows the [Recurrence
            Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)

            specification
          type: string
          format: recurrence
        duration:
          description: >-
            The duration of this action/event, should only be set when
            `timeFormat` is set to `duration`. The

            duration follows the [ISO
            8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)

            specification
          example: PT168H
          type: string
          format: duration
        constraint:
          description: >-
            The constraints this action abides to, such as start and end time
            windows.
          oneOf:
            - $ref: '#/components/schemas/break-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/break-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
      required:
        - actionType
    wait:
      type: object
      properties:
        actionType:
          example: wait
          type: string
          enum:
            - wait
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        result:
          description: >-
            The result of the action, can only be present in the actual or
            realized lifecycles. The result has a

            required status and optional additional info, like a remark and
            reason (in the case of failure).
          type: object
          properties:
            status:
              description: >-
                The status of the result, either succeeded, failed, partially
                succeeded or cancelled.
              type: string
              enum:
                - succeeded
                - failed
                - partiallySucceeded
                - cancelled
            remark:
              description: >-
                The remark of the result, usually only interesting in case the
                result was failed or partially succeedded. Note that

                differs from the remark on an action, which is a remark that is
                relevant before the execution of the action. Whereas

                this remark is relevant for the result after execution.
              type: string
            reason:
              $ref: '#/components/schemas/action-result-reason'
          required:
            - status
        remark:
          description: Free text field for adding an on remark on this action.
          type: string
        sequenceNr:
          description: >-
            The sequence number of this action within the entity it is taking
            place. Can be used to indicate order when no times are present
          type: integer
          format: int64
        reason:
          description: >-
            Reason why the driver has to wait, for example because the dock is
            occupied.
          type: string
        location:
          description: The location at which this action is taking place.
          oneOf:
            - $ref: '#/components/schemas/action-location-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/action-location-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        trip:
          description: The trip this action takes place on.
          oneOf:
            - $ref: '#/components/schemas/trip-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/trip-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        timeFormat:
          default: dateTime
          type: string
          enum:
            - dateTime
            - recurringDateTime
            - duration
        startTime:
          description: The time at which the actions starts in ISO format.
          type: string
        endTime:
          description: The time at which the action is completed in ISO format.
          type: string
        recurrence:
          description: >-
            The recurrence of the date time, should only be set when
            `timeFormat` is set to `recurringDateTime`. The

            recurrence follows the [Recurrence
            Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)

            specification
          type: string
          format: recurrence
        duration:
          description: >-
            The duration of this action/event, should only be set when
            `timeFormat` is set to `duration`. The

            duration follows the [ISO
            8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)

            specification
          example: PT168H
          type: string
          format: duration
        constraint:
          description: >-
            The constraints this action abides to, such as start and end time
            windows.
          oneOf:
            - $ref: '#/components/schemas/wait-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/wait-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
      required:
        - actionType
    genericAction:
      example:
        id: 64d42a96-2ac3-4ae5-bce2-726536f1616d
        lifecycle: planned
        description: Adding fuel to the truck
        startTime: '2021-06-23T16:00:00Z'
        endTime: '2021-06-23T16:05:00Z'
        actionType: genericAction
      type: object
      properties:
        actionType:
          example: genericAction
          type: string
          enum:
            - genericAction
        id:
          description: >-
            Uniquely identifies this entity. A URI can be assigned by the client
            to indicate where more information
             can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not
             required to send it in the request. One can be generated for you by the server.
          type: string
        name:
          description: Name of the entity. For display purposes and search only.
          type: string
        creationDate:
          description: The creation date of this entity.
          type: string
        lastModified:
          description: >-
            The last modified date of this entity. If none is given the creation
            date is used instead.
          type: string
        contextEvents:
          description: >-
            The context events provides some optional information about the
            events that can provide additional information
             on the current state of this entity.

            For example: your system might send ETA information for the arrival
            of a vehicle on a location. To make it clear

            what caused this ETA to be updated, we can include some information
            about what caused this ETA update by including

            an event as context. If your ETA update was caused by a location
            update, this event can be included as context. If

            the ETA was caused by a traffic accident on the route of the
            vehicle, you can include that event in the context.
          type: array
          items:
            $ref: '#/components/schemas/events'
        externalAttributes:
          description: >
            External attributes are a simple way to add information in an
            OpenTripModel message that could not fit into one of
              the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional
              ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.

             > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as
               it was intended.
          type: object
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/unrestricted_json'
        lifecycle:
          description: >-
            A lifecycle models _when_ the data in the action is taking place.
            You can provide the same action in multiple

            lifecycles to model how it changes over time. For example the
            planned and realized time of an action taking place

            can differ because of unforseen circumstances (such as traffic
            jams).
          type: string
          enum:
            - requested
            - planned
            - projected
            - actual
            - realized
        result:
          description: >-
            The result of the action, can only be present in the actual or
            realized lifecycles. The result has a

            required status and optional additional info, like a remark and
            reason (in the case of failure).
          type: object
          properties:
            status:
              description: >-
                The status of the result, either succeeded, failed, partially
                succeeded or cancelled.
              type: string
              enum:
                - succeeded
                - failed
                - partiallySucceeded
                - cancelled
            remark:
              description: >-
                The remark of the result, usually only interesting in case the
                result was failed or partially succeedded. Note that

                differs from the remark on an action, which is a remark that is
                relevant before the execution of the action. Whereas

                this remark is relevant for the result after execution.
              type: string
            reason:
              $ref: '#/components/schemas/action-result-reason'
          required:
            - status
        remark:
          description: Free text field for adding an on remark on this action.
          type: string
        sequenceNr:
          description: >-
            The sequence number of this action within the entity it is taking
            place. Can be used to indicate order when no times are present
          type: integer
          format: int64
        description:
          type: string
        trip:
          description: >-
            The trip in which this action takes place, only provided if the trip
            is not clear from the context.
          oneOf:
            - $ref: '#/components/schemas/trip-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/trip-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        timeFormat:
          default: dateTime
          type: string
          enum:
            - dateTime
            - recurringDateTime
            - duration
        startTime:
          description: The time at which the actions starts in ISO format.
          type: string
        endTime:
          description: The time at which the action is completed in ISO format.
          type: string
        recurrence:
          description: >-
            The recurrence of the date time, should only be set when
            `timeFormat` is set to `recurringDateTime`. The

            recurrence follows the [Recurrence
            Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)

            specification
          type: string
          format: recurrence
        duration:
          description: >-
            The duration of this action/event, should only be set when
            `timeFormat` is set to `duration`. The

            duration follows the [ISO
            8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)

            specification
          example: PT168H
          type: string
          format: duration
        actions:
          description: All actions that are done as part of this action.
          type: array
          items:
            $ref: '#/components/schemas/associations-actions'
        constraint:
          description: >-
            The constraints this action abides to, such as start and end time
            windows.
          oneOf:
            - $ref: '#/components/schemas/generic-action-constraint-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/generic-action-constraint-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
        move:
          description: >-
            The trip in which this Move takes place, only provided if the trip
            is not clear from the context.
          oneOf:
            - $ref: '#/components/schemas/move-association-inline'
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/attributeRestriction'
          discriminator:
            propertyName: associationType
            mapping:
              inline: '#/components/schemas/move-association-inline'
              reference: '#/components/schemas/reference'
              attributeRestriction: '#/components/schemas/attributeRestriction'
      required:
        - actionType
        - description
    actions:
      oneOf:
        - $ref: '#/components/schemas/load'
        - $ref: '#/components/schemas/unload'
        - $ref: '#/components/schemas/stop'
        - $ref: '#/components/schemas/move'
        - $ref: '#/components/schemas/handOver'
        - $ref: '#/components/schemas/attachTransportEquipment'
        - $ref: '#/components/schemas/detachTransportEquipment'
        - $ref: '#/components/schemas/refuel'
        - $ref: '#/components/schemas/break'
        - $ref: '#/components/schemas/wait'
        - $ref: '#/components/schemas/genericAction'
      discriminator:
        propertyName: actionType
        mapping:
          load: '#/components/schemas/load'
          unload: '#/components/schemas/unload'
          stop: '#/components/schemas/stop'
          move: '#/components/schemas/move'
          handOver: '#/components/schemas/handOver'
          attachTransportEquipment: '#/components/schemas/attachTransportEquipment'
          detachTransportEquipment: '#/components/schemas/detachTransportEquipment'
          refuel: '#/components/schemas/refuel'
          break: '#/components/schemas/break'
          wait: '#/components/schemas/wait'
          genericAction: '#/components/schemas/genericAction'
    actions-inline:
      type: object
      properties:
        associationType:
          example: inline
          type: string
          enum:
            - inline
        entity:
          $ref: '#/components/schemas/actions'
        description:
          description: >-
            A free text description of the relationship to the associated
            entity.
          type: string
      required:
        - associationType
        - entity
    action:
      oneOf:
        - $ref: '#/components/schemas/load'
        - $ref: '#/components/schemas/unload'
        - $ref: '#/components/schemas/stop'
        - $ref: '#/components/schemas/move'
        - $ref: '#/components/schemas/handOver'
        - $ref: '#/components/schemas/attachTransportEquipment'
        - $ref: '#/components/schemas/detachTransportEquipment'
        - $ref: '#/components/schemas/refuel'
        - $ref: '#/components/schemas/break'
        - $ref: '#/components/schemas/wait'
        - $ref: '#/components/schemas/genericAction'
      discriminator:
        propertyName: actionType
        mapping:
          load: '#/components/schemas/load'
          unload: '#/components/schemas/unload'
          stop: '#/components/schemas/stop'
          move: '#/components/schemas/move'
          handOver: '#/components/schemas/handOver'
          attachTransportEquipment: '#/components/schemas/attachTransportEquipment'
          detachTransportEquipment: '#/components/schemas/detachTransportEquipment'
          refuel: '#/components/schemas/refuel'
          break: '#/components/schemas/break'
          wait: '#/components/schemas/wait'
          genericAction: '#/components/schemas/genericAction'
