{
  "openapi": "3.0.0",
  "info": {
    "title": "Open Trip Model",
    "version": "v5.7",
    "description": "## Why OTM?\n\nIn this day and age more and more information about logistics and traffic is shared over the Internet between\nvarious parties. To make this communication easier the _Open Trip Model_ specification was created. It is a\nlightweight data model used to exchange real-time logistic trip data on the web, and to make it easier for\nshippers, carriers, software vendors, OEMs, and truck manufacturers to create new multi-brand applications and\nservices.\n\nTo learn more about the what, the why and the how see the\n**[OTM documentation website](https://opentripmodel.org/)**.\n\n## Changelog\n\nFound any bugs on this page? Or have any feature requests for OTM? Create a new ticket on the\n[OTM5 change requests Github page](https://github.com/opentripmodel/otm5-change-requests)\n\n**Version 5.7 (released on 2025-05-23)**\n\n* Fix broken link to goods packaging type codes. [See 87](https://github.com/opentripmodel/otm5-change-requests/issues/87).\n* 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).\n* 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).\n* 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).\n* 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)\n* 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)\n\n**Version 5.6 (released on 2023-11-17)**\n\n* Add loading and unloading consignment in and from transport equipment. [See 63](https://github.com/opentripmodel/otm5-change-requests/issues/63).\n* Add enforceability of a constraint. [See 75](https://github.com/opentripmodel/otm5-change-requests/issues/75).\n* Add recurring date times & durations on actions & events. [See 75](https://github.com/opentripmodel/otm5-change-requests/issues/75).\n* Add sub-locations as optional field on a location. [See 77](https://github.com/opentripmodel/otm5-change-requests/issues/77).\n* Add `owner` as a new type of actor role. [See 78](https://github.com/opentripmodel/otm5-change-requests/issues/78).\n* Add `routeEntityConstraint` and deprecate `routeConstraint`. [See 80](https://github.com/opentripmodel/otm5-change-requests/issues/80).\n\n**Version 5.5 (released on 2023-02-07)**\n\n* Explain when to use `Consignment` vs `Goods` constraints. [See 42](https://github.com/opentripmodel/otm5-change-requests/issues/42).\n* Make `fuel` on vehicle an enum instead of a free string. [See 51](https://github.com/opentripmodel/otm5-change-requests/issues/51).\n* Add `emissionStandardConstraint` as a possible constraint. [See 52](https://github.com/opentripmodel/otm5-change-requests/issues/52).\n* Add `transportOrder` as a field on `Consignment` to enable the two-way relationship. [See 59](https://github.com/opentripmodel/otm5-change-requests/issues/59).\n* Add `eori` as a possible contact detail option. [See 60](https://github.com/opentripmodel/otm5-change-requests/issues/60).\n* Add `valueBoundConstraint` as a possible constraint. [See 61](https://github.com/opentripmodel/otm5-change-requests/issues/61).\n* Add `refuel` as a possible action. [See 62](https://github.com/opentripmodel/otm5-change-requests/issues/62).\n* Add `accessConstraint` as possible constraint. [See 69](https://github.com/opentripmodel/otm5-change-requests/issues/69).\n\n**Version 5.4 (released on 2022-05-09)**\n\n* _Add a `TransportEquipmentConstraint`. [See 46](https://github.com/opentripmodel/otm5-change-requests/issues/46).\n* _Add `averageFuelConsumption` to vehicle. [See 48](https://github.com/opentripmodel/otm5-change-requests/issues/48).\n* _Add fuel consumption and emission events. [See 49](https://github.com/opentripmodel/otm5-change-requests/issues/49).\n* _Add `contextEvents` on entities. [See 49](https://github.com/opentripmodel/otm5-change-requests/issues/49).\n* _Add `sequenceNr` to all action types. [See 50](https://github.com/opentripmodel/otm5-change-requests/issues/50).\n* _Add `cancelled` on action results and `receiverAbsent` as 'reason' type. [See 53](https://github.com/opentripmodel/otm5-change-requests/issues/53).\n* _Add `actors` to all event types. [See 55](https://github.com/opentripmodel/otm5-change-requests/issues/55).\n* _Add `description` to all constraint types. [See 56](https://github.com/opentripmodel/otm5-change-requests/issues/56).\n\n**Version 5.3 (released on 2021-12-16)**\n\n* Support 204 (No Content) for delete requests. [See 23](https://github.com/opentripmodel/otm5-change-requests/issues/23).\n* Add classification lines to goods. [See 26](https://github.com/opentripmodel/otm5-change-requests/issues/26).\n* Add a result to actions. [See 30](https://github.com/opentripmodel/otm5-change-requests/issues/30).\n* Extend ADR with points and transport category. [See 31](https://github.com/opentripmodel/otm5-change-requests/issues/31).\n* Support `relatedConsignments` in consignments. [See 32](https://github.com/opentripmodel/otm5-change-requests/issues/32).\n* Support UNCode and GLN in locations. [See 36](https://github.com/opentripmodel/otm5-change-requests/issues/36).\n* Support `temperatureConstraint` as a possible constraint type. [See 37](https://github.com/opentripmodel/otm5-change-requests/issues/37).\n* Add some references to existing code lists. [See 27](https://github.com/opentripmodel/otm5-change-requests/issues/27).\n    - Using ISO country codes in the country field in addresses.\n    - Using ISO currency codes in 'value-with-unit' fields.\n    - Using the metric system as recommend and default system for dealing with mass, velocity, weight and sizes.\n    - Using the package material codes from the GS1 standard.\n\n**Version 5.2 (released on 2021-09-09)**\n\n* _Add `transportEquipmentSubType` for example to indicate what type of pallets you use. [See 19](https://github.com/opentripmodel/otm5-change-requests/issues/19).\n* _Add `timeWindowConstraint` to replace `startDateTimeConstraint` and `endDateTimeConstraint`. [See 6](https://github.com/opentripmodel/otm5-change-requests/issues/6).\n* _Add `operationalBase` as a location type. [See 22](https://github.com/opentripmodel/otm5-change-requests/issues/22).\n* _Add more actor role types. [See 20](https://github.com/opentripmodel/otm5-change-requests/issues/20).\n* _Add new break and wait actions. [See 17](https://github.com/opentripmodel/otm5-change-requests/issues/17).\n* _Allow for server side UUID generation. [See 16](https://github.com/opentripmodel/otm5-change-requests/issues/16).\n\n**Version 5.1 (released on 2021-06-01)**\n\n* Add an optional `emission` to Vehicle. [See 13](https://github.com/opentripmodel/otm5-change-requests/issues/13).\n* Add an optional `transportMode` to Trip and Move. [See 12](https://github.com/opentripmodel/otm5-change-requests/issues/12).\n* Add optional `grossWeight` to Goods. [See 11](https://github.com/opentripmodel/otm5-change-requests/issues/11).\n* Add`mobilePhone` as contact detail option. [See 5](https://github.com/opentripmodel/otm5-change-requests/issues/5).\n* Add an optional `lastModified` field to each entity. [See 2](https://github.com/opentripmodel/otm5-change-requests/issues/2).\n* Add an optional language to contact details. [See 9](https://github.com/opentripmodel/otm5-change-requests/issues/9).\n* 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).\n* Add new statuses to Trip and Consignment. [See 4](https://github.com/opentripmodel/otm5-change-requests/issues/4).\n* Add an optional sensors association to vehicle. [See 2](https://github.com/opentripmodel/otm5-change-requests/issues/2).\n\n**Version 5.0 (only documentation changes)**\n\n* Add documentation about validation endpoints.\n* Add reference to the otm5-change-requests github.\n* Fix the broken checkbox for actions when choosing the `Stop` action.\n* Document the license plate on a `TransportEquipment` (i.e. a trailer).\n"
  },
  "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\nare various types of vehicles, each with their own unique properties like size, dimensions, fuel type and means\nof 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\n`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,\n or to address an OpenTripModel message to a specific person or organisation.\n"
    },
    {
      "name": "Consignment",
      "description": "A consignment is a description of an identifiable collection of goods items to be transported between the consignor\nand 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\none or multiple actions on each location, such as loading or unloading consignments. It is optionally coupled to a\n`Vehicle` that is/was driving this trip.\n"
    },
    {
      "name": "Event",
      "description": "Events - like actions - model _dynamic_ entities that couple various _static_ entities at a certain moment in\n time. Events are used for either real-time updates, or updates on earlier provided data. Notice that in both\n event types these are _updates_ on earlier provided data, whereas actions are usually used together with the\n entities they dynamically couple.\n\n There are various kinds of events that fall into the two earlier mentioned kinds.\n\n **Real-time updates**:\n - The **LocationUpdateEvent** that provides location data received from some GPS.\n - The **SensorUpdateEvent** that provides sensor value updates (such as temperature or speed measurements) received from a sensor.\n - The **StartMovingEvent**, **StopMovingEvent**, **StartEngineEvent**, **StopEngineEvent** that indicate events provided by Fleet Management Systems.\n\n**Both real-time and projected/realized events**\n- The **EmissionEvent** that contains information about how much emission has been produced during a move / on a trip / per consignment.\n  Can be provided as an actual value, projected based on some calculation, or realized as measured by some sensor.\n- The **FuelConsumedEvent** that contains information about how much fuel was consumed during a move / on a trip / per consignment.\n  Can be provided as an actual value, projected based on some calculation, or realized as measured by some sensor.\n\n**Updates on earlier provided data**:\n - The **UpdateEvent** that is used to update an earlier provided entity with new information. Note that only the changed data has to be provided.\n - 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\n time. For instance a Load action couples together a Consignment and a Vehicle at the moment the Loading happens.\n\n There are various types of Actions:\n - The **Stop** that models visiting a certain location at a certain time and potentially doing several other actions at that location.\n - The **Load** action, that models loading in one or multiple Consignments into a vehicle or some sort of container.\n - The **Unload** action, that models unloading one or multiple Consignments from a vehicle or some other sort of container.\n - The **HandOver** that indicates transferring a consignment from one Actor to another.\n - The **Move** that models moving between two or more locations, potentially with detailed route information on _how_ to move between these locations.\n - The **AttachTransportEquipment** that allows you to attach some equipment to the associated vehicle. Note that you can both\n   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.\n - The **DetachTransportEquipment** that allows you to detach some previously attached equipment from the associated vehicle.\n - The **Break** action that models a mandatory resting period for the driver of the vehicle. During this period\n   the driver is prohibited from doing any driving activities or other work.\n - The **Wait** action that models waiting at a particular location during the trip. This can be due to various\n   circumstances such as waiting for the vehicle to be transported by a ferry or train. Or because of waiting at\n   frontiers or docks (e.g. the dock of the loading/unload location is occupied) or traffic prohibitions. The\n   driver is allowed to leave the vehicle during this period. An important aspect distinguishing this from the\n   _break_ action is that waiting times can be shortened because of changing circumstances. For example, if the\n   original waiting time was expected to be 15 minutes because of an occupied dock, but the driver is 10 minutes\n   late, the waiting time can be shortened to 5 minutes until the dock is free.\n - 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\n of goods, depending on the use case and the level of detail. Goods either consists of items, describing the\n actual goods to be transported. Or a transport equipment, which is equipment used to carry the actual goods to\n be transported. Transport equipment is (usually) a means to an end, not something that needs to be transported\n on itself, such as pallets.\n\n Note that goods can either be or contain dangerous goods. OTM uses the official specification of\n [ADR](https://unece.org/transportdangerous-goods/adr-2021-files) to describe in what manner and how dangerous\n those goods are. The used descriptions in the OTM documentation are extracted from document\n [ADR2021_Vol1e_0.pdf](https://unece.org/sites/default/files/2021-01/ADR2021_Vol1e_0.pdf). The official\n 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\nseparately, but need to be administered together. For consistency, even if there is only one consignment,\nit 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\npurposes, such as proving some package was delivered with help of a photo, or some scanned document that\nestablishes that the transferred goods are accepted on handover. Documents in OTM come in two flavors, either\nyou provide the content of the document directly as a base64 encoded string, or you provide a link to the\ndocument where it can be accessed online.\n"
    },
    {
      "name": "Constraint",
      "description": " `Constraints` can do different things, depending on the context they're used in:\n  - In the context of a `Location`, access to the location is only allowed if the given constraint applies.\n  - 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\n    a refrigerated trailer has to stay below a given maximum during the trip.\n  - In the context of a `Shipment`, constraints can be used to e.g. define minimum or maximum temperatures for shipments, or date time\n    constraints for delivery.\n\nSince OTM5.2 the _timeWindowConstraint_ is supported which allows you to give (optionally) both the start and end\ntime of the window between which something needs to occur. This replaces the old style where you had to use an _and_\nconstraint in combination with the _startDateTimeConstraint_ and _endDateTimeConstraint_. Since the new solution\nis shorter and simpler the _startDateTimeConstraint_ and _endDateTimeConstraint_ are **deprecated**.\n\nNote that constraints can be nested and combined using the `andConstraint`, `orConstraint` and `notConstraint`.\n"
    }
  ],
  "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
                      "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
                      "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
                    "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n maintained by United Nations Economic Commission for Europe (UNECE) to uniquely identify locations. See\n [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\n 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\na 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.\n\n> **ℹ 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n maintained by United Nations Economic Commission for Europe (UNECE) to uniquely identify locations. See\n [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\n 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\na 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.\n\n> **ℹ 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n maintained by United Nations Economic Commission for Europe (UNECE) to uniquely identify locations. See\n [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\n 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\na 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.\n\n> **ℹ 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
                      "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
                      "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
                    "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\ncompartments with different temperatures, where each compartment has its own sensor. The `placement` member can be used to identify where\na sensor is placed. Parties using OpenTripModel to exchange sensor data may wish to agree on a standardized naming, but this is too\nspecific 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\nwhich the measured value must be within certain bounds at all times.\n\n> **ℹ Note** that constraints can be nested and combined using the `andConstraint`, `orConstraint` and `notConstraint`.\n",
                      "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\ncompartments with different temperatures, where each compartment has its own sensor. The `placement` member can be used to identify where\na sensor is placed. Parties using OpenTripModel to exchange sensor data may wish to agree on a standardized naming, but this is too\nspecific 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\nwhich the measured value must be within certain bounds at all times.\n\n> **ℹ Note** that constraints can be nested and combined using the `andConstraint`, `orConstraint` and `notConstraint`.\n",
                      "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\ncompartments with different temperatures, where each compartment has its own sensor. The `placement` member can be used to identify where\na sensor is placed. Parties using OpenTripModel to exchange sensor data may wish to agree on a standardized naming, but this is too\nspecific 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\nwhich the measured value must be within certain bounds at all times.\n\n> **ℹ Note** that constraints can be nested and combined using the `andConstraint`, `orConstraint` and `notConstraint`.\n",
                    "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n(replaced by confirmed) and modified (replaced the lastModified field on every entity) are deprecated since\nOTM5.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\nvehicle, special instructions related to consignor and consignee. Note that you can put the constraints on the\nindividual goods. However using constraints on the consignment is simpler and therefore recommended when\npossible.",
                      "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\ncancelled and replaced by one or more other consignments. An example is that the consignment is too large\nto be transported as a single 'transportable unit'. You can use the `relation` field in the association to\nindicate 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n(replaced by confirmed) and modified (replaced the lastModified field on every entity) are deprecated since\nOTM5.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\nvehicle, special instructions related to consignor and consignee. Note that you can put the constraints on the\nindividual goods. However using constraints on the consignment is simpler and therefore recommended when\npossible.",
                      "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\ncancelled and replaced by one or more other consignments. An example is that the consignment is too large\nto be transported as a single 'transportable unit'. You can use the `relation` field in the association to\nindicate 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n(replaced by confirmed) and modified (replaced the lastModified field on every entity) are deprecated since\nOTM5.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\nvehicle, special instructions related to consignor and consignee. Note that you can put the constraints on the\nindividual goods. However using constraints on the consignment is simpler and therefore recommended when\npossible.",
                    "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\ncancelled and replaced by one or more other consignments. An example is that the consignment is too large\nto be transported as a single 'transportable unit'. You can use the `relation` field in the association to\nindicate 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
                      "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
                      "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
                    "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n(replaced by confirmed) and modified (replaced the lastModified field on every entity) are deprecated since\nOTM5.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\ninland waterway), a truck/car/van/bike/etc. (road), using the train (rail), or using a plane (air). These\nvalues are based on the\n[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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n(replaced by confirmed) and modified (replaced the lastModified field on every entity) are deprecated since\nOTM5.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\ninland waterway), a truck/car/van/bike/etc. (road), using the train (rail), or using a plane (air). These\nvalues are based on the\n[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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n(replaced by confirmed) and modified (replaced the lastModified field on every entity) are deprecated since\nOTM5.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\ninland waterway), a truck/car/van/bike/etc. (road), using the train (rail), or using a plane (air). These\nvalues are based on the\n[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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nEuropean Union and EEA member states. The standards are defined in a series of European Union directives\nstaging the progressive introduction of increasingly stringent standards. See also\n[European emission standards - Wikipedia](https://en.wikipedia.org/wiki/European_emission_standards#Emission_standards_for_trucks_and_buses).\n",
                      "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:\n\n- The `Vehicle` might be split up in multiple compartments.\n- 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.\n",
                      "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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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.\n If one works with detachable sensors the recommend approach is to use associationCreated and\n 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nEuropean Union and EEA member states. The standards are defined in a series of European Union directives\nstaging the progressive introduction of increasingly stringent standards. See also\n[European emission standards - Wikipedia](https://en.wikipedia.org/wiki/European_emission_standards#Emission_standards_for_trucks_and_buses).\n",
                      "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:\n\n- The `Vehicle` might be split up in multiple compartments.\n- 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.\n",
                      "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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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.\n If one works with detachable sensors the recommend approach is to use associationCreated and\n 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nEuropean Union and EEA member states. The standards are defined in a series of European Union directives\nstaging the progressive introduction of increasingly stringent standards. See also\n[European emission standards - Wikipedia](https://en.wikipedia.org/wiki/European_emission_standards#Emission_standards_for_trucks_and_buses).\n",
                    "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:\n\n- The `Vehicle` might be split up in multiple compartments.\n- 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.\n",
                    "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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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.\n If one works with detachable sensors the recommend approach is to use associationCreated and\n 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\nan 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
                      "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\nan 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
                      "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\nan 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
                    "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\nto 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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:\n\n- **Carrier**: the actor which is responsible for physically delivering the goods from one place to another. Note\n  that the actual transport can be delegated to another party (subcontractor), but the carrier remains responsible.\n- **Shipper**: the actor that engages in shipping goods and is the main contractor, ensuring the shipment takes place.\n- **Consignee**: the actor that is the buyer of the goods.\n- **Consignor**: the actor that sells the goods.\n- **Receiver**: the actor that receives the goods.\n- **Driver**: the actor that drives the vehicle containing the goods.\n- **Subcontractor**: The actor actually carrying out the physical delivery of the goods.\n- **Owner**: The actor owning the associated entity, e.g. the owner of a location or vehicle.\n\n**How these are related**\nThe _consignee_ requires goods from the _consignor_. The _shipper_ is the party responsible for\nensuring this shipment takes place. The _carrier_ is the one responsible for transporting the goods, and ensures\nthey are delivered to the _receiver_. If required/desired, the carrier can delegate the actual delivery to\nanother party, the _subcontractor_. A _driver_ is an actual person driving the vehicle. Note that a single\nactor can have multiple roles, for instance, an actor can be the shipper and consignor at the same time. Also\nnote that there might be an actor that does not fit any of these roles. Then the roles may be left empty. However\nif 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:\n\n- **Carrier**: the actor which is responsible for physically delivering the goods from one place to another. Note\n  that the actual transport can be delegated to another party (subcontractor), but the carrier remains responsible.\n- **Shipper**: the actor that engages in shipping goods and is the main contractor, ensuring the shipment takes place.\n- **Consignee**: the actor that is the buyer of the goods.\n- **Consignor**: the actor that sells the goods.\n- **Receiver**: the actor that receives the goods.\n- **Driver**: the actor that drives the vehicle containing the goods.\n- **Subcontractor**: The actor actually carrying out the physical delivery of the goods.\n- **Owner**: The actor owning the associated entity, e.g. the owner of a location or vehicle.\n\n**How these are related**\nThe _consignee_ requires goods from the _consignor_. The _shipper_ is the party responsible for\nensuring this shipment takes place. The _carrier_ is the one responsible for transporting the goods, and ensures\nthey are delivered to the _receiver_. If required/desired, the carrier can delegate the actual delivery to\nanother party, the _subcontractor_. A _driver_ is an actual person driving the vehicle. Note that a single\nactor can have multiple roles, for instance, an actor can be the shipper and consignor at the same time. Also\nnote that there might be an actor that does not fit any of these roles. Then the roles may be left empty. However\nif 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:\n\n- **Carrier**: the actor which is responsible for physically delivering the goods from one place to another. Note\n  that the actual transport can be delegated to another party (subcontractor), but the carrier remains responsible.\n- **Shipper**: the actor that engages in shipping goods and is the main contractor, ensuring the shipment takes place.\n- **Consignee**: the actor that is the buyer of the goods.\n- **Consignor**: the actor that sells the goods.\n- **Receiver**: the actor that receives the goods.\n- **Driver**: the actor that drives the vehicle containing the goods.\n- **Subcontractor**: The actor actually carrying out the physical delivery of the goods.\n- **Owner**: The actor owning the associated entity, e.g. the owner of a location or vehicle.\n\n**How these are related**\nThe _consignee_ requires goods from the _consignor_. The _shipper_ is the party responsible for\nensuring this shipment takes place. The _carrier_ is the one responsible for transporting the goods, and ensures\nthey are delivered to the _receiver_. If required/desired, the carrier can delegate the actual delivery to\nanother party, the _subcontractor_. A _driver_ is an actual person driving the vehicle. Note that a single\nactor can have multiple roles, for instance, an actor can be the shipper and consignor at the same time. Also\nnote that there might be an actor that does not fit any of these roles. Then the roles may be left empty. However\nif 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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.\n 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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.\n 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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)\n[properties](https://tools.ietf.org/html/rfc7946#section-3.1). Please don't overuse this, since most relevant propeties are probably\nalready 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\nunderlying 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\nthe 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\nall 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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:\n  - `maximum`: All sensor values below and including the maximum value are allowed.\n  - `minimum`: All sensor values above and including the minimum value are allowed.\n",
            "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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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:\n  - `maximum`: All sensor values below and including the maximum value are allowed.\n  - `minimum`: All sensor values above and including the minimum value are allowed.\n",
            "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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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:\n  - `maximum`: All speeds below and including the maximum value are allowed.\n  - `minimum`: All speeds above and including the minimum value are allowed.\n",
            "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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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:\n  - `maximum`: All weights below and including the maximum value are allowed.\n  - `minimum`: All weights above and including the minimum value are allowed.\n  - `range`: All weights in between and including the minimum and maximum values are allowed.\n",
            "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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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:\n  - `maximum`: All sizes below and including the maximum value are allowed.\n  - `minimum`: All sizes above and including the minimum value are allowed.\n  - `range`: All sizes in between and including the minimum and maximum values are allowed.\n",
            "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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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:\n  - `maximum`: All temperatures below and including the maximum value are allowed.\n  - `minimum`: All temperatures above and including the minimum value are allowed.\n  - `range`: All temperatures in between and including the minimum and maximum values are allowed.\n",
            "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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n maintained by United Nations Economic Commission for Europe (UNECE) to uniquely identify locations. See\n [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\n 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\na 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.\n\n> **ℹ 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\ncompartments with different temperatures, where each compartment has its own sensor. The `placement` member can be used to identify where\na sensor is placed. Parties using OpenTripModel to exchange sensor data may wish to agree on a standardized naming, but this is too\nspecific 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\nwhich the measured value must be within certain bounds at all times.\n\n> **ℹ Note** that constraints can be nested and combined using the `andConstraint`, `orConstraint` and `notConstraint`.\n",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nEuropean Union and EEA member states. The standards are defined in a series of European Union directives\nstaging the progressive introduction of increasingly stringent standards. See also\n[European emission standards - Wikipedia](https://en.wikipedia.org/wiki/European_emission_standards#Emission_standards_for_trucks_and_buses).\n",
            "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:\n\n- The `Vehicle` might be split up in multiple compartments.\n- 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.\n",
            "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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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.\n If one works with detachable sensors the recommend approach is to use associationCreated and\n 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n(replaced by confirmed) and modified (replaced the lastModified field on every entity) are deprecated since\nOTM5.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\ninland waterway), a truck/car/van/bike/etc. (road), using the train (rail), or using a plane (air). These\nvalues are based on the\n[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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\ncompartments with different temperatures, where each compartment has its own sensor. The `placement` member can be used to identify where\na sensor is placed. Parties using OpenTripModel to exchange sensor data may wish to agree on a standardized naming, but this is too\nspecific 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\nwhich the measured value must be within certain bounds at all times.\n\n> **ℹ Note** that constraints can be nested and combined using the `andConstraint`, `orConstraint` and `notConstraint`.\n",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n maintained by United Nations Economic Commission for Europe (UNECE) to uniquely identify locations. See\n [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\n 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\na 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.\n\n> **ℹ 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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 \nfor 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\nwith 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nwith 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nwith 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nit 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nit 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\n(such as explosives, flammable liquids, oxidizers, toxic liquids, etc.) in the framework of international\ntransport. The list of UN numbers can be found in the\n[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\nbeen assigned its own specific UN number, or otherwise the proper shipping name shall be used. See 3.1.2 for\nfurther details",
                "type": "string"
              },
              "technicalName": {
                "description": "The technical name which shall supplement the proper shipping name shall be the ISO common name. A\nrecognized chemical name, if relevant a biological name, or other name currently used in scientific and\ntechnical handbooks, journals and texts. (see 3.1.2.8.1.1 in\n[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\n[ADR2021_Vol1e_0.pdf](https://unece.org/sites/default/files/2021-01/ADR2021_Vol1e_0.pdf) that have to be\naffixed 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\ndangerous goods according to ADR are the following:\n\n- Class 1 Explosive substances and articles\n- Class 2 Gases\n- Class 3 Flammable liquids\n- Class 4.1 Flammable solids, self reactive substances, polymerizing substances and solid desensitized\n  explosives\n- Class 4.2 Substances liable to spontaneous combustion\n- Class 4.3 Substances which, in contact with water, emit flammable gases\n- Class 5.1 Oxidizing substances\n- Class 5.2 Organic peroxides\n- Class6.1 Toxic substances\n- Class 6.2 Infectious substances\n- Class 7 Radioactive material\n- Class 8 Corrosive substances\n- 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\nand 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\nwith 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.\nCategories A.B.C.D. and E as defined in 1.9.5.2.2.\n[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,\nFrench or German, in English, French or German, unless agreements, if any, concluded between the countries\nconcerned 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\n[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\nmore dangerous the goods are. The method for calculating ADR points can be found\n[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\n[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\nlines. For example whenever the product consists of multiple components that can each be classified. The most\nimportant 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\ncode 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 \nfor 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\nwith 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nwith 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nwith 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nit 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nit 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\n[change request](https://github.com/opentripmodel/otm5-change-requests/issues) so that they can be properly\nincorporated 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\nshould only put constraints on the goods themselves when it is important to distinguish goods within one\nconsignment with different requirements. Individual constraints on a goods are powerful, but also complicate\nthe 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\nmultiple 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\ncarrying. You can calculate the total net weight of all transport equipments by taking the quantity and\nmultiplying 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\ncarrying. You can calculate the total gross weight of all transport equipments by taking the quantity and\nmultiplying 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nwith 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nit 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nit 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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.\n 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nEUR6. OTM5 does not currently enforce the use of valid sub-types for any transport equipment type, but recommends using the\nstandards 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\nlines. For example whenever the product consists of multiple components that can each be classified. The most\nimportant 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\ncode 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 \nfor 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\nwith 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nwith 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nwith 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nit 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nit 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\n[change request](https://github.com/opentripmodel/otm5-change-requests/issues) so that they can be properly\nincorporated 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\nshould only put constraints on the goods themselves when it is important to distinguish goods within one\nconsignment with different requirements. Individual constraints on a goods are powerful, but also complicate\nthe 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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:\n * **split**: when the consignment is split into multiple sub-consignments, for example because the contents were too large for single transport.\n * **postponed**: when the consignment could not be delivered correctly.\n\nNote that the relation only goes from previous consignment to new consignment and not vice-versa. See also the\n`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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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:\n\n- **Carrier**: the actor which is responsible for physically delivering the goods from one place to another. Note\n  that the actual transport can be delegated to another party (subcontractor), but the carrier remains responsible.\n- **Shipper**: the actor that engages in shipping goods and is the main contractor, ensuring the shipment takes place.\n- **Consignee**: the actor that is the buyer of the goods.\n- **Consignor**: the actor that sells the goods.\n- **Receiver**: the actor that receives the goods.\n- **Driver**: the actor that drives the vehicle containing the goods.\n- **Subcontractor**: The actor actually carrying out the physical delivery of the goods.\n- **Owner**: The actor owning the associated entity, e.g. the owner of a location or vehicle.\n\n**How these are related**\nThe _consignee_ requires goods from the _consignor_. The _shipper_ is the party responsible for\nensuring this shipment takes place. The _carrier_ is the one responsible for transporting the goods, and ensures\nthey are delivered to the _receiver_. If required/desired, the carrier can delegate the actual delivery to\nanother party, the _subcontractor_. A _driver_ is an actual person driving the vehicle. Note that a single\nactor can have multiple roles, for instance, an actor can be the shipper and consignor at the same time. Also\nnote that there might be an actor that does not fit any of these roles. Then the roles may be left empty. However\nif 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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:\n\n- **Carrier**: the actor which is responsible for physically delivering the goods from one place to another. Note\n  that the actual transport can be delegated to another party (subcontractor), but the carrier remains responsible.\n- **Shipper**: the actor that engages in shipping goods and is the main contractor, ensuring the shipment takes place.\n- **Consignee**: the actor that is the buyer of the goods.\n- **Consignor**: the actor that sells the goods.\n- **Receiver**: the actor that receives the goods.\n- **Driver**: the actor that drives the vehicle containing the goods.\n- **Subcontractor**: The actor actually carrying out the physical delivery of the goods.\n- **Owner**: The actor owning the associated entity, e.g. the owner of a location or vehicle.\n\n**How these are related**\nThe _consignee_ requires goods from the _consignor_. The _shipper_ is the party responsible for\nensuring this shipment takes place. The _carrier_ is the one responsible for transporting the goods, and ensures\nthey are delivered to the _receiver_. If required/desired, the carrier can delegate the actual delivery to\nanother party, the _subcontractor_. A _driver_ is an actual person driving the vehicle. Note that a single\nactor can have multiple roles, for instance, an actor can be the shipper and consignor at the same time. Also\nnote that there might be an actor that does not fit any of these roles. Then the roles may be left empty. However\nif 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\nan 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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:\n * **split**: when the consignment is split into multiple sub-consignments, for example because the contents were too large for single transport.\n * **postponed**: when the consignment could not be delivered correctly.\n\nNote that the relation only goes from previous consignment to new consignment and not vice-versa. See also the\n`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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n(replaced by confirmed) and modified (replaced the lastModified field on every entity) are deprecated since\nOTM5.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\nvehicle, special instructions related to consignor and consignee. Note that you can put the constraints on the\nindividual goods. However using constraints on the consignment is simpler and therefore recommended when\npossible.",
            "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\ncancelled and replaced by one or more other consignments. An example is that the consignment is too large\nto be transported as a single 'transportable unit'. You can use the `relation` field in the association to\nindicate 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n(replaced by confirmed) and modified (replaced the lastModified field on every entity) are deprecated since\nOTM5.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\nvehicle, special instructions related to consignor and consignee. Note that you can put the constraints on the\nindividual goods. However using constraints on the consignment is simpler and therefore recommended when\npossible.",
            "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\ncancelled and replaced by one or more other consignments. An example is that the consignment is too large\nto be transported as a single 'transportable unit'. You can use the `relation` field in the association to\nindicate 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n(replaced by confirmed) and modified (replaced the lastModified field on every entity) are deprecated since\nOTM5.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\nvehicle, special instructions related to consignor and consignee. Note that you can put the constraints on the\nindividual goods. However using constraints on the consignment is simpler and therefore recommended when\npossible.",
            "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\ncancelled and replaced by one or more other consignments. An example is that the consignment is too large\nto be transported as a single 'transportable unit'. You can use the `relation` field in the association to\nindicate 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nEuropean Union and EEA member states. The standards are defined in a series of European Union directives\nstaging the progressive introduction of increasingly stringent standards. See also\n[European emission standards - Wikipedia](https://en.wikipedia.org/wiki/European_emission_standards#Emission_standards_for_trucks_and_buses).\n",
            "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:\n\n- The `Vehicle` might be split up in multiple compartments.\n- 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.\n",
            "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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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.\n If one works with detachable sensors the recommend approach is to use associationCreated and\n 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\nan 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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.\nSupported reasons are:\n  * damage\n    The package was damaged during transit and cannot be delivered.\n  * deliveredElsewhere\n    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.\n  * deliveredToWrongReceiver\n    The package was delivered to the wrong recipient and is no longer available.\n  * inaccessibleAddress\n    The delivery address is temporarily unreachable (e.g., due to roadworks, severe weather, or emergencies).\n  * incomplete\n    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.\n  * invalidAddress\n    The specified address is incorrect or does not exist.\n  * invalidShippingLabel\n    The shipping label contains incorrect or unreadable information.\n  * receiverAbsent\n    The recipient was not present at the time of delivery.\n  * rejectedByReceiver\n    The recipient refused to accept the package.\n  * other\n    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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n(replaced by confirmed) and modified (replaced the lastModified field on every entity) are deprecated since\nOTM5.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\nvehicle, special instructions related to consignor and consignee. Note that you can put the constraints on the\nindividual goods. However using constraints on the consignment is simpler and therefore recommended when\npossible.",
            "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\ncancelled and replaced by one or more other consignments. An example is that the consignment is too large\nto be transported as a single 'transportable unit'. You can use the `relation` field in the association to\nindicate 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:\n * **split**: when the consignment is split into multiple sub-consignments, for example because the contents were too large for single transport.\n * **postponed**: when the consignment could not be delivered correctly.\n\nNote that the relation only goes from previous consignment to new consignment and not vice-versa. See also the\n`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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\nmultiple 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\ncarrying. You can calculate the total net weight of all transport equipments by taking the quantity and\nmultiplying 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\ncarrying. You can calculate the total gross weight of all transport equipments by taking the quantity and\nmultiplying 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nwith 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nit 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nit 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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.\n 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nEUR6. OTM5 does not currently enforce the use of valid sub-types for any transport equipment type, but recommends using the\nstandards 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\nlines. For example whenever the product consists of multiple components that can each be classified. The most\nimportant 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\ncode 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 \nfor 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\nwith 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nwith 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nwith 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nit 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\nit 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\n[change request](https://github.com/opentripmodel/otm5-change-requests/issues) so that they can be properly\nincorporated 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\nshould only put constraints on the goods themselves when it is important to distinguish goods within one\nconsignment with different requirements. Individual constraints on a goods are powerful, but also complicate\nthe 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n maintained by United Nations Economic Commission for Europe (UNECE) to uniquely identify locations. See\n [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\n 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\na 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.\n\n> **ℹ 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\nrequired 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\ndiffers from the remark on an action, which is a remark that is relevant before the execution of the action. Whereas\nthis 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\nrecurrence follows the [Recurrence Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)\nspecification",
            "type": "string",
            "format": "recurrence"
          },
          "duration": {
            "description": "The duration of this action/event, should only be set when `timeFormat` is set to `duration`. The\nduration follows the [ISO 8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)\nspecification",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\nrequired 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\ndiffers from the remark on an action, which is a remark that is relevant before the execution of the action. Whereas\nthis 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\nrecurrence follows the [Recurrence Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)\nspecification",
            "type": "string",
            "format": "recurrence"
          },
          "duration": {
            "description": "The duration of this action/event, should only be set when `timeFormat` is set to `duration`. The\nduration follows the [ISO 8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)\nspecification",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n(replaced by confirmed) and modified (replaced the lastModified field on every entity) are deprecated since\nOTM5.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\ninland waterway), a truck/car/van/bike/etc. (road), using the train (rail), or using a plane (air). These\nvalues are based on the\n[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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n maintained by United Nations Economic Commission for Europe (UNECE) to uniquely identify locations. See\n [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\n 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\na 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.\n\n> **ℹ 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\nrequired 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\ndiffers from the remark on an action, which is a remark that is relevant before the execution of the action. Whereas\nthis 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\nrecurrence follows the [Recurrence Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)\nspecification",
            "type": "string",
            "format": "recurrence"
          },
          "duration": {
            "description": "The duration of this action/event, should only be set when `timeFormat` is set to `duration`. The\nduration follows the [ISO 8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)\nspecification",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n maintained by United Nations Economic Commission for Europe (UNECE) to uniquely identify locations. See\n [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\n 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\na 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.\n\n> **ℹ 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n maintained by United Nations Economic Commission for Europe (UNECE) to uniquely identify locations. See\n [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\n 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\na 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.\n\n> **ℹ 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your benefit.\nIf 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\nrequired 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\ndiffers from the remark on an action, which is a remark that is relevant before the execution of the action. Whereas\nthis 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\ninland waterway), a truck/car/van/bike/etc. (road), using the train (rail), or using a plane (air). These\nvalues are based on the\n[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\nrecurrence follows the [Recurrence Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)\nspecification",
            "type": "string",
            "format": "recurrence"
          },
          "duration": {
            "description": "The duration of this action/event, should only be set when `timeFormat` is set to `duration`. The\nduration follows the [ISO 8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)\nspecification",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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:\n\n- **Carrier**: the actor which is responsible for physically delivering the goods from one place to another. Note\n  that the actual transport can be delegated to another party (subcontractor), but the carrier remains responsible.\n- **Shipper**: the actor that engages in shipping goods and is the main contractor, ensuring the shipment takes place.\n- **Consignee**: the actor that is the buyer of the goods.\n- **Consignor**: the actor that sells the goods.\n- **Receiver**: the actor that receives the goods.\n- **Driver**: the actor that drives the vehicle containing the goods.\n- **Subcontractor**: The actor actually carrying out the physical delivery of the goods.\n- **Owner**: The actor owning the associated entity, e.g. the owner of a location or vehicle.\n\n**How these are related**\nThe _consignee_ requires goods from the _consignor_. The _shipper_ is the party responsible for\nensuring this shipment takes place. The _carrier_ is the one responsible for transporting the goods, and ensures\nthey are delivered to the _receiver_. If required/desired, the carrier can delegate the actual delivery to\nanother party, the _subcontractor_. A _driver_ is an actual person driving the vehicle. Note that a single\nactor can have multiple roles, for instance, an actor can be the shipper and consignor at the same time. Also\nnote that there might be an actor that does not fit any of these roles. Then the roles may be left empty. However\nif 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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:\n\n- **Carrier**: the actor which is responsible for physically delivering the goods from one place to another. Note\n  that the actual transport can be delegated to another party (subcontractor), but the carrier remains responsible.\n- **Shipper**: the actor that engages in shipping goods and is the main contractor, ensuring the shipment takes place.\n- **Consignee**: the actor that is the buyer of the goods.\n- **Consignor**: the actor that sells the goods.\n- **Receiver**: the actor that receives the goods.\n- **Driver**: the actor that drives the vehicle containing the goods.\n- **Subcontractor**: The actor actually carrying out the physical delivery of the goods.\n- **Owner**: The actor owning the associated entity, e.g. the owner of a location or vehicle.\n\n**How these are related**\nThe _consignee_ requires goods from the _consignor_. The _shipper_ is the party responsible for\nensuring this shipment takes place. The _carrier_ is the one responsible for transporting the goods, and ensures\nthey are delivered to the _receiver_. If required/desired, the carrier can delegate the actual delivery to\nanother party, the _subcontractor_. A _driver_ is an actual person driving the vehicle. Note that a single\nactor can have multiple roles, for instance, an actor can be the shipper and consignor at the same time. Also\nnote that there might be an actor that does not fit any of these roles. Then the roles may be left empty. However\nif 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n maintained by United Nations Economic Commission for Europe (UNECE) to uniquely identify locations. See\n [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\n 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\na 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.\n\n> **ℹ 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\nrequired 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\ndiffers from the remark on an action, which is a remark that is relevant before the execution of the action. Whereas\nthis 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\nrecurrence follows the [Recurrence Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)\nspecification",
            "type": "string",
            "format": "recurrence"
          },
          "duration": {
            "description": "The duration of this action/event, should only be set when `timeFormat` is set to `duration`. The\nduration follows the [ISO 8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)\nspecification",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\nrequired 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\ndiffers from the remark on an action, which is a remark that is relevant before the execution of the action. Whereas\nthis 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\nrecurrence follows the [Recurrence Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)\nspecification",
            "type": "string",
            "format": "recurrence"
          },
          "duration": {
            "description": "The duration of this action/event, should only be set when `timeFormat` is set to `duration`. The\nduration follows the [ISO 8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)\nspecification",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\nrequired 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\ndiffers from the remark on an action, which is a remark that is relevant before the execution of the action. Whereas\nthis 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\nrecurrence follows the [Recurrence Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)\nspecification",
            "type": "string",
            "format": "recurrence"
          },
          "duration": {
            "description": "The duration of this action/event, should only be set when `timeFormat` is set to `duration`. The\nduration follows the [ISO 8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)\nspecification",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\nrequired 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\ndiffers from the remark on an action, which is a remark that is relevant before the execution of the action. Whereas\nthis 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\nrecurrence follows the [Recurrence Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)\nspecification",
            "type": "string",
            "format": "recurrence"
          },
          "duration": {
            "description": "The duration of this action/event, should only be set when `timeFormat` is set to `duration`. The\nduration follows the [ISO 8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)\nspecification",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\nrequired 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\ndiffers from the remark on an action, which is a remark that is relevant before the execution of the action. Whereas\nthis 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\nrecurrence follows the [Recurrence Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)\nspecification",
            "type": "string",
            "format": "recurrence"
          },
          "duration": {
            "description": "The duration of this action/event, should only be set when `timeFormat` is set to `duration`. The\nduration follows the [ISO 8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)\nspecification",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\nrequired 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\ndiffers from the remark on an action, which is a remark that is relevant before the execution of the action. Whereas\nthis 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\nrecurrence follows the [Recurrence Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)\nspecification",
            "type": "string",
            "format": "recurrence"
          },
          "duration": {
            "description": "The duration of this action/event, should only be set when `timeFormat` is set to `duration`. The\nduration follows the [ISO 8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)\nspecification",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\nrequired 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\ndiffers from the remark on an action, which is a remark that is relevant before the execution of the action. Whereas\nthis 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\ninland waterway), a truck/car/van/bike/etc. (road), using the train (rail), or using a plane (air). These\nvalues are based on the\n[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\nrecurrence follows the [Recurrence Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)\nspecification",
            "type": "string",
            "format": "recurrence"
          },
          "duration": {
            "description": "The duration of this action/event, should only be set when `timeFormat` is set to `duration`. The\nduration follows the [ISO 8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)\nspecification",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\nrequired 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\ndiffers from the remark on an action, which is a remark that is relevant before the execution of the action. Whereas\nthis 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\nrecurrence follows the [Recurrence Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)\nspecification",
            "type": "string",
            "format": "recurrence"
          },
          "duration": {
            "description": "The duration of this action/event, should only be set when `timeFormat` is set to `duration`. The\nduration follows the [ISO 8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)\nspecification",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\ncompartments with different temperatures, where each compartment has its own sensor. The `placement` member can be used to identify where\na sensor is placed. Parties using OpenTripModel to exchange sensor data may wish to agree on a standardized naming, but this is too\nspecific 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\nwhich the measured value must be within certain bounds at all times.\n\n> **ℹ Note** that constraints can be nested and combined using the `andConstraint`, `orConstraint` and `notConstraint`.\n",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\nany unit necessary. However to ensure parties use OTM5 consistently there are a few rules:\n* For **currencies** use the [ISO_4217 standard](https://en.wikipedia.org/wiki/ISO_4217)\n* For **mass**, **volume** and **length** the [SI system (International System of Units)](https://en.wikipedia.org/wiki/International_System_of_Units) is\n  recommended. To avoid problems with symbols, square and cubic units of measure are simply communicated using the\n  proper number. Thus a square meter is `m2` and a cubic meter is `m3`.\n* For degrees the recommend approach is Celsius, but Fahrenheit and Kelvin are also supported. To again avoid\n  problems with symbols, the degree symbol (° in °C) is left off, thus only the single capital letter remains\n  (C, F, or K).\n* For velocity use the metric system. The required format would then be \\<length\\>/\\<time unit\\> for the metric\n  system, such as km/h (kilometer per hour) or m/s (meter per second).\n\nSince usage is not enforced you can deviate from these rules, though only do so if strictly necessary. The\nbenefit from using a standard comes from consistent use, so deviating from the recommendations diminishes your\nbenefit.\n\nIf the type of unit you need is not supported please create a\n[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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\nrequired 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\ndiffers from the remark on an action, which is a remark that is relevant before the execution of the action. Whereas\nthis 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\nrecurrence follows the [Recurrence Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)\nspecification",
            "type": "string",
            "format": "recurrence"
          },
          "duration": {
            "description": "The duration of this action/event, should only be set when `timeFormat` is set to `duration`. The\nduration follows the [ISO 8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)\nspecification",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\nrequired 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\ndiffers from the remark on an action, which is a remark that is relevant before the execution of the action. Whereas\nthis 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\nrecurrence follows the [Recurrence Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)\nspecification",
            "type": "string",
            "format": "recurrence"
          },
          "duration": {
            "description": "The duration of this action/event, should only be set when `timeFormat` is set to `duration`. The\nduration follows the [ISO 8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)\nspecification",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\nrequired 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\ndiffers from the remark on an action, which is a remark that is relevant before the execution of the action. Whereas\nthis 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\nrecurrence follows the [Recurrence Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)\nspecification",
            "type": "string",
            "format": "recurrence"
          },
          "duration": {
            "description": "The duration of this action/event, should only be set when `timeFormat` is set to `duration`. The\nduration follows the [ISO 8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)\nspecification",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\nrequired 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\ndiffers from the remark on an action, which is a remark that is relevant before the execution of the action. Whereas\nthis 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\nrecurrence follows the [Recurrence Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)\nspecification",
            "type": "string",
            "format": "recurrence"
          },
          "duration": {
            "description": "The duration of this action/event, should only be set when `timeFormat` is set to `duration`. The\nduration follows the [ISO 8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)\nspecification",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\nrequired 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\ndiffers from the remark on an action, which is a remark that is relevant before the execution of the action. Whereas\nthis 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\nrecurrence follows the [Recurrence Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)\nspecification",
            "type": "string",
            "format": "recurrence"
          },
          "duration": {
            "description": "The duration of this action/event, should only be set when `timeFormat` is set to `duration`. The\nduration follows the [ISO 8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)\nspecification",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\nrequired 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\ndiffers from the remark on an action, which is a remark that is relevant before the execution of the action. Whereas\nthis 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\ninland waterway), a truck/car/van/bike/etc. (road), using the train (rail), or using a plane (air). These\nvalues are based on the\n[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\nrecurrence follows the [Recurrence Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)\nspecification",
            "type": "string",
            "format": "recurrence"
          },
          "duration": {
            "description": "The duration of this action/event, should only be set when `timeFormat` is set to `duration`. The\nduration follows the [ISO 8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)\nspecification",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\nrequired 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\ndiffers from the remark on an action, which is a remark that is relevant before the execution of the action. Whereas\nthis 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\nrecurrence follows the [Recurrence Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)\nspecification",
            "type": "string",
            "format": "recurrence"
          },
          "duration": {
            "description": "The duration of this action/event, should only be set when `timeFormat` is set to `duration`. The\nduration follows the [ISO 8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)\nspecification",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\nrequired 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\ndiffers from the remark on an action, which is a remark that is relevant before the execution of the action. Whereas\nthis 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\nrecurrence follows the [Recurrence Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)\nspecification",
            "type": "string",
            "format": "recurrence"
          },
          "duration": {
            "description": "The duration of this action/event, should only be set when `timeFormat` is set to `duration`. The\nduration follows the [ISO 8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)\nspecification",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\nrequired 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\ndiffers from the remark on an action, which is a remark that is relevant before the execution of the action. Whereas\nthis 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\nrecurrence follows the [Recurrence Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)\nspecification",
            "type": "string",
            "format": "recurrence"
          },
          "duration": {
            "description": "The duration of this action/event, should only be set when `timeFormat` is set to `duration`. The\nduration follows the [ISO 8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)\nspecification",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\nrequired 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\ndiffers from the remark on an action, which is a remark that is relevant before the execution of the action. Whereas\nthis 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\nrecurrence follows the [Recurrence Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)\nspecification",
            "type": "string",
            "format": "recurrence"
          },
          "duration": {
            "description": "The duration of this action/event, should only be set when `timeFormat` is set to `duration`. The\nduration follows the [ISO 8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)\nspecification",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\nrequired 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\ndiffers from the remark on an action, which is a remark that is relevant before the execution of the action. Whereas\nthis 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\nrecurrence follows the [Recurrence Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)\nspecification",
            "type": "string",
            "format": "recurrence"
          },
          "duration": {
            "description": "The duration of this action/event, should only be set when `timeFormat` is set to `duration`. The\nduration follows the [ISO 8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)\nspecification",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\nrequired 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\ndiffers from the remark on an action, which is a remark that is relevant before the execution of the action. Whereas\nthis 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\nrecurrence follows the [Recurrence Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)\nspecification",
            "type": "string",
            "format": "recurrence"
          },
          "duration": {
            "description": "The duration of this action/event, should only be set when `timeFormat` is set to `duration`. The\nduration follows the [ISO 8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)\nspecification",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\nrequired 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\ndiffers from the remark on an action, which is a remark that is relevant before the execution of the action. Whereas\nthis 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\nrecurrence follows the [Recurrence Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)\nspecification",
            "type": "string",
            "format": "recurrence"
          },
          "duration": {
            "description": "The duration of this action/event, should only be set when `timeFormat` is set to `duration`. The\nduration follows the [ISO 8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)\nspecification",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\nrequired 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\ndiffers from the remark on an action, which is a remark that is relevant before the execution of the action. Whereas\nthis 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\nrecurrence follows the [Recurrence Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)\nspecification",
            "type": "string",
            "format": "recurrence"
          },
          "duration": {
            "description": "The duration of this action/event, should only be set when `timeFormat` is set to `duration`. The\nduration follows the [ISO 8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)\nspecification",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\nrequired 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\ndiffers from the remark on an action, which is a remark that is relevant before the execution of the action. Whereas\nthis 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\nrecurrence follows the [Recurrence Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)\nspecification",
            "type": "string",
            "format": "recurrence"
          },
          "duration": {
            "description": "The duration of this action/event, should only be set when `timeFormat` is set to `duration`. The\nduration follows the [ISO 8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)\nspecification",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\nrequired 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\ndiffers from the remark on an action, which is a remark that is relevant before the execution of the action. Whereas\nthis 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\nrecurrence follows the [Recurrence Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)\nspecification",
            "type": "string",
            "format": "recurrence"
          },
          "duration": {
            "description": "The duration of this action/event, should only be set when `timeFormat` is set to `duration`. The\nduration follows the [ISO 8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)\nspecification",
            "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\n can be retrieved. Note that every entity always has a unique EntityId. However since, OTM5.2 it is not\n 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\n on the current state of this entity.\n\nFor example: your system might send ETA information for the arrival of a vehicle on a location. To make it clear\nwhat caused this ETA to be updated, we can include some information about what caused this ETA update by including\nan event as context. If your ETA update was caused by a location update, this event can be included as context. If\nthe 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\n  the OTM fields otherwise. The `externalAttributes` member is meant for additional meta data and/or additional\n  ID's of an entity. This can also help to identify an OTM entity in a system by the ID of that system.\n\n > Please, use this with caution: having too many external attributes can be a sign of not using OpenTripModel as\n   it was intended.\n",
            "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\nlifecycles to model how it changes over time. For example the planned and realized time of an action taking place\ncan 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\nrequired 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\ndiffers from the remark on an action, which is a remark that is relevant before the execution of the action. Whereas\nthis 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\nrecurrence follows the [Recurrence Rule](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.3)\nspecification",
            "type": "string",
            "format": "recurrence"
          },
          "duration": {
            "description": "The duration of this action/event, should only be set when `timeFormat` is set to `duration`. The\nduration follows the [ISO 8601](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)\nspecification",
            "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"
          }
        }
      }
    }
  }
}