{
  "swagger": "2.0",
  "info": {
    "description": "The **DGAssistant Dangerous Goods API** is a JSON REST API that connects your ERP, warehouse or transport management system to DGAssistant and returns dangerous goods documents compliant with **ADR, IMDG, IATA and 49 CFR**.\n\nYour system sends the data of each consignment and DGAssistant supplies the regulatory knowledge: it checks every product and package against the applicable regulation, applies the most favourable exemption and returns the Transport Document, the IMO Dangerous Goods Declaration, the Shipper's Declaration for Dangerous Goods, the checklist and the marking and labelling of packages, ready to print.\n\nIt also covers consolidation and transport (master consignments, segregation checks, the dangerous goods manifest, the Notification to Captain (NOTOC) and CMR and e-CMR consignment notes), with webhooks that keep your system informed. Fewer manual steps, fewer errors and documents that follow every change in the regulations.\n\n**Master data identifiers.** The identifier of a master data entry is stable: it designates the same entry in every later version of the catalogue and of the API, and it is never reused for another entry.\n\n**Repeated requests.** The `requestGuid` parameter identifies each request in order to trace it, and it is not an idempotency key unless the operation states it: repeating a creation that was processed creates another record, so before repeating a creation whose response was not received, check whether the record was created.\n\n**Rate limits.** By default, each account may send up to 4 requests per second and up to 4 requests in parallel. These are the default limits: for specific needs, they can be increased on request. Requests above the limits of the account may be rejected with the HTTP status 429 (Too Many Requests). A request rejected for this reason is not processed and does not count towards the calls of the licence, so it can be repeated safely, even when it is a creation.\n\n**Licence quotas.** Each API licence includes the following quotas in each year of the licence, and each additional API licence adds the same quotas.\n\n- **Calls:** up to 15 000 calls to the API in total. Every call counts towards this total, including those that also count towards one of the quotas below.\n- **Master data:** up to 5 000 master data records stored in the account at the same time: products, participants, locations of the account, vehicles, trailers and vessels.\n- **Validation of products:** up to 5 000 calls to the services that validate or create products, as creating a product also validates it: `POST /simpleProduct`, `POST /simpleProduct/validate`, `POST /mixedPackingProduct`, `POST /mixedPackingProduct/validate`, `POST /mixedPackingProductInteractive` and `POST /mixedPackingProductInteractive/{mixedPackingProductInteractiveId}/content`.\n- **Creation of consignments:** up to 1 500 calls to create a consignment (`POST /consignment`). A consignment that is deleted later still counts. Adding contents to an existing consignment, or deleting them, counts only towards the total of calls.\n- **Documents:** up to 3 000 calls to the services that generate documents, each call once whatever the number of documents requested in it: `POST /consignment/{consignmentId}/document`, `POST /consignment/{consignmentId}/documentSendingByEmail`, `POST /consignmentNote/{consignmentNoteId}/document`, `POST /masterConsignment/{masterConsignmentId}/document`, `POST /transportEquipment/{transportEquipmentId}/document` and `POST /transportMovement/{transportMovementId}/document`.\n- **Checks and calculations:** up to 3 000 calls to the services that check or calculate, other than the validation of products: `POST /transportEquipment/validate`, `POST /transportEquipment/{transportEquipmentId}/segregationCheck`, `POST /transportMovement/{transportMovementId}/segregationCheck`, `POST /transportMovement/{transportMovementId}/loadThresholdCalculation`, `GET /transportMovement/{transportMovementId}/restriction`, `POST /consignmentNote/{consignmentNoteId}/validate` and `GET /consignmentNote/coverage`. Loading consignment items into transport equipment (`POST /transportEquipment/{transportEquipmentId}/content`) also counts as a check, as it checks the segregation of the load.\n\nEvery request counts, including those rejected because of an error in the request, such as those answered with 400, 404 or 409, except:\n\n- requests that end with an error of the service (HTTP status 500 or higher);\n- requests rejected because the credentials are not valid (401) or because they exceed the rate limits (429);\n- calls made during the evaluation of the API, and integration tests made in the test account that DGAssistant provides for that purpose.\n\n[OpenAPI 3.0 specification ](/dangerous-goods-api/dgapi-oas3.json)\n\n[OpenAPI 2.0 (Swagger 2.0) specification](/dangerous-goods-api/dgapi-oas2.json)",
    "version": "2.10.1",
    "title": "DGAssistant Dangerous Goods API",
    "termsOfService": "https://www.dgassistant.com/documents/license-agreement.pdf",
    "contact": {
      "email": "support@dgassistant.com"
    }
  },
  "host": "emea.dgassistant.com",
  "basePath": "/api/v2/rest",
  "tags": [
    {
      "name": "Authentication",
      "description": "OAuth2 access tokens issued with the client credentials grant, an alternative to HTTP Basic authentication for every authenticated operation"
    },
    {
      "name": "Connection checks",
      "description": "Checks of the availability of the API, of the credentials of the API user and of requests with and without authentication"
    },
    {
      "name": "Master data",
      "description": "Dangerous goods and radionuclides, packagings and packing instructions, codes, countries and locations that consignments, products and consolidation refer to"
    },
    {
      "name": "Products",
      "description": "Simple and mixed packing products of the catalogue, including the interactive creation of a mixed packing product for a consignment"
    },
    {
      "name": "Participants",
      "description": "Predefined participants: shippers, consignees, loaders, carriers, suppliers, drivers, consolidators, notify parties, freight forwarders and shipping agents"
    },
    {
      "name": "Vehicles, trailers and vessels",
      "description": "Vehicles, trailers and vessels of the accounts, with their registration, ADR approval and Document of Compliance"
    },
    {
      "name": "Locations and restrictions",
      "description": "Ports, airports and terminals of the accounts and the restrictions that apply when transport equipment is planned or loaded at them"
    },
    {
      "name": "Consignments",
      "description": "Creation of a consignment with all its contents (batch) or with its first content (interactive), and retrieval and deletion of consignments"
    },
    {
      "name": "Consignment contents",
      "description": "Products, mixed packings and overpacks added to or removed from a consignment processed interactively"
    },
    {
      "name": "Consignment documents",
      "description": "Documents of a consignment (transport document, checklist, package marking and others), their sending by email and frozen documents"
    },
    {
      "name": "Consignment notes",
      "description": "CMR, e-CMR and national consignment notes, from the check of the e-CMR Protocol coverage of the route to issue, delivery and cancellation"
    },
    {
      "name": "Consolidation requests",
      "description": "Consolidation requests of client accounts, or of their adviser on their behalf, and decisions of the consolidator"
    },
    {
      "name": "Master consignments",
      "description": "Master consignments with their consignments and approval workflow"
    },
    {
      "name": "Transport equipment",
      "description": "Transport equipment, its content, its segregation checks and its movement history"
    },
    {
      "name": "Transport movements and calls",
      "description": "Voyages, flights and road journeys with their calls and transport equipment, segregation checks, load threshold calculation (ADR 1.1.3.6) and restrictions"
    },
    {
      "name": "Consolidation documents",
      "description": "Documents of master consignments, transport equipment and transport movements"
    },
    {
      "name": "Webhooks",
      "description": "Webhook subscriptions of the account, their test and their recent deliveries"
    }
  ],
  "x-tagGroups": [
    {
      "name": "Getting started",
      "tags": [
        "Authentication",
        "Connection checks"
      ]
    },
    {
      "name": "Reference and account data",
      "tags": [
        "Master data",
        "Products",
        "Participants",
        "Vehicles, trailers and vessels",
        "Locations and restrictions"
      ]
    },
    {
      "name": "Consignments",
      "tags": [
        "Consignments",
        "Consignment contents",
        "Consignment documents",
        "Consignment notes"
      ]
    },
    {
      "name": "Consolidation and transport",
      "tags": [
        "Consolidation requests",
        "Master consignments",
        "Transport equipment",
        "Transport movements and calls",
        "Consolidation documents"
      ]
    },
    {
      "name": "Notifications",
      "tags": [
        "Webhooks"
      ]
    }
  ],
  "schemes": [
    "https"
  ],
  "x-servers": [
    {
      "url": "https://emea.dgassistant.com/api/v2/rest"
    },
    {
      "url": "https://amer.dgassistant.com/api/v2/rest"
    },
    {
      "url": "https://apac.dgassistant.com/api/v2/rest"
    }
  ],
  "paths": {
    "/oauth2/token": {
      "post": {
        "tags": [
          "Authentication"
        ],
        "summary": "Issue an OAuth2 access token",
        "description": "Issues an OAuth2 access token with the client credentials grant (RFC 6749 section 4.4). The credentials are those of the API user: send the user name as `client_id` and the password as `client_secret`, either in the form body or in an `Authorization: Basic` header, but not in both.\n\nThe token is valid for one hour: cache it and reuse it until shortly before it expires. A password change invalidates every outstanding token of the user. There are no refresh tokens and tokens cannot be revoked individually.\n\nThe successful response follows the OAuth2 format (RFC 6749 section 5.1); errors use the error envelope of the rest of the API.",
        "operationId": "issueAccessToken",
        "consumes": [
          "application/x-www-form-urlencoded"
        ],
        "produces": [
          "application/json"
        ],
        "security": [],
        "parameters": [
          {
            "name": "grant_type",
            "in": "formData",
            "required": true,
            "type": "string",
            "description": "Must be `client_credentials`."
          },
          {
            "name": "client_id",
            "in": "formData",
            "required": false,
            "type": "string",
            "description": "API user name. Omit when the credentials travel in the Authorization header."
          },
          {
            "name": "client_secret",
            "in": "formData",
            "required": false,
            "type": "string",
            "description": "Password of that API user. Omit when the credentials travel in the Authorization header."
          },
          {
            "name": "scope",
            "in": "formData",
            "required": false,
            "type": "string",
            "description": "Optional. The authority granted to the token is determined by the roles and licences of the user."
          }
        ],
        "responses": {
          "200": {
            "description": "Token issued",
            "schema": {
              "$ref": "#/definitions/OAuth2TokenResponse"
            }
          },
          "400": {
            "description": "Unsupported grant type (code `NOT_VALID_VALUE_FOR_PARAMETER`, parameter `grant_type`), credentials sent both in the header and in the body, or request without HTTPS (code `REQUEST_VALUE_NOT_VALID`).",
            "schema": {
              "$ref": "#/definitions/ApiResponseError400"
            }
          },
          "401": {
            "description": "Missing or wrong client credentials (code `AUTHENTICATION_FAILED`, the same for an unknown user and for a wrong password).",
            "schema": {
              "$ref": "#/definitions/ApiResponseError401"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        }
      }
    },
    "/support/isAlive": {
      "get": {
        "tags": [
          "Connection checks"
        ],
        "summary": "Check that the API is available",
        "description": "Returns a message with the current UTC time, to check that the API is available.",
        "operationId": "getIsAlive",
        "produces": [
          "application/json"
        ],
        "security": [],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "type": "string",
              "example": "DGAssistant Software Service Is Alive!. UTC Time: 24/07/2026 9:25:59. Version: v18.09.05. Location: EMEA"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        }
      }
    },
    "/support/testLogin": {
      "get": {
        "tags": [
          "Connection checks"
        ],
        "summary": "Check the credentials and the granted roles",
        "description": "Checks the credentials of the API user and returns the roles granted to it.",
        "operationId": "getTestLogin",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "type": "string",
              "example": "Login OK at UTC Time: 2026-03-06 10:30:00. Roles: ApiUser"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser"
        ]
      }
    },
    "/support/testPostAnonymous": {
      "post": {
        "tags": [
          "Connection checks"
        ],
        "summary": "Check a POST request without authentication",
        "description": "Returns the two values of the request doubled, to check a POST request without authentication.",
        "operationId": "testPostAnonymous",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [],
        "parameters": [
          {
            "in": "body",
            "name": "twoIntegers",
            "description": "values to be doubled",
            "required": true,
            "schema": {
              "$ref": "#/definitions/TwoIntegers"
            }
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/TwoIntegersResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        }
      }
    },
    "/support/testPostIdentified": {
      "post": {
        "tags": [
          "Connection checks"
        ],
        "summary": "Check a POST request with authentication",
        "description": "Returns the two values of the request doubled, to check a POST request with authentication.",
        "operationId": "testPostIdentified",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "twoIntegers",
            "description": "values to be doubled",
            "required": true,
            "schema": {
              "$ref": "#/definitions/TwoIntegers"
            }
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/TwoIntegersResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser"
        ]
      }
    },
    "/masterData/simpleDangerousGood": {
      "get": {
        "tags": [
          "Master data"
        ],
        "summary": "Get the simplified dangerous goods list",
        "description": "Returns the simplified dangerous goods list: for each entry of the catalogue, its identifier, UN number, name, packing group, classification code, labels and regulatory status under ADR, IMDG and IATA. For the complete row of each entry in the dangerous goods list of every regulation, use detailedDangerousGood.\n\nWithout the ApiUserFullMasterData role, the response is limited to a sample, the entries whose UN number ends in 4. The list can be narrowed by UN number, by a text of the name and by class, and paged with page and pageSize; the paging data is returned only when a page is requested.",
        "operationId": "getSimpleDangerousGoods",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/requestGuid"
          },
          {
            "name": "unNumber",
            "in": "query",
            "description": "Optional filter by identification number. Accepts one to four digits, with an optional UN, ID or NA prefix (1203, UN1203, ID8000), and is completed with leading zeros (6 is read as 0006). A filter with the NA prefix returns no entries. When it is omitted, the whole accessible catalogue is returned.",
            "required": false,
            "type": "string"
          },
          {
            "name": "search",
            "in": "query",
            "description": "Optional text searched in the name of the dangerous good, without distinguishing upper and lower case or accents. At most 100 characters.",
            "required": false,
            "type": "string"
          },
          {
            "name": "class",
            "in": "query",
            "description": "Optional filter by class or division, with the code published in the list, such as 3, 4.1 or 6.1. An unknown code is rejected with 400.",
            "required": false,
            "type": "string"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Optional page number, starting at 1. Without page and pageSize the whole list is returned; when only pageSize is sent, the first page is returned.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "minimum": 1
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Optional number of items per page, between 1 and 200. When only page is sent, pages of 50 items are returned.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "minimum": 1,
            "maximum": 200
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/SimpleDangerousGoodsResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser"
        ]
      }
    },
    "/masterData/detailedDangerousGood": {
      "get": {
        "tags": [
          "Master data"
        ],
        "summary": "Get the detailed dangerous goods list",
        "description": "Returns the detailed dangerous goods list: for each entry of the catalogue, its row in Table A of ADR (Chapter 3.2), in the Dangerous Goods List of the IMDG Code (Chapter 3.2) and in the List of Dangerous Goods of the IATA Dangerous Goods Regulations (Section 4.2). For the identification and the regulatory status only, use simpleDangerousGood.\n\nAny of the four dangerous goods roles (ApiUserDangerousGoodsADR, ApiUserDangerousGoodsIMDG, ApiUserDangerousGoodsIATA or ApiUserDangerousGoodsCFR49) gives access to the whole catalogue, and the ADR, IMDG and IATA blocks are included only when the user holds the role of that regulation. Without any of them, the response is limited to a sample, the entries whose UN number ends in 4, with the three blocks. Entries excluded by the road regulation configured for the user are not returned, packing instructions are given by name only, and limitedQuantity, exceptedQuantity and transportCategory give the code, the quantity and its measure unit separately. The list can be narrowed by UN number, by a text of the name and by class, and paged with page and pageSize; the paging data is returned only when a page is requested.\n\nThe response is private (Cache-Control: private, no-cache) and carries a weak ETag: send it back in If-None-Match and, while it is still valid, the service answers 304 Not Modified without body. getDetailedDangerousGoodVersion returns the same value without the list.",
        "operationId": "getDetailedDangerousGoods",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/requestGuid"
          },
          {
            "name": "unNumber",
            "in": "query",
            "description": "Optional filter by identification number. Accepts one to four digits, with an optional UN, ID or NA prefix (1203, UN1203, ID8000), and is completed with leading zeros (6 is read as 0006). A filter with the NA prefix returns no entries. When it is omitted, the whole accessible catalogue is returned.",
            "required": false,
            "type": "string"
          },
          {
            "name": "search",
            "in": "query",
            "description": "Optional text searched in the name of the dangerous good, without distinguishing upper and lower case or accents. At most 100 characters.",
            "required": false,
            "type": "string"
          },
          {
            "name": "class",
            "in": "query",
            "description": "Optional filter by class or division, with the code published in the list, such as 3, 4.1 or 6.1. An unknown code is rejected with 400.",
            "required": false,
            "type": "string"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Optional page number, starting at 1. Without page and pageSize the whole list is returned; when only pageSize is sent, the first page is returned.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "minimum": 1
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Optional number of items per page, between 1 and 200. When only page is sent, pages of 50 items are returned.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "minimum": 1,
            "maximum": 200
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "headers": {
              "ETag": {
                "type": "string",
                "description": "Weak validator of the response. Send it back in If-None-Match to receive 304 Not Modified while the published content of the catalogue, the application version, the language, the roles and the filters are unchanged."
              }
            },
            "schema": {
              "$ref": "#/definitions/DetailedDangerousGoodsResponseOK"
            }
          },
          "304": {
            "description": "Not Modified: the catalogue has not changed since the ETag sent in If-None-Match. The response has no body and repeats the ETag; the client keeps its copy."
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser"
        ]
      }
    },
    "/masterData/detailedDangerousGood/version": {
      "get": {
        "tags": [
          "Master data"
        ],
        "summary": "Get the version of the detailed dangerous goods list",
        "description": "Returns the version of the detailed dangerous goods list for the given filters, without the list: the same value as the ETag header that getDetailedDangerousGoods returns with the same filters and language. It only changes when the published content of the catalogue, the application version, the language, the roles or the filters change, so a client can compare it with the version of its copy and download the list again only when it differs. The value is also returned in the ETag header. Invalid filters are rejected with 400, as in the list.",
        "operationId": "getDetailedDangerousGoodVersion",
        "parameters": [
          {
            "$ref": "#/parameters/requestGuid"
          },
          {
            "name": "unNumber",
            "in": "query",
            "description": "Optional filter by identification number. Accepts one to four digits, with an optional UN, ID or NA prefix (1203, UN1203, ID8000), and is completed with leading zeros (6 is read as 0006). A filter with the NA prefix returns no entries. When it is omitted, the whole accessible catalogue is returned.",
            "required": false,
            "type": "string"
          },
          {
            "name": "search",
            "in": "query",
            "description": "Optional text searched in the name of the dangerous good, without distinguishing upper and lower case or accents. At most 100 characters.",
            "required": false,
            "type": "string"
          },
          {
            "name": "class",
            "in": "query",
            "description": "Optional filter by class or division, with the code published in the list, such as 3, 4.1 or 6.1. An unknown code is rejected with 400.",
            "required": false,
            "type": "string"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Optional page number, starting at 1. Without page and pageSize the whole list is returned; when only pageSize is sent, the first page is returned.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "minimum": 1
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Optional number of items per page, between 1 and 200. When only page is sent, pages of 50 items are returned.",
            "required": false,
            "type": "integer",
            "format": "int32",
            "minimum": 1,
            "maximum": 200
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "headers": {
              "ETag": {
                "type": "string",
                "description": "Version of the catalogue, the same value as catalogueVersion."
              }
            },
            "schema": {
              "$ref": "#/definitions/DetailedDangerousGoodVersionResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/masterData/radionuclide": {
      "get": {
        "tags": [
          "Master data"
        ],
        "summary": "Get the radionuclides",
        "description": "Returns the master data list of radionuclides available for Class 7 (radioactive material) products and consignments.",
        "operationId": "getRadionuclides",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/RadionuclidesResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser"
        ]
      }
    },
    "/masterData/package": {
      "get": {
        "tags": [
          "Master data"
        ],
        "summary": "Get the types of outer packaging",
        "description": "Returns the master data list of available outer package types.",
        "operationId": "getPackages",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/PackagesResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser"
        ]
      }
    },
    "/masterData/packageHomologation": {
      "get": {
        "tags": [
          "Master data"
        ],
        "summary": "Get the UN homologation codes of outer packagings",
        "description": "Returns the master data list of UN homologation codes for outer packages.",
        "operationId": "getPackageHomologations",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/PackageHomologationsResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser"
        ]
      }
    },
    "/masterData/innerPackageMaterial": {
      "get": {
        "tags": [
          "Master data"
        ],
        "summary": "Get the materials of inner packagings",
        "description": "Returns the master data list of materials available for inner packages.",
        "operationId": "getInnerPackageMaterials",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/InnerPackageMaterialsResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser"
        ]
      }
    },
    "/masterData/packingInstruction": {
      "get": {
        "tags": [
          "Master data"
        ],
        "summary": "Get the IATA packing instructions",
        "description": "Returns the master data list of IATA packing instructions.",
        "operationId": "getPackingInstructions",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/PackingInstructionsResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser"
        ]
      }
    },
    "/masterData/imdgSegregationGroup": {
      "get": {
        "tags": [
          "Master data"
        ],
        "summary": "Get the IMDG segregation groups",
        "description": "Returns the master data list of IMDG segregation groups.",
        "operationId": "getImdgSegregationGroups",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ImdgSegregationGroupsResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser"
        ]
      }
    },
    "/masterData/stowageCategory": {
      "get": {
        "tags": [
          "Master data"
        ],
        "summary": "Get the IMDG stowage categories",
        "description": "Returns the stowage categories of the IMDG Code: A to E for packaged goods and 01 to 05 for goods of class 1. Each entry gives its `regulation`; a regulation other than `Imdg` is rejected with 400.",
        "operationId": "getStowageCategories",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/requestGuid"
          },
          {
            "name": "regulation",
            "in": "query",
            "description": "Regulation of the stowage data. Optional; `Imdg` when omitted, the only regulation with these data. Any other value is rejected with 400.",
            "required": false,
            "type": "string",
            "enum": [
              "Adr",
              "Imdg",
              "Iata",
              "Cfr49"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/StowageCategoriesResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      }
    },
    "/masterData/stowageCode": {
      "get": {
        "tags": [
          "Master data"
        ],
        "summary": "Get the IMDG stowage, handling and segregation codes",
        "description": "Returns the stowage (SW), handling (H) and segregation (SG) codes of the IMDG Code, with their texts in the language of the API user, or in English when no translation exists. Each entry gives its `regulation`; a regulation other than `Imdg` is rejected with 400.",
        "operationId": "getStowageCodes",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/requestGuid"
          },
          {
            "name": "regulation",
            "in": "query",
            "description": "Regulation of the stowage data. Optional; `Imdg` when omitted, the only regulation with these data. Any other value is rejected with 400.",
            "required": false,
            "type": "string",
            "enum": [
              "Adr",
              "Imdg",
              "Iata",
              "Cfr49"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/StowageCodesResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      }
    },
    "/masterData/isoContainerType": {
      "get": {
        "tags": [
          "Master data"
        ],
        "summary": "Get the ISO 6346 container size and type codes",
        "description": "Returns the ISO 6346 container size and type codes, common to every account.",
        "operationId": "getIsoContainerTypes",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/IsoContainerTypesResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      }
    },
    "/masterData/country": {
      "get": {
        "tags": [
          "Master data"
        ],
        "summary": "Get the countries",
        "description": "Returns the master data list of countries used for participants and addresses.",
        "operationId": "getCountries",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/CountriesResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser"
        ]
      }
    },
    "/masterData/location": {
      "get": {
        "tags": [
          "Master data"
        ],
        "summary": "Search ports, airports and terminals",
        "description": "Returns a page of the ports, airports and terminals of the UN/LOCODE catalogue and of the locations of the account given in `accountCode` (by default, the account of the user), of its company and of its group.",
        "operationId": "getLocations",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "search",
            "in": "query",
            "description": "Beginning of the code or of the name of the location.",
            "x-example": "ESV",
            "required": false,
            "type": "string"
          },
          {
            "name": "countryCode",
            "in": "query",
            "description": "ISO 3166-1 alpha-2 code of the country, to return only its locations.",
            "x-example": "ES",
            "required": false,
            "type": "string",
            "maxLength": 2
          },
          {
            "name": "isPort",
            "in": "query",
            "description": "True to return only sea ports.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "isAirport",
            "in": "query",
            "description": "True to return only airports.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "accountListOnly",
            "in": "query",
            "description": "True to return only the locations among the locations of those accounts.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "accountCode",
            "in": "query",
            "description": "Code of a customer account the user can read: the search covers the lists of that account, of its company and of its group. Without it, the account of the user.",
            "x-example": "WP001",
            "required": false,
            "type": "string"
          },
          {
            "$ref": "#/parameters/Page"
          },
          {
            "$ref": "#/parameters/PageSize"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/LocationsResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser",
          "Consolidation"
        ]
      }
    },
    "/simpleProduct": {
      "post": {
        "tags": [
          "Products"
        ],
        "summary": "Create a simple product in the catalogue",
        "description": "Creates a new predefined simple product in the catalogue for later reuse in consignments. A product with a correctable error, such as a missing technical name, is created with `newItemIsValid` false and its problems in `warnings`; it can be read with GET /simpleProduct/{reference} and removed with DELETE /simpleProduct/{reference}.",
        "operationId": "addSimpleProduct",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "simpleProduct",
            "description": "simple Product",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SimpleProduct"
            }
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/AddItemResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser"
        ]
      }
    },
    "/simpleProduct/validate": {
      "post": {
        "tags": [
          "Products"
        ],
        "summary": "Validate a simple product without creating it",
        "description": "Performs the complete validation of a predefined simple product, applying the same checks as the creation service, without persisting anything in the catalogue.",
        "operationId": "validateSimpleProduct",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "simpleProduct",
            "description": "simple Product",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SimpleProduct"
            }
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ValidatedItemResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser"
        ]
      }
    },
    "/simpleProduct/{reference}": {
      "get": {
        "tags": [
          "Products"
        ],
        "summary": "Get a simple product of the catalogue",
        "description": "Returns a predefined simple product from the catalogue, identified by its unique reference. Only simple products are found: a mixed packing product with that reference answers 404 and is read with GET /mixedPackingProduct/{reference}. A product saved with a correctable error, such as a missing technical name, is also returned, with `isValid` false.",
        "operationId": "getSimpleProduct",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/SimpleProductReference"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/SimpleProductResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Simple product not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser"
        ]
      },
      "delete": {
        "tags": [
          "Products"
        ],
        "summary": "Delete a simple product of the catalogue",
        "description": "Removes a predefined simple product from the catalogue, identified by its unique reference. Only simple products are found: a mixed packing product with that reference answers 404 and is removed with DELETE /mixedPackingProduct/{reference}. A product saved with a correctable error (`isValid` false) is also removed.",
        "operationId": "deleteSimpleProduct",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/SimpleProductReference"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ApiResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Simple product not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser"
        ]
      }
    },
    "/mixedPackingProduct": {
      "post": {
        "tags": [
          "Products"
        ],
        "summary": "Create a mixed packing product in the catalogue",
        "description": "Creates a predefined mixed packing product in the catalogue, with its outer packaging and at least two contents, to reuse it in consignments: its reference is the value to send in predefinedMixedPackingProducts or to POST /consignment/{consignmentId}/mixedPackingProduct. The reference must not be in use by any other product of the accounts visible to the user, because the consignment requires exactly one product with that reference.\n\nWhen a content is rejected, the response names its position in `contents`, starting at 0; only the first rejected content is reported.",
        "operationId": "addMixedPackingProduct",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "mixedPackingProduct",
            "description": "mixed packing product with its outer packaging and its contents",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MixedPackingProduct"
            }
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/AddItemResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser"
        ]
      }
    },
    "/mixedPackingProduct/validate": {
      "post": {
        "tags": [
          "Products"
        ],
        "summary": "Validate a mixed packing product without creating it",
        "description": "Performs the complete validation of a predefined mixed packing product, applying the same checks as the creation service, contents included, without saving anything in the catalogue.",
        "operationId": "validateMixedPackingProduct",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "mixedPackingProduct",
            "description": "mixed packing product with its outer packaging and its contents",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MixedPackingProduct"
            }
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ValidatedItemResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser"
        ]
      }
    },
    "/mixedPackingProduct/{reference}": {
      "get": {
        "tags": [
          "Products"
        ],
        "summary": "Get a mixed packing product of the catalogue",
        "description": "Returns a predefined mixed packing product of the catalogue, identified by its reference, with its outer packaging, its enabled regulations and its contents in the order in which they were created. Only mixed packing products of the catalogue are found: a simple product, or a mixed packing created within a consignment, with that reference answers 404.",
        "operationId": "getMixedPackingProduct",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/MixedPackingProductReference"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/MixedPackingProductResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Mixed packing product not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser"
        ]
      },
      "delete": {
        "tags": [
          "Products"
        ],
        "summary": "Delete a mixed packing product of the catalogue",
        "description": "Removes a predefined mixed packing product from the catalogue, identified by its reference. Only mixed packing products of the catalogue are found: a simple product with that reference answers 404. The consignments that already include it keep their own copy unchanged.",
        "operationId": "deleteMixedPackingProduct",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/MixedPackingProductReference"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ApiResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Mixed packing product not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser"
        ]
      }
    },
    "/mixedPackingProductInteractive": {
      "post": {
        "tags": [
          "Products"
        ],
        "summary": "Create an empty mixed packing product to fill interactively",
        "description": "Creates an EMPTY mixed packing product bound to the account and regulation of consignmentId, ready for interactive content additions. Three-step workflow: (1) this call; (2) one POST /mixedPackingProductInteractive/{id}/content per content, at least two; (3) POST /consignment/{consignmentId}/mixedPackingProduct with reference = productCode to attach the product to the consignment. Creating the product does NOT add it to the consignment. productCode is required since version 2.7.3 because it is the reference used to attach the product.",
        "operationId": "createInteractiveMixedPackingProduct",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "product",
            "description": "mixed packing product definition",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MixedPackingProductTransportModeInteractive"
            }
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/AddItemResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser"
        ]
      }
    },
    "/mixedPackingProductInteractive/{mixedPackingProductInteractiveId}/content": {
      "post": {
        "tags": [
          "Products"
        ],
        "summary": "Add content to a mixed packing product created interactively",
        "description": "Adds an inner content to a mixed packing product created interactively. The mixed packing product must have been created with POST /mixedPackingProductInteractive, be enabled and belong to an account that the user can modify; otherwise the request is rejected with 400 naming mixedPackingProductInteractiveId. The product is not part of any consignment until it is attached with POST /consignment/{consignmentId}/mixedPackingProduct.\n\nClass 7 (radioactive) entries are rejected, because a package containing radioactive material shall not contain any other items: declare radioactive material as a simple product with radiological.nuclides[].",
        "operationId": "addContentToInteractiveMixedPackingProduct",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/MixedPackingProductInteractiveId"
          },
          {
            "in": "body",
            "name": "content",
            "description": "content to be added to the mixed packing",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MixedPackingProductTransportModeContent"
            }
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/AddItemResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser"
        ]
      }
    },
    "/participant": {
      "post": {
        "tags": [
          "Participants"
        ],
        "summary": "Create a predefined participant",
        "description": "Creates a new predefined participant (shipper, consignee, loader, carrier, supplier, driver, consolidator, notify party, freight forwarder or shipping agent). For a participant of type `Driver`, `adrData` records its ADR driver training certificate, which is checked against the load of the road movements under `Adr` to which the driver is assigned.",
        "operationId": "addParticipant",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "participant",
            "description": "participant (shipper, carrier, loader ...)",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Participant"
            }
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/AddItemResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser"
        ]
      }
    },
    "/participant/{participantCode}": {
      "get": {
        "tags": [
          "Participants"
        ],
        "summary": "Get a predefined participant",
        "description": "Returns a predefined participant identified by its unique participant code. It includes `adrData` with the ADR driver training certificate when it is recorded.",
        "operationId": "getParticipant",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/ParticipantCode"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ParticipantResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Participant not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser"
        ]
      },
      "put": {
        "tags": [
          "Participants"
        ],
        "summary": "Update a predefined participant",
        "description": "Updates the data of a predefined participant identified by its unique participant code. For a participant of type `Driver`, `adrData` records its ADR driver training certificate, which is checked against the load of the road movements under `Adr` to which the driver is assigned.",
        "operationId": "updateParticipant",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "participant",
            "description": "participant (shipper, carrier, loader ...)",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Participant"
            }
          },
          {
            "$ref": "#/parameters/ParticipantCode"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ApiResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Participant not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser"
        ]
      },
      "delete": {
        "tags": [
          "Participants"
        ],
        "summary": "Delete a predefined participant",
        "description": "Removes a predefined participant identified by its unique participant code.",
        "operationId": "deleteParticipant",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/ParticipantCode"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ApiResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Participant not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser"
        ]
      }
    },
    "/transportMeans": {
      "post": {
        "tags": [
          "Vehicles, trailers and vessels"
        ],
        "summary": "Create a vehicle or trailer",
        "description": "Creates a vehicle or trailer in the account given in `accountCode` with its registration, type and ADR approval. The registration must be unique among the vehicles and trailers of that account.",
        "operationId": "addTransportMeans",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "transportMeans",
            "description": "vehicle or trailer",
            "required": true,
            "schema": {
              "$ref": "#/definitions/TransportMeans"
            }
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/AddItemResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser",
          "Consolidation"
        ]
      },
      "get": {
        "tags": [
          "Vehicles, trailers and vessels"
        ],
        "summary": "List the vehicles and trailers of the accounts of the user",
        "description": "Returns the vehicles and trailers of the accounts that the user can read, each with its `accountCode`, its registration and its type.",
        "operationId": "getTransportMeansList",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/TransportMeansListResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser",
          "Consolidation"
        ]
      }
    },
    "/transportMeans/{transportMeansId}": {
      "get": {
        "tags": [
          "Vehicles, trailers and vessels"
        ],
        "summary": "Get a vehicle or trailer",
        "description": "Returns a vehicle or trailer of the accounts that the user can read with its `accountCode`, its registration and its type.",
        "operationId": "getTransportMeans",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/TransportMeansId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/TransportMeansResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Transport means not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser",
          "Consolidation"
        ]
      },
      "put": {
        "tags": [
          "Vehicles, trailers and vessels"
        ],
        "summary": "Update a vehicle or trailer",
        "description": "Updates the registration, type, ADR approval and mass of a vehicle or trailer of the account. Another `accountCode` moves the vehicle or trailer to that account; the user must be able to write in both accounts, and a vehicle or trailer used by transport movements cannot be moved.",
        "operationId": "updateTransportMeans",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "transportMeans",
            "description": "vehicle or trailer data that replace the current ones",
            "required": true,
            "schema": {
              "$ref": "#/definitions/TransportMeans"
            }
          },
          {
            "$ref": "#/parameters/TransportMeansId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ApiResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Transport means not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser",
          "Consolidation"
        ]
      },
      "delete": {
        "tags": [
          "Vehicles, trailers and vessels"
        ],
        "summary": "Delete a vehicle or trailer",
        "description": "Deletes a vehicle or trailer of the accounts in which the user can write that no transport movement uses; when a transport movement uses it, the request is rejected with 409.",
        "operationId": "deleteTransportMeans",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/TransportMeansId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ApiResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Transport means not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "409": {
            "$ref": "#/responses/Conflict"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser",
          "Consolidation"
        ]
      }
    },
    "/vessel": {
      "post": {
        "tags": [
          "Vehicles, trailers and vessels"
        ],
        "summary": "Create a vessel",
        "description": "Creates a vessel in the account given in `accountCode` with its identification and its Document of Compliance. The name must be unique among the vessels of that account.",
        "operationId": "addVessel",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "vessel",
            "description": "vessel with its identification and Document of Compliance",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Vessel"
            }
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/AddItemResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser",
          "Consolidation"
        ]
      },
      "get": {
        "tags": [
          "Vehicles, trailers and vessels"
        ],
        "summary": "List the vessels of the accounts of the user",
        "description": "Returns the vessels of the accounts that the user can read, each with its `accountCode` and its Document of Compliance.",
        "operationId": "getVessels",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/VesselsResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser",
          "Consolidation"
        ]
      }
    },
    "/vessel/{vesselId}": {
      "get": {
        "tags": [
          "Vehicles, trailers and vessels"
        ],
        "summary": "Get a vessel",
        "description": "Returns a vessel of the accounts that the user can read with its `accountCode` and its Document of Compliance.",
        "operationId": "getVessel",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/VesselId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/VesselResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Vessel not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser",
          "Consolidation"
        ]
      },
      "put": {
        "tags": [
          "Vehicles, trailers and vessels"
        ],
        "summary": "Update a vessel",
        "description": "Updates the vessel; the entries of the Document of Compliance in the request replace the current ones. When predefinedCarrierCode is omitted, the current shipping line is kept. Another `accountCode` moves the vessel to that account; the user must be able to write in both accounts, and a vessel used by transport movements cannot be moved.",
        "operationId": "updateVessel",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "vessel",
            "description": "vessel data that replace the current ones",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Vessel"
            }
          },
          {
            "$ref": "#/parameters/VesselId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ApiResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Vessel not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser",
          "Consolidation"
        ]
      },
      "delete": {
        "tags": [
          "Vehicles, trailers and vessels"
        ],
        "summary": "Delete a vessel",
        "description": "Deletes a vessel of the accounts in which the user can write that no transport movement uses; when a transport movement uses it, the request is rejected with 409.",
        "operationId": "deleteVessel",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/VesselId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ApiResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Vessel not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "409": {
            "$ref": "#/responses/Conflict"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser",
          "Consolidation"
        ]
      }
    },
    "/accountLocation": {
      "post": {
        "tags": [
          "Locations and restrictions"
        ],
        "summary": "Add a location to an account",
        "description": "Adds a location of the UN/LOCODE catalogue to the locations of the account given in `accountCode`, with an optional alias, or creates a location of that account when the code is not in the catalogue, which requires a name and a country. The code must be unique among the locations of the account.",
        "operationId": "addAccountLocation",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "location",
            "description": "catalogue location or location of the account",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AccountLocation"
            }
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/AddItemResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser",
          "Consolidation"
        ]
      },
      "get": {
        "tags": [
          "Locations and restrictions"
        ],
        "summary": "Search the locations of the accounts of the user",
        "description": "Returns a page of the ports, airports and terminals selected or created by the accounts that the user can read, each with the `accountCode` of its account and its alias; a location among the locations of several accounts appears once for each of them. Locations created by an account have no `unlocode`.",
        "operationId": "getAccountLocations",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "search",
            "in": "query",
            "description": "Beginning of the code or of the name of the location.",
            "x-example": "ESV",
            "required": false,
            "type": "string"
          },
          {
            "$ref": "#/parameters/Page"
          },
          {
            "$ref": "#/parameters/PageSize"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/LocationsResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser",
          "Consolidation"
        ]
      }
    },
    "/accountLocation/{locationCode}": {
      "delete": {
        "tags": [
          "Locations and restrictions"
        ],
        "summary": "Remove a location from an account",
        "description": "Removes a location from the locations of the account given in `accountCode`; a location created by the account is deleted. It is rejected with 409 when the account has restrictions at the location, or when restrictions, calls, transport movements or master consignments of accounts that would lose the location use it; an account that also has the location in another list of its chain (its own, that of its company or that of its group) keeps it.",
        "operationId": "deleteAccountLocation",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/LocationCode"
          },
          {
            "name": "accountCode",
            "in": "query",
            "description": "Code of the customer account from whose locations the location is removed.",
            "x-example": "WP001",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ApiResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Location not found among the locations of the account",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "409": {
            "$ref": "#/responses/Conflict"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser",
          "Consolidation"
        ]
      }
    },
    "/locationRestriction": {
      "post": {
        "tags": [
          "Locations and restrictions"
        ],
        "summary": "Create a location restriction",
        "description": "Creates a restriction of the account given in `accountCode` for a port, airport or terminal among the locations of that account, of its company or of its group. It is applied when transport equipment is planned or loaded in a transport movement that calls at the location.",
        "operationId": "addLocationRestriction",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "locationRestriction",
            "description": "restriction to apply at a port, airport or terminal",
            "required": true,
            "schema": {
              "$ref": "#/definitions/LocationRestriction"
            }
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/AddItemResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser",
          "Consolidation"
        ]
      },
      "get": {
        "tags": [
          "Locations and restrictions"
        ],
        "summary": "Search the location restrictions that apply to the accounts of the user",
        "description": "Returns a page of the location restrictions that apply to the accounts that the user can read: those of each account, of its company and of its group, the same chain used to resolve location codes, each with its `accountCode`, optionally only those of one location.",
        "operationId": "getLocationRestrictions",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "locationCode",
            "in": "query",
            "description": "Code of a location (UN/LOCODE or code given by the account), to return only its restrictions.",
            "x-example": "NLRTM",
            "required": false,
            "type": "string"
          },
          {
            "$ref": "#/parameters/Page"
          },
          {
            "$ref": "#/parameters/PageSize"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/LocationRestrictionsResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser",
          "Consolidation"
        ]
      }
    },
    "/locationRestriction/{locationRestrictionId}": {
      "delete": {
        "tags": [
          "Locations and restrictions"
        ],
        "summary": "Delete a location restriction",
        "description": "Deletes a location restriction of the account, which is no longer applied from then on.",
        "operationId": "deleteLocationRestriction",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/LocationRestrictionId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ApiResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Location restriction not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser",
          "Consolidation"
        ]
      }
    },
    "/consignment": {
      "post": {
        "tags": [
          "Consignments"
        ],
        "summary": "Create a consignment in batch or start an interactive consignment",
        "description": "Creates a new consignment, optionally including the first contents for interactive workflows. Overpacks in the body are processed for every regulation (ADR, IMDG and IATA). In batch processing, when a line aborts the transaction of the batch, every remaining line is reported as not added, with its position in the list, starting at 0.",
        "operationId": "addConsignment",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "consignment",
            "description": "participants (shipper, carrier, loader ...) and goods",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Consignment"
            }
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/AddItemResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser"
        ]
      }
    },
    "/consignment/{consignmentId}": {
      "get": {
        "tags": [
          "Consignments"
        ],
        "summary": "Get a consignment",
        "description": "Returns the consignment header, participants, items and calculated regulatory data in JSON format.\n\nNote on overpacks: for ADR and IMDG consignments the items collection does not include overpack containers nor their nesting; the contents of an overpack are returned as top-level items. Overpack items are only returned for IATA.",
        "operationId": "getConsignment",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/ConsignmentIdPath"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ConsignmentResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Consignment not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser"
        ]
      },
      "delete": {
        "tags": [
          "Consignments"
        ],
        "summary": "Delete a consignment",
        "description": "Permanently removes the consignment and all its associated items and overpacks. The consignment is removed from its master consignment, its packages are unloaded from every transport equipment, and its live consolidation request is withdrawn when it is pending or rejected when it was accepted. The request is rejected with 400 when the master consignment of the consignment, or one that owns transport equipment carrying its packages, is approved, closed or cancelled.",
        "operationId": "deleteConsignment",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/ConsignmentIdPath"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ApiResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Consignment not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser"
        ]
      }
    },
    "/consignment/{consignmentId}/simpleProduct": {
      "post": {
        "tags": [
          "Consignment contents"
        ],
        "summary": "Add a predefined product to a consignment",
        "description": "Adds a predefined simple product, identified by reference, to an existing interactive consignment.",
        "operationId": "addSimpleProductToConsignment",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/ConsignmentIdPath"
          },
          {
            "in": "body",
            "name": "product",
            "description": "predefined product to be added to the consignment",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SimpleProductTransportMode"
            }
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/AddItemResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser"
        ]
      }
    },
    "/consignment/{consignmentId}/simpleProductOnTheFly": {
      "post": {
        "tags": [
          "Consignment contents"
        ],
        "summary": "Add a product defined on the fly to a consignment",
        "description": "Adds a simple product defined on the fly, fully described in the request, to an existing consignment.",
        "operationId": "addSimpleProductOnTheFlyToConsignment",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/ConsignmentIdPath"
          },
          {
            "in": "body",
            "name": "product",
            "description": "defined on the fly product to be added to the consignment",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SimpleProductTransportModeOnTheFly"
            }
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/AddItemResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUserPlus"
        ]
      }
    },
    "/consignment/{consignmentId}/mixedPackingProduct": {
      "post": {
        "tags": [
          "Consignment contents"
        ],
        "summary": "Add a predefined mixed packing to a consignment",
        "description": "Adds a predefined mixed packing product, identified by reference, to an existing interactive consignment. It is also the attach step of the interactive workflow: reference is the productCode given to POST /mixedPackingProductInteractive, and the product must already have at least two contents. A mixed packing whose contents include Class 7 (radioactive) material is rejected, including products created before that restriction existed.",
        "operationId": "addMixedPackingProductToConsignment",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/ConsignmentIdPath"
          },
          {
            "in": "body",
            "name": "product",
            "description": "predefined mixed packing to be added to the consignment",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MixedPackingProductTransportMode"
            }
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/AddItemResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser"
        ]
      }
    },
    "/consignment/{consignmentId}/mixedPackingProductOnTheFly": {
      "post": {
        "tags": [
          "Consignment contents"
        ],
        "summary": "Add a mixed packing defined on the fly to a consignment",
        "description": "Adds a mixed packing product defined on the fly, fully described in the request, to an existing consignment.",
        "operationId": "addMixedPackingProductOnTheFlyToConsignment",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/ConsignmentIdPath"
          },
          {
            "in": "body",
            "name": "product",
            "description": "defined on the fly mixed packing to be added to the consignment",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MixedPackingProductTransportModeOnTheFly"
            }
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/AddItemResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUserPlus"
        ]
      }
    },
    "/consignment/{consignmentId}/mixedPackingProduct/{mixedPackingProductId}/content": {
      "post": {
        "tags": [
          "Consignment contents"
        ],
        "summary": "Add content to a mixed packing of a consignment",
        "description": "Adds an additional inner content to an existing mixed packing of the consignment.",
        "operationId": "addContentToMixedPackingProductInConsignment",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/ConsignmentIdPath"
          },
          {
            "$ref": "#/parameters/MixedPackingProductId"
          },
          {
            "in": "body",
            "name": "content",
            "description": "content to be added to the mixed packing product",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MixedPackingProductTransportModeContent"
            }
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/AddItemResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser"
        ]
      }
    },
    "/consignment/{consignmentId}/product/{productId}": {
      "delete": {
        "tags": [
          "Consignment contents"
        ],
        "summary": "Delete a product of a consignment",
        "description": "Removes a product (simple or mixed packing) from the consignment by its identifier. Its packages are unloaded from every transport equipment. The request is rejected with 400 when the master consignment of the consignment, or one that owns transport equipment carrying its packages, is approved, closed or cancelled.",
        "operationId": "deleteProductFromConsignment",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/ConsignmentIdPath"
          },
          {
            "$ref": "#/parameters/ProductId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ApiResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Consignment or product not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser"
        ]
      }
    },
    "/consignment/{consignmentId}/overpack": {
      "post": {
        "tags": [
          "Consignment contents"
        ],
        "summary": "Add an overpack to a consignment",
        "description": "Adds an overpack, optionally with grouped products, to an existing interactive consignment.",
        "operationId": "addOverpackToConsignment",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/ConsignmentIdPath"
          },
          {
            "in": "body",
            "name": "overpack",
            "description": "overpack to be added to a consignment",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Overpack"
            }
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/AddItemResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser"
        ]
      }
    },
    "/consignment/{consignmentId}/overpack/{overpackId}/simpleProduct": {
      "post": {
        "tags": [
          "Consignment contents"
        ],
        "summary": "Add a predefined product to an overpack",
        "description": "Adds a predefined simple product, identified by reference, to an existing overpack of the consignment.",
        "operationId": "addSimpleProductToOverpack",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/ConsignmentIdPath"
          },
          {
            "$ref": "#/parameters/OverpackId"
          },
          {
            "in": "body",
            "name": "product",
            "description": "predefined product to be added to the overpack",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SimpleProductTransportMode"
            }
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/AddItemResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser"
        ]
      }
    },
    "/consignment/{consignmentId}/overpack/{overpackId}/simpleProductOnTheFly": {
      "post": {
        "tags": [
          "Consignment contents"
        ],
        "summary": "Add a product defined on the fly to an overpack",
        "description": "Adds a simple product defined on the fly, fully described in the request, to an existing overpack of the consignment.",
        "operationId": "addSimpleProductOnTheFlyToOverpack",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/ConsignmentIdPath"
          },
          {
            "$ref": "#/parameters/OverpackId"
          },
          {
            "in": "body",
            "name": "product",
            "description": "defined on the fly product to be added to overpack",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SimpleProductTransportModeOnTheFly"
            }
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/AddItemResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUserPlus"
        ]
      }
    },
    "/consignment/{consignmentId}/overpack/{overpackId}/mixedPackingProduct": {
      "post": {
        "tags": [
          "Consignment contents"
        ],
        "summary": "Add a predefined mixed packing to an overpack",
        "description": "Adds a predefined mixed packing product, identified by reference, to an existing overpack.",
        "operationId": "addMixedPackingProductToOverpack",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/ConsignmentIdPath"
          },
          {
            "$ref": "#/parameters/OverpackId"
          },
          {
            "in": "body",
            "name": "product",
            "description": "predefined mixed packing to be added to overpack",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MixedPackingProductTransportMode"
            }
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/AddItemResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser"
        ]
      }
    },
    "/consignment/{consignmentId}/overpack/{overpackId}/mixedPackingProductOnTheFly": {
      "post": {
        "tags": [
          "Consignment contents"
        ],
        "summary": "Add a mixed packing defined on the fly to an overpack",
        "description": "Adds a mixed packing product defined on the fly, fully described in the request, to an existing overpack of the consignment.",
        "operationId": "addMixedPackingProductOnTheFlyToOverpack",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/ConsignmentIdPath"
          },
          {
            "$ref": "#/parameters/OverpackId"
          },
          {
            "in": "body",
            "name": "product",
            "description": "defined on the fly mixed packing to be added to overpack",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MixedPackingProductTransportModeOnTheFly"
            }
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/AddItemResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUserPlus"
        ]
      }
    },
    "/consignment/{consignmentId}/overpack/{overpackId}/mixedPackingProduct/{mixedPackingProductId}/content": {
      "post": {
        "tags": [
          "Consignment contents"
        ],
        "summary": "Add content to a mixed packing in an overpack",
        "description": "Adds an additional inner content to a mixed packing located inside an existing overpack.",
        "operationId": "addContentToMixedPackingProductInOverpack",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/ConsignmentIdPath"
          },
          {
            "$ref": "#/parameters/OverpackId"
          },
          {
            "$ref": "#/parameters/MixedPackingProductId"
          },
          {
            "in": "body",
            "name": "content",
            "description": "content to be added to the mixed packing product inside the overpack",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MixedPackingProductTransportModeContent"
            }
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/AddItemResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser"
        ]
      }
    },
    "/consignment/{consignmentId}/overpack/{overpackId}": {
      "delete": {
        "tags": [
          "Consignment contents"
        ],
        "summary": "Delete an overpack of a consignment",
        "description": "Removes an overpack and all its grouped products from the consignment.",
        "operationId": "deleteOverpackFromConsignment",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/ConsignmentIdPath"
          },
          {
            "$ref": "#/parameters/OverpackId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ApiResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Consignment or overpack not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser"
        ]
      }
    },
    "/consignment/{consignmentId}/document": {
      "post": {
        "tags": [
          "Consignment documents"
        ],
        "summary": "Get documents of a consignment",
        "description": "Generates a base 64 encoded transport document, checklist, package marking or, for air consignments, the air waybill data sheet (AirWaybillData) with the dangerous goods statements to be shown on the air waybill. When none of the requested document types applies to the regulation of the consignment, the request is rejected with 400.",
        "operationId": "getConsignmentDocument",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/ConsignmentIdPath"
          },
          {
            "in": "body",
            "name": "document",
            "description": "type of document",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ConsignmentDocument"
            }
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/Base64EncodedFileResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Consignment not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser"
        ]
      }
    },
    "/consignment/{consignmentId}/documentSendingByEmail": {
      "post": {
        "tags": [
          "Consignment documents"
        ],
        "summary": "Send documents of a consignment by email",
        "description": "Generates and sends the requested consignment documents by email to the supplied recipients.",
        "operationId": "sendConsignmentDocument",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/ConsignmentIdPath"
          },
          {
            "in": "body",
            "name": "documentDelivery",
            "description": "consignment document to be delivered and email addresses",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ConsignmentDocumentSendingByEmail"
            }
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ApiResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Consignment not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ApiUser"
        ]
      }
    },
    "/documentSnapshot/{documentToken}": {
      "get": {
        "tags": [
          "Consignment documents"
        ],
        "summary": "Get a frozen document by its public token",
        "description": "Returns the PDF of a frozen document snapshot. The operation requires no credentials: the address encoded in the QR code of the administrative control document of national road transport must lead directly to the download, without any intermediate page.\n\nThe token can also be the public token of a cargo transport unit, encoded in the QR code of its consolidation label. It then returns the latest packing list issued for the unit, in any language, until seven days after the arrival of the voyage of the unit, or seven days after the date of its master consignment when no arrival is known.\n\nAn unknown, disabled or expired token returns 404, and so does the token of a cargo transport unit whose first packing list has not been issued.",
        "operationId": "getDocumentSnapshot",
        "produces": [
          "application/pdf"
        ],
        "security": [],
        "parameters": [
          {
            "$ref": "#/parameters/DocumentToken"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "type": "file"
            }
          },
          "404": {
            "description": "The token does not exist, is disabled or is no longer available"
          }
        }
      }
    },
    "/consignmentNote/coverage": {
      "get": {
        "tags": [
          "Consignment notes"
        ],
        "summary": "Check the e-CMR Protocol coverage of a route",
        "description": "Returns whether the countries of taking over and delivery are both parties to the 2008 Additional Protocol to the CMR on the given date (today when omitted), with the date on which each one joined. When one of them is not a party, an international note for that route can only be issued on paper. Transit countries are not evaluated: a printed copy is recommended when the route may cross a country that is not a party.",
        "operationId": "getConsignmentNoteCoverage",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "takingOverCountryCode",
            "in": "query",
            "description": "ISO 3166-1 alpha-2 code of the country of taking over.",
            "x-example": "ES",
            "required": true,
            "type": "string"
          },
          {
            "name": "deliveryCountryCode",
            "in": "query",
            "description": "ISO 3166-1 alpha-2 code of the country of delivery.",
            "x-example": "FR",
            "required": true,
            "type": "string"
          },
          {
            "name": "date",
            "in": "query",
            "description": "Issue date to evaluate, in ISO 8601 format; today when omitted.",
            "x-example": "2026-11-02",
            "required": false,
            "type": "string",
            "format": "date"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ConsignmentNoteCoverageResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ConsignmentNote"
        ]
      }
    },
    "/consignmentNote": {
      "post": {
        "tags": [
          "Consignment notes"
        ],
        "summary": "Create a consignment note",
        "description": "Creates a consignment note in status `Draft` for a consignment and consignee. The parties, the vehicle, the driver, the references and one line per dangerous goods item, with its description generated under the regulation of the consignment, are taken from the consignment; any field given in the request overrides them.\n\nThere is one note in force per consignment and consignee: a cancelled or failed note can be replaced by a new one, which records the replaced note in `replacesConsignmentNoteId`. National notes, with taking over and delivery in the same country, are not available in every country; when they are not available in the country of the route, the request is rejected with an error on `consignmentNoteType`. Consignments under 49 CFR are rejected with 400.",
        "operationId": "addConsignmentNote",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "consignmentNote",
            "description": "consignment note to create from a consignment",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ConsignmentNote"
            }
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/AddItemResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ConsignmentNote"
        ]
      },
      "get": {
        "tags": [
          "Consignment notes"
        ],
        "summary": "Search the consignment notes of the accounts of the user",
        "description": "Returns a page of the consignment notes of the accounts that the user can read, filtered by number, consignment, type, status, client reference, issue mode, dates and errors.",
        "operationId": "getConsignmentNotes",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "consignmentNoteNumber",
            "in": "query",
            "description": "Number of the note, exact match.",
            "x-example": "CP-2026-0118",
            "required": false,
            "type": "string"
          },
          {
            "name": "consignmentId",
            "in": "query",
            "description": "Identifier of a consignment, to return only its notes.",
            "x-example": 48213,
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "consignmentNoteType",
            "in": "query",
            "description": "International CMR or national note.",
            "required": false,
            "type": "string",
            "enum": [
              "InternationalCmr",
              "National"
            ]
          },
          {
            "name": "status",
            "in": "query",
            "description": "Status of the note.",
            "required": false,
            "type": "string",
            "enum": [
              "Draft",
              "Validated",
              "Issued",
              "InProgress",
              "Delivered",
              "Cancelled",
              "Failed"
            ]
          },
          {
            "name": "clientReference",
            "in": "query",
            "description": "Identifier of the note in the system of the client, exact match.",
            "x-example": "TMS-889201",
            "required": false,
            "type": "string"
          },
          {
            "name": "hasError",
            "in": "query",
            "description": "True to return only the notes whose last issue or synchronisation failed.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "issueMode",
            "in": "query",
            "description": "Electronic note or paper.",
            "required": false,
            "type": "string",
            "enum": [
              "Electronic",
              "Paper"
            ]
          },
          {
            "name": "dateFrom",
            "in": "query",
            "description": "Earliest issue date, inclusive, in ISO 8601 format.",
            "x-example": "2026-11-01",
            "required": false,
            "type": "string",
            "format": "date"
          },
          {
            "name": "dateTo",
            "in": "query",
            "description": "Latest issue date, inclusive, in ISO 8601 format.",
            "x-example": "2026-11-30",
            "required": false,
            "type": "string",
            "format": "date"
          },
          {
            "$ref": "#/parameters/Page"
          },
          {
            "$ref": "#/parameters/PageSize"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ConsignmentNotesResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ConsignmentNote"
        ]
      }
    },
    "/consignmentNote/{consignmentNoteId}": {
      "get": {
        "tags": [
          "Consignment notes"
        ],
        "summary": "Get a consignment note",
        "description": "Returns the consignment note with its carriers, lines, charges, attachments and issue state.",
        "operationId": "getConsignmentNote",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/ConsignmentNoteId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ConsignmentNoteResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Consignment note not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ConsignmentNote"
        ]
      },
      "put": {
        "tags": [
          "Consignment notes"
        ],
        "summary": "Update a consignment note",
        "description": "Updates the data of the note while its status is `Draft`, `Validated` or `Failed`; the lists (carriers, lines, references and charges) replace the current ones. The consignment of the note cannot change. After issue the data is locked: changes are recorded as events, and a substantive correction requires cancelling the note and issuing a new one. A change that leaves taking over and delivery in the same country, where national notes are not available, is rejected with an error on `consignmentNoteType`.",
        "operationId": "updateConsignmentNote",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "consignmentNote",
            "description": "consignment note data that replace the current ones",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ConsignmentNote"
            }
          },
          {
            "$ref": "#/parameters/ConsignmentNoteId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ApiResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Consignment note not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "409": {
            "$ref": "#/responses/Conflict"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ConsignmentNote"
        ]
      },
      "delete": {
        "tags": [
          "Consignment notes"
        ],
        "summary": "Delete a consignment note",
        "description": "Deletes a note in status `Draft`, `Validated` or `Failed` that has not been issued.",
        "operationId": "deleteConsignmentNote",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/ConsignmentNoteId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ApiResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Consignment note not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "409": {
            "$ref": "#/responses/Conflict"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ConsignmentNote"
        ]
      }
    },
    "/consignmentNote/{consignmentNoteId}/attachment": {
      "post": {
        "tags": [
          "Consignment notes"
        ],
        "summary": "Add an attachment to a consignment note",
        "description": "Stores the file, or generates it for `TransportDocument`, and, when the note is already issued and `isCarriedWithNote` is true, attaches it to the electronic note. When `fileName` is omitted, the application generates it.",
        "operationId": "addAttachmentToConsignmentNote",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "attachment",
            "description": "attachment to add",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ConsignmentNoteAttachment"
            }
          },
          {
            "$ref": "#/parameters/ConsignmentNoteId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/AddItemResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Consignment note not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "409": {
            "$ref": "#/responses/Conflict"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ConsignmentNote"
        ]
      },
      "get": {
        "tags": [
          "Consignment notes"
        ],
        "summary": "List the attachments of a consignment note",
        "description": "Returns the attachments of the note without their content.",
        "operationId": "getConsignmentNoteAttachments",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/ConsignmentNoteId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ConsignmentNoteAttachmentsResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Consignment note not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ConsignmentNote"
        ]
      }
    },
    "/consignmentNote/{consignmentNoteId}/attachment/{attachmentId}": {
      "delete": {
        "tags": [
          "Consignment notes"
        ],
        "summary": "Delete an attachment of a consignment note",
        "description": "Removes the attachment from the note; when it travels with the electronic note, it is also withdrawn from it.",
        "operationId": "deleteAttachmentFromConsignmentNote",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/ConsignmentNoteId"
          },
          {
            "$ref": "#/parameters/AttachmentId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ApiResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Consignment note or attachment not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "409": {
            "$ref": "#/responses/Conflict"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ConsignmentNote"
        ]
      }
    },
    "/consignmentNote/{consignmentNoteId}/validate": {
      "post": {
        "tags": [
          "Consignment notes"
        ],
        "summary": "Validate a consignment note",
        "description": "Checks the note in one pass: parties with a complete address and ISO country, places of taking over and delivery, at least one line with packages and gross mass, the ADR description of every dangerous line, a contractual carrier with a vehicle registration, the currency when amounts are given, that national notes are available in the country of the route and, for international notes, the coverage of the eCMR Protocol on the issue date. Warnings, such as a plate without a country, are also returned. When there are no errors, the status of the note becomes `Validated`; nothing else is modified.",
        "operationId": "validateConsignmentNote",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "emptyBody",
            "description": "empty object, `{}`: the operation reads nothing from it, but a POST request without a body is rejected",
            "required": true,
            "schema": {
              "$ref": "#/definitions/EmptyRequestBody"
            }
          },
          {
            "$ref": "#/parameters/ConsignmentNoteId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ValidatedItemResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Consignment note not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "409": {
            "$ref": "#/responses/Conflict"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ConsignmentNote"
        ]
      }
    },
    "/consignmentNote/{consignmentNoteId}/issue": {
      "post": {
        "tags": [
          "Consignment notes"
        ],
        "summary": "Issue a consignment note",
        "description": "Validates the note and issues it with the attachments marked to travel with it: the note receives its number and the `Issued` event is recorded. When the validation fails, nothing is issued and every problem is returned at once. Every property of the request body is optional; send an empty object to use the defaults.\n\nThe note is issued on paper (`issueMode` `Paper`) when it is international and its route is not covered by the eCMR Protocol (`paperReason` `RouteNotCovered`), or when the account cannot issue it electronically because the user has no electronic consignment note licence or no electronic note service is configured for the account (`paperReason` `ElectronicIssueNotEnabled`). The application then generates a printable note, numbered by the application, and the delivery is recorded with the paper delivery operation. An international note issued electronically returns a warning that recommends carrying a printed copy, because the route may cross countries that are not parties to the Protocol.\n\nAn issued note cannot be issued again. `requestGuid` is also the idempotency key of the issue of this note: while the note remains issued, repeating the request with the same value returns the note as it is, without issuing it again, even when the body differs, and another value is rejected with 409. A cancelled note cannot be issued either: a new note of the same consignment and consignee replaces it, and its `replacesConsignmentNoteId` identifies the cancelled note. When the issue fails, the note becomes `Failed` and `lastError` describes the reason.\n\nWhile the issue waits for the answer of the electronic note service, the following requests are rejected with 409: a repetition with the same `requestGuid`, which must be retried later, a new issue, a change, the cancellation and the deletion of the note. If the note was cancelled or issued again in the meantime, the issue is rejected with 409 and the note is not issued.",
        "operationId": "issueConsignmentNote",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "issue",
            "description": "issue parameters, or an empty object to use the defaults",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ConsignmentNoteIssue"
            }
          },
          {
            "$ref": "#/parameters/ConsignmentNoteId"
          },
          {
            "in": "query",
            "name": "requestGuid",
            "required": false,
            "type": "string",
            "description": "Identifier of the request, up to 36 characters, used to trace it. This operation also uses it as an idempotency key, as its description explains.",
            "maxLength": 36
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ConsignmentNoteResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Consignment note not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "409": {
            "$ref": "#/responses/Conflict"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ConsignmentNote"
        ]
      }
    },
    "/consignmentNote/{consignmentNoteId}/share": {
      "post": {
        "tags": [
          "Consignment notes"
        ],
        "summary": "Share a consignment note",
        "description": "Sends the note to its contacts and to the additional recipients: the signed copy once it exists, and the draft PDF before that. The sending is recorded as a `Shared` event with the recipients and the user. Every property of the request body is optional; send an empty object to use the defaults.\n\nAt most 10 email recipients are allowed, the contacts of the note included, and every additional address must be a valid email address. When the note is sent by email and some recipients cannot be reached, the request succeeds with a warning that names them, and only the recipients reached are recorded; when none can be reached, the request fails.",
        "operationId": "shareConsignmentNote",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "share",
            "description": "recipients and message, or an empty object to send the note to its contacts",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ConsignmentNoteSharing"
            }
          },
          {
            "$ref": "#/parameters/ConsignmentNoteId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ApiResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Consignment note not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ConsignmentNote"
        ]
      }
    },
    "/consignmentNote/{consignmentNoteId}/document": {
      "post": {
        "tags": [
          "Consignment notes"
        ],
        "summary": "Get a document of a consignment note",
        "description": "Returns the requested document base 64 encoded. `SignedPdf` is available once the delivery has been notified. Once `SignedPdf` and `EvidenceReport` exist, later requests return the same document. A user who can only read the account of the note gets the existing document, or one generated only for that request. When the requested document is not available, the request is rejected with 409.",
        "operationId": "getConsignmentNoteDocument",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "document",
            "description": "document to return",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ConsignmentNoteDocument"
            }
          },
          {
            "$ref": "#/parameters/ConsignmentNoteId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/Base64EncodedFileResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Consignment note not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "409": {
            "$ref": "#/responses/Conflict"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ConsignmentNote"
        ]
      }
    },
    "/consignmentNote/{consignmentNoteId}/sync": {
      "post": {
        "tags": [
          "Consignment notes"
        ],
        "summary": "Refresh the status and events of a consignment note",
        "description": "Reads the current status and the new events of an issued note, records them and updates its status. Use it when the notifications of the journey have not arrived.",
        "operationId": "syncConsignmentNote",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "emptyBody",
            "description": "empty object, `{}`: the operation reads nothing from it, but a POST request without a body is rejected",
            "required": true,
            "schema": {
              "$ref": "#/definitions/EmptyRequestBody"
            }
          },
          {
            "$ref": "#/parameters/ConsignmentNoteId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ConsignmentNoteResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Consignment note not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "409": {
            "$ref": "#/responses/Conflict"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ConsignmentNote"
        ]
      }
    },
    "/consignmentNote/{consignmentNoteId}/event": {
      "get": {
        "tags": [
          "Consignment notes"
        ],
        "summary": "Get the events of a consignment note",
        "description": "Returns the events of the note, oldest first: those produced by the application, those received during the journey and the changes recorded after issue. Signatures and evidence remain in the signed PDF and in the evidence report; a photo or document added with an event is downloaded with the event document operation.",
        "operationId": "getConsignmentNoteEvents",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/ConsignmentNoteId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ConsignmentNoteEventsResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Consignment note not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ConsignmentNote"
        ]
      },
      "post": {
        "tags": [
          "Consignment notes"
        ],
        "summary": "Record a change to an issued consignment note",
        "description": "Only for issued notes. Updates the affected data (carrier, place of delivery or consignee) and records the change as an event. When the change is applied, an `Accepted` event that refers to it with `relatedEventId` is recorded; when it cannot be applied, an `Error` event that refers to it is recorded and the note is not modified. Only the `Accepted` or `Error` event is notified by webhook. Returns the updated note.",
        "operationId": "recordConsignmentNoteEvent",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "change",
            "description": "change to record",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ConsignmentNoteChange"
            }
          },
          {
            "$ref": "#/parameters/ConsignmentNoteId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ConsignmentNoteResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Consignment note not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "409": {
            "$ref": "#/responses/Conflict"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ConsignmentNote"
        ]
      }
    },
    "/consignmentNote/{consignmentNoteId}/event/{eventId}/document": {
      "get": {
        "tags": [
          "Consignment notes"
        ],
        "summary": "Get the document added with a consignment note event",
        "description": "Returns, base 64 encoded, the document or photo added with a `DocumentAdded` event, such as a signed delivery note or a weight ticket. It is also available to a user who can only read the account of the note. An event without a document is rejected with 400.",
        "operationId": "getConsignmentNoteEventDocument",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/ConsignmentNoteId"
          },
          {
            "$ref": "#/parameters/EventId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/Base64EncodedFileResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Consignment note or event not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ConsignmentNote"
        ]
      }
    },
    "/consignmentNote/{consignmentNoteId}/paperDelivery": {
      "post": {
        "tags": [
          "Consignment notes"
        ],
        "summary": "Record the delivery of a paper consignment note",
        "description": "Only for notes issued on paper (`issueMode` `Paper`) in status `Issued` or `InProgress`; any other note is rejected with 409. Stores the scanned signed copy as the signed document of the note when it is given, records a `Delivered` event with the signer and sets the status to `Delivered`. Returns the updated note.",
        "operationId": "recordConsignmentNotePaperDelivery",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "delivery",
            "description": "delivery signed on paper",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ConsignmentNotePaperDelivery"
            }
          },
          {
            "$ref": "#/parameters/ConsignmentNoteId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ConsignmentNoteResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Consignment note not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "409": {
            "$ref": "#/responses/Conflict"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ConsignmentNote"
        ]
      }
    },
    "/consignmentNote/{consignmentNoteId}/cancel": {
      "post": {
        "tags": [
          "Consignment notes"
        ],
        "summary": "Cancel a consignment note",
        "description": "Cancels the note and records the `Cancelled` event with the reason, when one is given; an electronic note is also cancelled where it was issued, and the reason is sent with the cancellation. For an electronic note, an `Accepted` event that refers to the `Cancelled` event with `relatedEventId` is recorded when the cancellation is accepted; when it is rejected, an `Error` event that refers to it is recorded and the note is not cancelled. Only the `Accepted` or `Error` event is notified by webhook. A cancelled note can be replaced by creating a new one for the same consignment and consignee.",
        "operationId": "cancelConsignmentNote",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "cancellation",
            "description": "reason of the cancellation, or an empty object when there is none",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ConsignmentNoteCancellation"
            }
          },
          {
            "$ref": "#/parameters/ConsignmentNoteId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ConsignmentNoteResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Consignment note not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "409": {
            "$ref": "#/responses/Conflict"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ConsignmentNote"
        ]
      }
    },
    "/consolidationRequest": {
      "post": {
        "tags": [
          "Consolidation requests"
        ],
        "summary": "Request the consolidation of a consignment",
        "description": "For client accounts of an external safety adviser that holds the consolidation add-on, and for that adviser on behalf of its clients: a user with consolidation can also request it, so one user can both request and decide. The consignment, given by `consignmentId`, must be valid, must not belong to a master consignment and must not have a pending or accepted request. A data snapshot of the consignment is taken, the request is recorded and the consolidator is notified by email and by the `ConsolidationRequestCreated` webhook event. Every problem is reported at once.",
        "operationId": "addConsolidationRequest",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "consolidationRequest",
            "description": "consignment to consolidate, with an optional reference and remarks for the consolidator",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ConsolidationRequest"
            }
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/AddItemResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ConsolidationRequester"
        ]
      },
      "get": {
        "tags": [
          "Consolidation requests"
        ],
        "summary": "Search the consolidation requests of the account",
        "description": "Returns a page of consolidation requests: a client account sees its own requests and a consolidator account sees the requests addressed to it.",
        "operationId": "getConsolidationRequests",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "description": "Status of the request.",
            "required": false,
            "type": "string",
            "enum": [
              "Requested",
              "Accepted",
              "Rejected",
              "Withdrawn",
              "Completed"
            ]
          },
          {
            "name": "consignmentId",
            "in": "query",
            "description": "Identifier of the consignment to consolidate.",
            "x-example": 48213,
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "masterConsignmentId",
            "in": "query",
            "description": "Identifier of the master consignment into which the request was accepted.",
            "x-example": 97,
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "requesterAccountCode",
            "in": "query",
            "description": "Code of the client account, for consolidator accounts.",
            "x-example": "WP001",
            "required": false,
            "type": "string"
          },
          {
            "name": "dateFrom",
            "in": "query",
            "description": "Earliest request date, inclusive, in ISO 8601 format.",
            "x-example": "2026-11-01",
            "required": false,
            "type": "string",
            "format": "date"
          },
          {
            "name": "dateTo",
            "in": "query",
            "description": "Latest request date, inclusive, in ISO 8601 format.",
            "x-example": "2026-11-30",
            "required": false,
            "type": "string",
            "format": "date"
          },
          {
            "$ref": "#/parameters/Page"
          },
          {
            "$ref": "#/parameters/PageSize"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ConsolidationRequestsResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ConsolidationRequester",
          "Consolidation"
        ]
      }
    },
    "/consolidationRequest/{consolidationRequestId}": {
      "get": {
        "tags": [
          "Consolidation requests"
        ],
        "summary": "Get a consolidation request",
        "description": "Returns the request, the summary of the consignment and, once accepted, the master consignment, the nominated transport movement and its planned dates.",
        "operationId": "getConsolidationRequest",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/ConsolidationRequestId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ConsolidationRequestResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Consolidation request not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ConsolidationRequester",
          "Consolidation"
        ]
      }
    },
    "/consolidationRequest/{consolidationRequestId}/withdraw": {
      "post": {
        "tags": [
          "Consolidation requests"
        ],
        "summary": "Withdraw a consolidation request",
        "description": "For the client account, or for its adviser on its behalf. Withdraws a request in status `Requested` and notifies the consolidator; in any other status the request is rejected with 409.",
        "operationId": "withdrawConsolidationRequest",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "emptyBody",
            "description": "empty object, `{}`: the operation reads nothing from it, but a POST request without a body is rejected",
            "required": true,
            "schema": {
              "$ref": "#/definitions/EmptyRequestBody"
            }
          },
          {
            "$ref": "#/parameters/ConsolidationRequestId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ConsolidationRequestResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Consolidation request not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "409": {
            "$ref": "#/responses/Conflict"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ConsolidationRequester"
        ]
      }
    },
    "/consolidationRequest/{consolidationRequestId}/accept": {
      "post": {
        "tags": [
          "Consolidation requests"
        ],
        "summary": "Accept a consolidation request",
        "description": "For the consolidator account. Adds the consignment to the given master consignment, or to a new one created in status `Draft`, with the same checks as `addConsignmentsToMasterConsignment`; takes the acceptance snapshot and notifies the client. Only in status `Requested`; otherwise the request is rejected with 409.",
        "operationId": "acceptConsolidationRequest",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "acceptance",
            "description": "master consignment that receives the consignment",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ConsolidationRequestAcceptance"
            }
          },
          {
            "$ref": "#/parameters/ConsolidationRequestId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ConsolidationRequestResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Consolidation request not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "409": {
            "$ref": "#/responses/Conflict"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      }
    },
    "/consolidationRequest/{consolidationRequestId}/reject": {
      "post": {
        "tags": [
          "Consolidation requests"
        ],
        "summary": "Reject a consolidation request",
        "description": "For the consolidator account. The reason is mandatory and is shown to the client. Only in status `Requested`; otherwise the request is rejected with 409.",
        "operationId": "rejectConsolidationRequest",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "rejection",
            "description": "reason for the rejection",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ConsolidationRequestRejection"
            }
          },
          {
            "$ref": "#/parameters/ConsolidationRequestId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ConsolidationRequestResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Consolidation request not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "409": {
            "$ref": "#/responses/Conflict"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      }
    },
    "/masterConsignment": {
      "post": {
        "tags": [
          "Master consignments"
        ],
        "summary": "Create a master consignment",
        "description": "Creates a master consignment in status `Draft`. Consignments can be added on creation or later, and the number is generated when omitted.",
        "operationId": "addMasterConsignment",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "masterConsignment",
            "description": "master consignment",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MasterConsignment"
            }
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/AddItemResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      },
      "get": {
        "tags": [
          "Master consignments"
        ],
        "summary": "Search the master consignments of the accounts of the user",
        "description": "Returns a page of the master consignments of the accounts that the user can read, filtered by number, booking, master document, status, kind of consolidation, date or consignment.",
        "operationId": "getMasterConsignments",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "masterConsignmentNumber",
            "in": "query",
            "description": "Number of the master consignment, exact match.",
            "x-example": "MC-2026-0007",
            "required": false,
            "type": "string"
          },
          {
            "name": "bookingNumber",
            "in": "query",
            "description": "Booking number, exact match.",
            "x-example": "NPDL-4471209",
            "required": false,
            "type": "string"
          },
          {
            "name": "masterDocumentNumber",
            "in": "query",
            "description": "Master air waybill or master bill of lading number, exact match.",
            "x-example": "020-12345675",
            "required": false,
            "type": "string"
          },
          {
            "name": "status",
            "in": "query",
            "description": "Workflow status of the master consignment.",
            "required": false,
            "type": "string",
            "enum": [
              "Draft",
              "Submitted",
              "InformationRequested",
              "PreApproved",
              "FinalDocumentationSubmitted",
              "Approved",
              "Rejected",
              "Closed",
              "Cancelled"
            ]
          },
          {
            "name": "consolidationType",
            "in": "query",
            "description": "Kind of consolidation of the master consignment.",
            "required": false,
            "type": "string",
            "enum": [
              "Road",
              "SeaLcl",
              "SeaFcl",
              "Air"
            ]
          },
          {
            "name": "consignmentId",
            "in": "query",
            "description": "Identifier of a consignment, to return the master consignment that contains it.",
            "x-example": 48213,
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "dateFrom",
            "in": "query",
            "description": "Earliest date of the master consignment, inclusive, in ISO 8601 format.",
            "x-example": "2026-11-01",
            "required": false,
            "type": "string",
            "format": "date"
          },
          {
            "name": "dateTo",
            "in": "query",
            "description": "Latest date of the master consignment, inclusive, in ISO 8601 format.",
            "x-example": "2026-11-30",
            "required": false,
            "type": "string",
            "format": "date"
          },
          {
            "$ref": "#/parameters/Page"
          },
          {
            "$ref": "#/parameters/PageSize"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/MasterConsignmentsResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      }
    },
    "/masterConsignment/{masterConsignmentId}": {
      "get": {
        "tags": [
          "Master consignments"
        ],
        "summary": "Get a master consignment",
        "description": "Returns the master consignment with its parties, references, consignments and transport equipment.",
        "operationId": "getMasterConsignment",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/MasterConsignmentId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/MasterConsignmentResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Master consignment not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      },
      "put": {
        "tags": [
          "Master consignments"
        ],
        "summary": "Update a master consignment",
        "description": "Updates the data, parties and references of the master consignment; the lists in the request replace the current ones. Consignments are added and removed separately. Not allowed in status `Closed` or `Cancelled`. The consolidation type cannot change while the master consignment has consignments or its own transport equipment (400 naming `consolidationType`).",
        "operationId": "updateMasterConsignment",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "masterConsignment",
            "description": "master consignment data that replace the current ones",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MasterConsignment"
            }
          },
          {
            "$ref": "#/parameters/MasterConsignmentId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ApiResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Master consignment not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "409": {
            "$ref": "#/responses/Conflict"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      },
      "delete": {
        "tags": [
          "Master consignments"
        ],
        "summary": "Delete a master consignment",
        "description": "Deletes a master consignment in status `Draft` or `Cancelled`. Its consignments and transport equipment are removed from it, not deleted. Its accepted consolidation requests are rejected with the reason that the master consignment was deleted, and their requesters are notified; no consolidation request refers to it afterwards.",
        "operationId": "deleteMasterConsignment",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/MasterConsignmentId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ApiResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Master consignment not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "409": {
            "$ref": "#/responses/Conflict"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      }
    },
    "/masterConsignment/{masterConsignmentId}/consignment": {
      "post": {
        "tags": [
          "Master consignments"
        ],
        "summary": "Add consignments to a master consignment",
        "description": "Adds consignments of the account, or of the client accounts of its consultancy, directly or through an accepted consolidation request. Each consignment may belong to one master consignment only. Answers 201 with the master consignment, including the list of its consignments.\n\nThe consignments are checked against the rules of the master consignment, and every problem is reported at once. The vessel and the route are checked later, when the transport equipment is placed on the transport movement.",
        "operationId": "addConsignmentsToMasterConsignment",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "consignments",
            "description": "consignments to add",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MasterConsignmentConsignments"
            }
          },
          {
            "$ref": "#/parameters/MasterConsignmentId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/MasterConsignmentResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Master consignment not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "409": {
            "$ref": "#/responses/Conflict"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      }
    },
    "/masterConsignment/{masterConsignmentId}/consignment/{consignmentId}": {
      "delete": {
        "tags": [
          "Master consignments"
        ],
        "summary": "Remove a consignment from a master consignment",
        "description": "Removes the consignment from the master consignment; its packages are unloaded from the transport equipment of the master consignment.",
        "operationId": "deleteConsignmentFromMasterConsignment",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/MasterConsignmentId"
          },
          {
            "$ref": "#/parameters/ConsignmentIdPath"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ApiResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Master consignment or consignment not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "409": {
            "$ref": "#/responses/Conflict"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      }
    },
    "/masterConsignment/{masterConsignmentId}/submit": {
      "post": {
        "tags": [
          "Master consignments"
        ],
        "summary": "Submit the master consignment to the carrier",
        "description": "Sends the dangerous goods application: allowed in `Draft` and `InformationRequested`, leads to `Submitted`. Takes a data snapshot of the master consignment (`dataSnapshotId` of the event). The optional remarks are recorded in the event. Every transition is recorded as an event and notified with the `MasterConsignmentStatusChanged` webhook. A transition that the current status does not allow answers 409.",
        "operationId": "submitMasterConsignment",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "masterConsignmentTransition",
            "description": "remarks of the transition, or an empty object when none are needed",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MasterConsignmentTransition"
            }
          },
          {
            "$ref": "#/parameters/MasterConsignmentId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/MasterConsignmentResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Master consignment not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "409": {
            "$ref": "#/responses/Conflict"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      }
    },
    "/masterConsignment/{masterConsignmentId}/requestInformation": {
      "post": {
        "tags": [
          "Master consignments"
        ],
        "summary": "Request more information about the master consignment",
        "description": "Allowed in `Submitted` and `FinalDocumentationSubmitted`, leads to `InformationRequested`. The remarks are mandatory: they state the information requested. Every transition is recorded as an event and notified with the `MasterConsignmentStatusChanged` webhook. A transition that the current status does not allow answers 409.",
        "operationId": "requestMasterConsignmentInformation",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "masterConsignmentTransition",
            "description": "remarks of the transition, or an empty object when none are needed",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MasterConsignmentTransition"
            }
          },
          {
            "$ref": "#/parameters/MasterConsignmentId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/MasterConsignmentResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Master consignment not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "409": {
            "$ref": "#/responses/Conflict"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      }
    },
    "/masterConsignment/{masterConsignmentId}/preApprove": {
      "post": {
        "tags": [
          "Master consignments"
        ],
        "summary": "Pre-approve the master consignment",
        "description": "Allowed in `Submitted`, leads to `PreApproved`: the transport equipment may be packed. Takes a data snapshot of the master consignment. Every transition is recorded as an event and notified with the `MasterConsignmentStatusChanged` webhook. A transition that the current status does not allow answers 409.",
        "operationId": "preApproveMasterConsignment",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "masterConsignmentTransition",
            "description": "remarks of the transition, or an empty object when none are needed",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MasterConsignmentTransition"
            }
          },
          {
            "$ref": "#/parameters/MasterConsignmentId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/MasterConsignmentResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Master consignment not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "409": {
            "$ref": "#/responses/Conflict"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      }
    },
    "/masterConsignment/{masterConsignmentId}/submitFinalDocumentation": {
      "post": {
        "tags": [
          "Master consignments"
        ],
        "summary": "Record the final documentation of the master consignment",
        "description": "Allowed in `PreApproved`, leads to `FinalDocumentationSubmitted`. Takes a data snapshot of the master consignment and records the differences with the snapshot taken at the pre-approval. Every transition is recorded as an event and notified with the `MasterConsignmentStatusChanged` webhook. A transition that the current status does not allow answers 409.",
        "operationId": "submitMasterConsignmentFinalDocumentation",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "masterConsignmentTransition",
            "description": "remarks of the transition, or an empty object when none are needed",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MasterConsignmentTransition"
            }
          },
          {
            "$ref": "#/parameters/MasterConsignmentId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/MasterConsignmentResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Master consignment not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "409": {
            "$ref": "#/responses/Conflict"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      }
    },
    "/masterConsignment/{masterConsignmentId}/approve": {
      "post": {
        "tags": [
          "Master consignments"
        ],
        "summary": "Approve the master consignment",
        "description": "Allowed in `FinalDocumentationSubmitted`, leads to `Approved`; a transition that the current status does not allow answers 409. Every transition is recorded as an event and notified with the `MasterConsignmentStatusChanged` webhook, and the approval records the differences with the snapshot taken at the pre-approval.\n\nThe approval requires a valid segregation check, not obsolete, of every piece of transport equipment whose content has segregation rules and, for road movements under `Adr`, a valid load threshold calculation of the nominated transport movement. Otherwise every reason is returned at once and the status does not change.",
        "operationId": "approveMasterConsignment",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "masterConsignmentTransition",
            "description": "remarks of the transition, or an empty object when none are needed",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MasterConsignmentTransition"
            }
          },
          {
            "$ref": "#/parameters/MasterConsignmentId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/MasterConsignmentResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Master consignment not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "409": {
            "$ref": "#/responses/Conflict"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      }
    },
    "/masterConsignment/{masterConsignmentId}/reject": {
      "post": {
        "tags": [
          "Master consignments"
        ],
        "summary": "Reject the master consignment",
        "description": "Allowed in `Submitted`, `InformationRequested`, `PreApproved` and `FinalDocumentationSubmitted`, leads to `Rejected`. The remarks are mandatory: they state the reason. Every transition is recorded as an event and notified with the `MasterConsignmentStatusChanged` webhook. A transition that the current status does not allow answers 409.",
        "operationId": "rejectMasterConsignment",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "masterConsignmentTransition",
            "description": "remarks of the transition, or an empty object when none are needed",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MasterConsignmentTransition"
            }
          },
          {
            "$ref": "#/parameters/MasterConsignmentId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/MasterConsignmentResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Master consignment not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "409": {
            "$ref": "#/responses/Conflict"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      }
    },
    "/masterConsignment/{masterConsignmentId}/close": {
      "post": {
        "tags": [
          "Master consignments"
        ],
        "summary": "Close the master consignment",
        "description": "Allowed in `Approved`, leads to `Closed`: the master consignment becomes read-only and its accepted consolidation requests are completed. Every transition is recorded as an event and notified with the `MasterConsignmentStatusChanged` webhook. A transition that the current status does not allow answers 409.",
        "operationId": "closeMasterConsignment",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "masterConsignmentTransition",
            "description": "remarks of the transition, or an empty object when none are needed",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MasterConsignmentTransition"
            }
          },
          {
            "$ref": "#/parameters/MasterConsignmentId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/MasterConsignmentResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Master consignment not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "409": {
            "$ref": "#/responses/Conflict"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      }
    },
    "/masterConsignment/{masterConsignmentId}/cancel": {
      "post": {
        "tags": [
          "Master consignments"
        ],
        "summary": "Cancel the master consignment",
        "description": "Allowed in `Draft`, `InformationRequested`, `PreApproved` and `Approved`, leads to `Cancelled`; the consolidation requests accepted into it are rejected. Every transition is recorded as an event and notified with the `MasterConsignmentStatusChanged` webhook. A transition that the current status does not allow answers 409.",
        "operationId": "cancelMasterConsignment",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "masterConsignmentTransition",
            "description": "remarks of the transition, or an empty object when none are needed",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MasterConsignmentTransition"
            }
          },
          {
            "$ref": "#/parameters/MasterConsignmentId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/MasterConsignmentResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Master consignment not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "409": {
            "$ref": "#/responses/Conflict"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      }
    },
    "/masterConsignment/{masterConsignmentId}/reopen": {
      "post": {
        "tags": [
          "Master consignments"
        ],
        "summary": "Reopen a rejected master consignment",
        "description": "Allowed in `Rejected`, takes the master consignment back to `Draft`. Every transition is recorded as an event and notified with the `MasterConsignmentStatusChanged` webhook. A transition that the current status does not allow answers 409.",
        "operationId": "reopenMasterConsignment",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "masterConsignmentTransition",
            "description": "remarks of the transition, or an empty object when none are needed",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MasterConsignmentTransition"
            }
          },
          {
            "$ref": "#/parameters/MasterConsignmentId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/MasterConsignmentResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Master consignment not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "409": {
            "$ref": "#/responses/Conflict"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      }
    },
    "/masterConsignment/{masterConsignmentId}/event": {
      "get": {
        "tags": [
          "Master consignments"
        ],
        "summary": "Get the events of a master consignment",
        "description": "Returns the events of the master consignment: status transitions, consignments added and removed, transport equipment assigned and released, and comments, oldest first.",
        "operationId": "getMasterConsignmentEvents",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/MasterConsignmentId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/MasterConsignmentEventsResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Master consignment not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      }
    },
    "/transportEquipment": {
      "post": {
        "tags": [
          "Transport equipment"
        ],
        "summary": "Create transport equipment",
        "description": "Creates transport equipment in the workplace given in `workPlaceCode`, which is required: a customer workplace in which the user can write. Container numbers are validated against ISO 6346.\n\nThe equipment can be assigned to a master consignment on creation; the master consignment must be enabled, of a workplace of the same company that the user can write, and in a status that allows changes. The carrying transport equipment must be of an account the user can read and of the chain of the workplace: the workplace, the other workplaces of its company, the company and its group. A master consignment or carrying transport equipment that does not exist, or that does not meet these conditions, is rejected with 400.",
        "operationId": "addTransportEquipment",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "equipment",
            "description": "transport equipment",
            "required": true,
            "schema": {
              "$ref": "#/definitions/TransportEquipmentCreation"
            }
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/AddItemResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      },
      "get": {
        "tags": [
          "Transport equipment"
        ],
        "summary": "Search the transport equipment of the accounts of the user",
        "description": "Returns a page of the transport equipment of the accounts that the user can read. Transport equipment created automatically from the IMDG or IATA data of a consignment is excluded unless `includeImplicit` is true.",
        "operationId": "getTransportEquipmentList",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "identification",
            "in": "query",
            "description": "Beginning of the container number, registration plate or ULD identifier.",
            "x-example": "MSCU",
            "required": false,
            "type": "string"
          },
          {
            "name": "equipmentType",
            "in": "query",
            "description": "Kind of transport equipment.",
            "required": false,
            "type": "string",
            "enum": [
              "Container",
              "TankContainer",
              "Vehicle",
              "Trailer",
              "Wagon",
              "UnitLoadDevice",
              "SwapBody"
            ]
          },
          {
            "name": "loadState",
            "in": "query",
            "description": "Load state of the transport equipment.",
            "required": false,
            "type": "string",
            "enum": [
              "Full",
              "Empty",
              "Residue"
            ]
          },
          {
            "name": "masterConsignmentId",
            "in": "query",
            "description": "Identifier of a master consignment, to return only the transport equipment assigned to it.",
            "x-example": 97,
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "transportMovementId",
            "in": "query",
            "description": "Identifier of a transport movement, to return only its transport equipment.",
            "x-example": 311,
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "consignmentId",
            "in": "query",
            "description": "Identifier of a consignment, to return only the transport equipment that contains its items.",
            "x-example": 48213,
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "includeImplicit",
            "in": "query",
            "description": "True to include the transport equipment created automatically from the IMDG or IATA data of a consignment; false when omitted.",
            "required": false,
            "type": "boolean"
          },
          {
            "$ref": "#/parameters/Page"
          },
          {
            "$ref": "#/parameters/PageSize"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/TransportEquipmentListResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      }
    },
    "/transportEquipment/validate": {
      "post": {
        "tags": [
          "Transport equipment"
        ],
        "summary": "Validate planned transport equipment",
        "description": "Validates planned transport equipment and the items that would be loaded into it, without storing anything: segregation and packing and quantity limits, for warehouse and planning systems before picking. Both `transportEquipment` and at least one element of `contents` are required, and `transportEquipment.workPlaceCode` is required as on creation: the identification is checked against the transport equipment of the company of that workplace.",
        "operationId": "validateTransportEquipment",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "validation",
            "description": "planned transport equipment and the items to load into it",
            "required": true,
            "schema": {
              "$ref": "#/definitions/TransportEquipmentValidation"
            }
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ValidatedItemResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      }
    },
    "/transportEquipment/{transportEquipmentId}": {
      "get": {
        "tags": [
          "Transport equipment"
        ],
        "summary": "Get transport equipment",
        "description": "Returns the transport equipment with its loaded items, its transport movements and its most recent segregation check.",
        "operationId": "getTransportEquipment",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/TransportEquipmentId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/TransportEquipmentResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Transport equipment not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      },
      "put": {
        "tags": [
          "Transport equipment"
        ],
        "summary": "Update transport equipment",
        "description": "Updates the identification, type, seals, masses, load state, master consignment, packing certificate, fumigation and coolant data. Transport equipment does not change workplace: `workPlaceCode` can be omitted and, when given, must be the code of its workplace. After an update, transport equipment that the application created automatically from a consignment is no longer reported as such (`isImplicit` is false).\n\nWhen the master consignment changes, the new one must meet the same conditions as on creation, and the one that is left must allow changes. When the carrying transport equipment changes, it must be of an account the user can read and of the chain of the workplace of the transport equipment; the carrying transport equipment that it already has is kept even when it is not in that chain.\n\nTransport equipment planned or loaded in an air transport movement must remain a `UnitLoadDevice`; another type is rejected with 400.",
        "operationId": "updateTransportEquipment",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "equipment",
            "description": "transport equipment data that replace the current ones",
            "required": true,
            "schema": {
              "$ref": "#/definitions/TransportEquipment"
            }
          },
          {
            "$ref": "#/parameters/TransportEquipmentId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ApiResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Transport equipment not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      },
      "delete": {
        "tags": [
          "Transport equipment"
        ],
        "summary": "Delete transport equipment",
        "description": "Deletes empty transport equipment that is not in any transport movement, does not carry other transport equipment and is not referred to by any consignment note; otherwise the request is rejected with 409, naming each consignment note that refers to it.",
        "operationId": "deleteTransportEquipment",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/TransportEquipmentId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ApiResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Transport equipment not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "409": {
            "$ref": "#/responses/Conflict"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      }
    },
    "/transportEquipment/{transportEquipmentId}/content": {
      "post": {
        "tags": [
          "Transport equipment"
        ],
        "summary": "Load consignment items into transport equipment",
        "description": "Loads packages of one or more consignments into the transport equipment and returns its whole content after the load. The packages carried by transport equipment created automatically from a consignment do not count as loaded. When the master consignment that owns the transport equipment, or the one of a consignment of the request, is approved, closed or cancelled, the request is rejected with 409.\n\nThe segregation inside the equipment and the packing and quantity limits are checked, and every problem is reported at once; when an item cannot be loaded, nothing is loaded. Each error and warning of the segregation check carries the pair of items in `segregation`.\n\nWhen the transport equipment is planned or loaded in a transport movement, the new content is also checked against the vessel, the route and, for road movements under `Adr`, the vehicle and the trailer of each leg. In every check, conditions are returned in `warnings`, and forbidden combinations and prohibitions are rejected with 400.",
        "operationId": "addContentToTransportEquipment",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "content",
            "description": "consignment items to load",
            "required": true,
            "schema": {
              "$ref": "#/definitions/TransportEquipmentContent"
            }
          },
          {
            "$ref": "#/parameters/TransportEquipmentId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/TransportEquipmentContentsResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Transport equipment not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "409": {
            "$ref": "#/responses/Conflict"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      },
      "get": {
        "tags": [
          "Transport equipment"
        ],
        "summary": "Get the content of transport equipment",
        "description": "Returns every item loaded into the transport equipment, with the packages loaded into it.",
        "operationId": "getTransportEquipmentContent",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/TransportEquipmentId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/TransportEquipmentContentsResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Transport equipment not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      }
    },
    "/transportEquipment/{transportEquipmentId}/content/{contentId}": {
      "delete": {
        "tags": [
          "Transport equipment"
        ],
        "summary": "Unload an item from transport equipment",
        "description": "Unloads an item from the transport equipment and frees its packages for other transport equipment. When the master consignment that owns the transport equipment, or the one of the consignment of the item, is approved, closed or cancelled, the request is rejected with 409.",
        "operationId": "deleteContentFromTransportEquipment",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/TransportEquipmentId"
          },
          {
            "$ref": "#/parameters/ContentId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ApiResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Transport equipment or content not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "409": {
            "$ref": "#/responses/Conflict"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      }
    },
    "/transportEquipment/{transportEquipmentId}/segregationCheck": {
      "post": {
        "tags": [
          "Transport equipment"
        ],
        "summary": "Check the segregation inside transport equipment",
        "description": "Checks every pair of items loaded in the transport equipment under each regulation that applies to it, and stores the result as the current check, which is returned. The segregation of the IMDG Code applies when a consignment is under IMDG, and ADR mixed loading when a consignment is under ADR or the transport equipment is planned or loaded in a road transport movement under `Adr`, whatever the regulation of the other consignments. Unit load devices are also checked under the segregation of packages of the IATA Dangerous Goods Regulations.\n\n`ruleReference` names the regulation of each finding. Transport equipment whose consignments are all under 49 CFR, and that is not planned or loaded in a road transport movement under `Adr`, is rejected with 400.",
        "operationId": "checkTransportEquipmentSegregation",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "emptyBody",
            "description": "empty object, `{}`: the operation reads nothing from it, but a POST request without a body is rejected",
            "required": true,
            "schema": {
              "$ref": "#/definitions/EmptyRequestBody"
            }
          },
          {
            "$ref": "#/parameters/TransportEquipmentId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/SegregationCheckResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Transport equipment not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      }
    },
    "/transportEquipment/{transportEquipmentId}/movementHistory": {
      "get": {
        "tags": [
          "Transport equipment"
        ],
        "summary": "Get the movement history of transport equipment",
        "description": "Returns the transport movements of the transport equipment, oldest first, with where and when it was loaded and discharged.",
        "operationId": "getTransportEquipmentMovementHistory",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/TransportEquipmentId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/TransportEquipmentMovementsResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Transport equipment not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      }
    },
    "/transportMovement": {
      "post": {
        "tags": [
          "Transport movements and calls"
        ],
        "summary": "Create a transport movement",
        "description": "Creates a transport movement in the workplace given in `workPlaceCode`, which is required: a customer workplace in which the user can write. Location codes are resolved in the lists of that workplace, of its company and of its group. When the calls are omitted, they are created from the origin and the destination; when given, there must be at least two.\n\nA sea movement requires a vessel and a road movement a vehicle. The vessel, the vehicle and the trailer must be of an account that the user can read and of the chain of the workplace: the workplace, the other workplaces of its company, the company and its group. Otherwise the request is rejected with 400 naming `vesselId`, `vehicleId` or `trailerId`.",
        "operationId": "addTransportMovement",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "movement",
            "description": "transport movement with its calls",
            "required": true,
            "schema": {
              "$ref": "#/definitions/TransportMovementCreation"
            }
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/AddItemResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      },
      "get": {
        "tags": [
          "Transport movements and calls"
        ],
        "summary": "Search the transport movements of the accounts of the user",
        "description": "Returns a page of the transport movements of the accounts that the user can read, filtered by mode of transport, number, vessel, vehicle, status, location and dates.",
        "operationId": "getTransportMovements",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "transportMode",
            "in": "query",
            "description": "Mode of transport of the movement.",
            "required": false,
            "type": "string",
            "enum": [
              "Sea",
              "Rail",
              "Road",
              "Air"
            ]
          },
          {
            "name": "transportMovementNumber",
            "in": "query",
            "description": "Beginning of the voyage, flight or journey number.",
            "x-example": "PT 09",
            "required": false,
            "type": "string"
          },
          {
            "name": "vesselId",
            "in": "query",
            "description": "Identifier of a vessel of the account.",
            "x-example": 12,
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "vehicleId",
            "in": "query",
            "description": "Identifier of a vehicle or trailer of the account.",
            "x-example": 34,
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "status",
            "in": "query",
            "description": "Status of the transport movement.",
            "required": false,
            "type": "string",
            "enum": [
              "Planned",
              "InProgress",
              "Completed",
              "Cancelled"
            ]
          },
          {
            "name": "locationCode",
            "in": "query",
            "description": "Code of a location (UN/LOCODE or code given by the account), to return only the movements that call at it.",
            "x-example": "NLRTM",
            "required": false,
            "type": "string"
          },
          {
            "name": "departureFrom",
            "in": "query",
            "description": "Earliest planned departure, inclusive, in ISO 8601 format (UTC).",
            "x-example": "2026-11-02T00:00:00Z",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "departureTo",
            "in": "query",
            "description": "Latest planned departure, inclusive, in ISO 8601 format (UTC).",
            "x-example": "2026-11-30T23:59:59Z",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "$ref": "#/parameters/Page"
          },
          {
            "$ref": "#/parameters/PageSize"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/TransportMovementsResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      }
    },
    "/transportMovement/{transportMovementId}": {
      "get": {
        "tags": [
          "Transport movements and calls"
        ],
        "summary": "Get a transport movement",
        "description": "Returns the transport movement with its calls, its transport equipment and its latest checks.",
        "operationId": "getTransportMovement",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/TransportMovementId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/TransportMovementResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Transport movement not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      },
      "put": {
        "tags": [
          "Transport movements and calls"
        ],
        "summary": "Update a transport movement",
        "description": "Updates the data of the transport movement, including the master, the shipping agent and the aircraft registration. A transport movement does not change workplace: `workPlaceCode` can be omitted and, when given, must be the code of its workplace. Location codes are resolved in the lists of the workplace of the transport movement, of its company and of its group. A vessel, vehicle or trailer that is set or changed must meet the same conditions as on creation; the ones that the transport movement already has are kept even when they are not in the chain of its workplace.\n\nWhen the request includes the calls, they replace the itinerary: there must be at least two, and a call at which transport equipment is loaded or discharged cannot be removed (the update is rejected with 409).\n\nWhen the vessel, the vehicle, the trailer or the calls change, the transport equipment planned or loaded in the movement is checked again against the vessel, the route and, for road movements under `Adr`, the vehicle and the trailer of each leg: prohibitions and requirements that are not met reject the whole update with 400, and the other findings are returned as warnings. A transport movement that changes to `Air` cannot keep planned or loaded transport equipment that is not a `UnitLoadDevice` (400).",
        "operationId": "updateTransportMovement",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "movement",
            "description": "transport movement data that replace the current ones",
            "required": true,
            "schema": {
              "$ref": "#/definitions/TransportMovement"
            }
          },
          {
            "$ref": "#/parameters/TransportMovementId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ApiResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Transport movement not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "409": {
            "$ref": "#/responses/Conflict"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      },
      "delete": {
        "tags": [
          "Transport movements and calls"
        ],
        "summary": "Delete a transport movement",
        "description": "Deletes a transport movement in status `Planned` that has no transport equipment and that no master consignment nominates; otherwise the request is rejected with 409.",
        "operationId": "deleteTransportMovement",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/TransportMovementId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ApiResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Transport movement not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "409": {
            "$ref": "#/responses/Conflict"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      }
    },
    "/transportMovement/{transportMovementId}/call": {
      "post": {
        "tags": [
          "Transport movements and calls"
        ],
        "summary": "Add a call to a transport movement",
        "description": "Adds a call at a port, airport or terminal, whose code is resolved in the lists of the workplace of the transport movement, of its company and of its group. When the cut-off times are omitted, they are calculated from the estimated time of arrival: 96 hours before it for the dangerous goods applications and 72 hours before it for the final documentation.\n\nThe transport equipment planned or loaded in the movement is checked again against the new itinerary and, for road movements under `Adr`, against the vehicle, the trailer and the driver of each leg: prohibitions reject the request with 400 and the other findings are returned as warnings.",
        "operationId": "addCallToTransportMovement",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "call",
            "description": "call to add",
            "required": true,
            "schema": {
              "$ref": "#/definitions/TransportMovementCall"
            }
          },
          {
            "$ref": "#/parameters/TransportMovementId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/AddItemResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Transport movement not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      }
    },
    "/transportMovement/{transportMovementId}/call/{callId}": {
      "put": {
        "tags": [
          "Transport movements and calls"
        ],
        "summary": "Update a call of a transport movement",
        "description": "Updates the call. The location code is resolved in the lists of the workplace of the transport movement, of its company and of its group. Changing the estimated time of arrival recalculates the cut-off times that the application calculated.\n\nWhen the location or any of the dates of the call change, the transport equipment planned or loaded in the movement is checked again against the new itinerary and, for road movements under `Adr`, against the vehicle, the trailer and the driver: prohibitions reject the update with 400 and the other findings are returned as warnings. Changing only other data of the call, such as the remarks, does not repeat these checks.",
        "operationId": "updateTransportMovementCall",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "call",
            "description": "call data that replace the current ones",
            "required": true,
            "schema": {
              "$ref": "#/definitions/TransportMovementCall"
            }
          },
          {
            "$ref": "#/parameters/TransportMovementId"
          },
          {
            "$ref": "#/parameters/CallId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ApiResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Transport movement or call not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      },
      "delete": {
        "tags": [
          "Transport movements and calls"
        ],
        "summary": "Delete a call of a transport movement",
        "description": "Deletes a call at which no transport equipment is loaded or discharged; otherwise the request is rejected with 409. The transport equipment of the movement is checked again against the remaining itinerary, as when the movement is updated: prohibitions reject the deletion with 400.",
        "operationId": "deleteCallFromTransportMovement",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/TransportMovementId"
          },
          {
            "$ref": "#/parameters/CallId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ApiResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Transport movement or call not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "409": {
            "$ref": "#/responses/Conflict"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      }
    },
    "/transportMovement/{transportMovementId}/equipment": {
      "post": {
        "tags": [
          "Transport movements and calls"
        ],
        "summary": "Load transport equipment into a transport movement",
        "description": "Plans or loads transport equipment between two calls of the transport movement, which must have at least two calls (400 naming `transportMovementId` otherwise). The transport equipment must be of a workplace of the company of the transport movement and of an account the user can write; otherwise the request is rejected with 400. `newItemId` is the identifier of the transport equipment, which addresses it in `/transportMovement/{transportMovementId}/equipment/{transportEquipmentId}`.\n\nThe transport equipment is checked against the vessel and the locations between its load and discharge calls and, for road movements under `Adr`, against the vehicle and the trailer of each leg, and every problem is reported at once: prohibitions and requirements that are not met reject the request, and the other findings are returned in `warnings`.\n\nAn air transport movement only carries transport equipment of type `UnitLoadDevice`; other types are rejected with 400.",
        "operationId": "addTransportEquipmentToTransportMovement",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "equipment",
            "description": "transport equipment to load and its calls",
            "required": true,
            "schema": {
              "$ref": "#/definitions/TransportMovementEquipment"
            }
          },
          {
            "$ref": "#/parameters/TransportMovementId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/AddItemResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Transport movement not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      }
    },
    "/transportMovement/{transportMovementId}/equipment/{transportEquipmentId}": {
      "put": {
        "tags": [
          "Transport movements and calls"
        ],
        "summary": "Update transport equipment in a transport movement",
        "description": "Updates the load and discharge calls, the status, the stowage position and whether the transport equipment is stowed on deck or under deck. When the body gives `transportEquipmentId`, it must be the one of the path.\n\nWhen the transport equipment stays planned or loaded, it is checked again against the vessel and the route with the final calls and deck: prohibitions reject the request with 400 and the other findings are returned as warnings. For road movements under `Adr`, the vehicle and the trailer are also checked again against the load of each leg when transport equipment that was cancelled returns to the movement, changes to `Loaded` or changes its call of loading or of discharge. In an air transport movement, transport equipment that is not a `UnitLoadDevice` cannot stay planned or loaded (400).",
        "operationId": "updateTransportMovementEquipment",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "equipment",
            "description": "calls, status and stowage of the transport equipment",
            "required": true,
            "schema": {
              "$ref": "#/definitions/TransportMovementEquipment"
            }
          },
          {
            "$ref": "#/parameters/TransportMovementId"
          },
          {
            "$ref": "#/parameters/TransportEquipmentId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ApiResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Transport movement or transport equipment not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      },
      "delete": {
        "tags": [
          "Transport movements and calls"
        ],
        "summary": "Remove transport equipment from a transport movement",
        "description": "Removes transport equipment in status `Planned` from the transport movement.",
        "operationId": "deleteTransportEquipmentFromTransportMovement",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/TransportMovementId"
          },
          {
            "$ref": "#/parameters/TransportEquipmentId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ApiResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Transport movement or transport equipment not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      }
    },
    "/transportMovement/{transportMovementId}/onBoard": {
      "get": {
        "tags": [
          "Transport movements and calls"
        ],
        "summary": "Get what is on board at a call",
        "description": "Returns everything on board when departing from the selected call, including the transport equipment loaded at previous calls, with the remaining route. It is the content of the IMO FAL Form 7 for that call.",
        "operationId": "getTransportMovementOnBoard",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/TransportMovementId"
          },
          {
            "name": "callId",
            "in": "query",
            "description": "Identifier of the call; the first call when omitted.",
            "x-example": 902,
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "manifestVariant",
            "in": "query",
            "description": "Manifest selection; `OnBoard` when omitted.",
            "required": false,
            "type": "string",
            "enum": [
              "OnBoard",
              "Arrival",
              "Discharge",
              "Load",
              "Departure"
            ]
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/TransportMovementOnBoardResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Transport movement not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      }
    },
    "/transportMovement/{transportMovementId}/segregationCheck": {
      "post": {
        "tags": [
          "Transport movements and calls"
        ],
        "summary": "Check the segregation between the transport equipment on board",
        "description": "Evaluates the separation required between the transport equipment that travels together at the selected call, according to the regulation of the transport movement: the segregation of the IMDG Code, on deck or under deck, for sea movements under `Imdg`, and ADR mixed loading of Class 1 for road movements under `Adr`. Air and rail movements are rejected with 400. The result is stored as the current check and returned. Every property of the request body is optional; send an empty object to use the defaults.",
        "operationId": "checkTransportMovementSegregation",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "segregationCheck",
            "description": "call to evaluate, or an empty object to evaluate the departure from the first call",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SegregationCheck"
            }
          },
          {
            "$ref": "#/parameters/TransportMovementId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/SegregationCheckResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Transport movement not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      }
    },
    "/transportMovement/{transportMovementId}/loadThresholdCalculation": {
      "post": {
        "tags": [
          "Transport movements and calls"
        ],
        "summary": "Calculate the load threshold of a transport movement",
        "description": "For road movements under `Adr`, calculates the load threshold of ADR 1.1.3.6 for each leg of the movement, from the departure of each call to the next one, and returns every leg in `adrData.legs` with the most loaded leg as the result. A single piece of transport equipment is evaluated as a whole, without legs. Other modes and other regulations are rejected with 400.\n\nThe response also states whether the marking of limited quantities is required, the consignment with which the threshold is exceeded and those that could be removed to keep the exemption. The result is stored as the current calculation and returned. Every property of the request body is optional; send an empty object to use the defaults.",
        "operationId": "calculateTransportMovementLoadThreshold",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "loadThresholdCalculation",
            "description": "transport equipment to evaluate alone, or an empty object to evaluate the whole transport unit leg by leg",
            "required": true,
            "schema": {
              "$ref": "#/definitions/LoadThresholdCalculation"
            }
          },
          {
            "$ref": "#/parameters/TransportMovementId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/LoadThresholdCalculationResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Transport movement not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      }
    },
    "/transportMovement/{transportMovementId}/restriction": {
      "get": {
        "tags": [
          "Transport movements and calls"
        ],
        "summary": "Get the restrictions of a transport movement",
        "description": "Returns, as data for warehouse and transport management systems, what the `TripRestrictionSheet` document prints. It is derived from the current content of the transport equipment and from the restrictions of the locations of the route; `regulation` gives the regulation whose rules were applied, and `isObsolete` warns when the content changed after the last calculation or segregation check.\n\nFor road movements under `Adr`, `adrData` adds the tunnel restriction code, the last load threshold calculation (ADR 1.1.3.6), the orange plates and the safety equipment. It also gives the ADR approval types that the load requires of the vehicles (`requiredVehicleApprovals`), with every finding of the check of the vehicle and of the trailer against the load (`vehicleRestrictions`), and the training that the ADR driver training certificate shall cover (`requiredDriverTraining`), with what could not be verified about it (`driverTrainingNotes`) and every finding of the check of the certificate recorded for the driver (`driverRestrictions`).",
        "operationId": "getTransportMovementRestrictions",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/TransportMovementId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/TransportMovementRestrictionsResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Transport movement not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      }
    },
    "/masterConsignment/{masterConsignmentId}/document": {
      "post": {
        "tags": [
          "Consolidation documents"
        ],
        "summary": "Get documents of a master consignment",
        "description": "Generates documents of the master consignment: consolidation manifest, container list, packing list, consolidation load sheet or master document data. The document is returned base 64 encoded and stored with its version. With read-only access to the account of the master consignment, the document is generated but not stored as a version.",
        "operationId": "getMasterConsignmentDocument",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "document",
            "description": "documents to generate",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MasterConsignmentDocument"
            }
          },
          {
            "$ref": "#/parameters/MasterConsignmentId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/Base64EncodedFileResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Master consignment not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      }
    },
    "/transportEquipment/{transportEquipmentId}/document": {
      "post": {
        "tags": [
          "Consolidation documents"
        ],
        "summary": "Get documents of transport equipment",
        "description": "Generates documents of the transport equipment: the packing certificate covering every consignment loaded, as a standalone form, the multimodal dangerous goods form, the segregation report, the pre-signature checklist or the consolidation labels. With read-only access to the account of the transport equipment, the document is generated but not stored as a version.",
        "operationId": "getTransportEquipmentDocument",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "document",
            "description": "documents to generate",
            "required": true,
            "schema": {
              "$ref": "#/definitions/TransportEquipmentDocument"
            }
          },
          {
            "$ref": "#/parameters/TransportEquipmentId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/Base64EncodedFileResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Transport equipment not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      }
    },
    "/transportMovement/{transportMovementId}/document": {
      "post": {
        "tags": [
          "Consolidation documents"
        ],
        "summary": "Get documents of a transport movement",
        "description": "Generates documents of the transport movement: the IMO FAL Form 7 manifest for the selected call and selection, the segregation report between transport equipment, the load threshold report, the restriction sheet, the consolidation load sheet, the consolidated ADR transport document of the whole load, the load checklist of the vehicle or the NOTOC.\n\nThe load threshold report, the restriction sheet, the consolidated transport document and the load checklist of the vehicle are available for road movements under `Adr` only, and are rejected with 400 for other movements. They need the regulation of the movement only, so an account with the consolidation licence for ADR alone issues them.\n\nManifests are versioned: a new issue supersedes the previous one. With read-only access to the account of the transport movement, the document is generated but not stored as a version, and no `MovementDocumentIssued` notification is sent.",
        "operationId": "getTransportMovementDocument",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "document",
            "description": "documents to generate",
            "required": true,
            "schema": {
              "$ref": "#/definitions/TransportMovementDocument"
            }
          },
          {
            "$ref": "#/parameters/TransportMovementId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/Base64EncodedFileResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Transport movement not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "Consolidation"
        ]
      }
    },
    "/webhookSubscription": {
      "post": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Create a webhook subscription",
        "description": "Creates a webhook subscription. Returns the identifier of the subscription in `newItemId` and the signing secret in `secret`, in the Standard Webhooks format, shown only once. At most five subscriptions per account; the address must use HTTPS. The notifications posted to the address are described by the `WebhookNotification` schema. Only the administrators of the account manage its webhook subscriptions; any other user receives 403.",
        "operationId": "addWebhookSubscription",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "webhookSubscription",
            "description": "endpoint and events to subscribe to",
            "required": true,
            "schema": {
              "$ref": "#/definitions/WebhookSubscription"
            }
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/WebhookSubscriptionAddItemResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-callbacks": {
          "notification": {
            "{$request.body#/url}": {
              "post": {
                "summary": "Receive a webhook notification",
                "description": "Notification of a subscribed event, signed according to Standard Webhooks as described in `WebhookNotification`. The endpoint must answer with a 2xx status within 10 seconds.",
                "parameters": [
                  {
                    "in": "body",
                    "name": "notification",
                    "description": "signed notification of a subscribed event",
                    "required": true,
                    "schema": {
                      "$ref": "#/definitions/WebhookNotification"
                    }
                  }
                ],
                "responses": {
                  "2XX": {
                    "description": "Notification accepted"
                  }
                }
              }
            }
          }
        },
        "x-required-role": [
          "ConsolidationRequester",
          "Consolidation"
        ]
      },
      "get": {
        "tags": [
          "Webhooks"
        ],
        "summary": "List the webhook subscriptions of the account",
        "description": "Returns every webhook subscription of the account with its state and the number of consecutive failed deliveries. Only the administrators of the account manage its webhook subscriptions; any other user receives 403.",
        "operationId": "getWebhookSubscriptions",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/WebhookSubscriptionsResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ConsolidationRequester",
          "Consolidation"
        ]
      }
    },
    "/webhookSubscription/{webhookSubscriptionId}": {
      "delete": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Delete a webhook subscription",
        "description": "Deletes the webhook subscription; its pending deliveries are discarded. Only the administrators of the account manage its webhook subscriptions; any other user receives 403.",
        "operationId": "deleteWebhookSubscription",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/WebhookSubscriptionId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ApiResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Webhook subscription not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ConsolidationRequester",
          "Consolidation"
        ]
      }
    },
    "/webhookSubscription/{webhookSubscriptionId}/test": {
      "post": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Test a webhook subscription",
        "description": "Delivers a `Ping` notification synchronously and reports the result: 200 when the endpoint answers with a 2xx status, and 400 with the status or the error otherwise. A successful test enables again a subscription that was disabled after failed deliveries. Only the administrators of the account manage its webhook subscriptions; any other user receives 403.",
        "operationId": "testWebhookSubscription",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "in": "body",
            "name": "emptyBody",
            "description": "empty object, `{}`: the operation reads nothing from it, but a POST request without a body is rejected",
            "required": true,
            "schema": {
              "$ref": "#/definitions/EmptyRequestBody"
            }
          },
          {
            "$ref": "#/parameters/WebhookSubscriptionId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/ApiResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Webhook subscription not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ConsolidationRequester",
          "Consolidation"
        ]
      }
    },
    "/webhookSubscription/{webhookSubscriptionId}/delivery": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "summary": "List the recent deliveries of a webhook subscription",
        "description": "Returns the last 200 deliveries of the subscription, newest first, with their attempts and the last response. Only the administrators of the account manage its webhook subscriptions; any other user receives 403.",
        "operationId": "getWebhookDeliveries",
        "produces": [
          "application/json"
        ],
        "security": [
          {
            "basicAuth": []
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/parameters/WebhookSubscriptionId"
          },
          {
            "$ref": "#/parameters/requestGuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request",
            "schema": {
              "$ref": "#/definitions/WebhookDeliveriesResponseOK"
            }
          },
          "400": {
            "$ref": "#/responses/BadRequest"
          },
          "401": {
            "$ref": "#/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/responses/Forbidden"
          },
          "404": {
            "description": "Webhook subscription not found",
            "schema": {
              "$ref": "#/definitions/ApiResponseError404"
            }
          },
          "500": {
            "$ref": "#/responses/UnexpectedError"
          }
        },
        "x-required-role": [
          "ConsolidationRequester",
          "Consolidation"
        ]
      }
    }
  },
  "securityDefinitions": {
    "basicAuth": {
      "type": "basic"
    },
    "bearerAuth": {
      "type": "oauth2",
      "flow": "application",
      "tokenUrl": "https://api.dgassistant.com/api/v2/rest/oauth2/token",
      "scopes": {},
      "description": "OAuth2 access token obtained from POST /oauth2/token using the client_credentials grant. Send it as `Authorization: Bearer <access_token>`. The token is opaque: it must not be parsed by the client. It is an alternative transport for the same identity as HTTP Basic, with the same roles and the same licensing, so any operation accepts either scheme."
    }
  },
  "definitions": {
    "Consignment": {
      "description": "Consignment of dangerous goods to be created, including participants, products and regulatory data.",
      "type": "object",
      "required": [
        "consignmentType",
        "workPlaceCode",
        "date",
        "regulation"
      ],
      "properties": {
        "consignmentType": {
          "description": "Type of consignment by load configuration: PackagesAndReceptacles, Tank or Bulk.",
          "$ref": "#/definitions/ConsignmentType"
        },
        "regulation": {
          "description": "Dangerous goods regulation applicable to the consignment: Adr, Imdg, Iata or Cfr49.",
          "$ref": "#/definitions/DangerousGoodsRegulation"
        },
        "date": {
          "type": "string",
          "description": "Issue date of the consignment, in ISO 8601 format.",
          "format": "date",
          "example": "2020-12-31"
        },
        "workPlaceCode": {
          "type": "string",
          "description": "Code of the workplace issuing the consignment.",
          "example": "WP001"
        },
        "predefinedShipperCode": {
          "type": "string",
          "example": "SHI001",
          "description": "Code of an existent Shipper"
        },
        "onTheFlyShipper": {
          "description": "Shipper participant data provided directly without using a predefined record.",
          "$ref": "#/definitions/ParticipantOnTheFly"
        },
        "predefinedConsigneeCode": {
          "type": "string",
          "example": "CON001",
          "description": "Code of an existent Consignee"
        },
        "onTheFlyConsignee": {
          "description": "Consignee participant data provided directly without using a predefined record.",
          "$ref": "#/definitions/ParticipantOnTheFly"
        },
        "predefinedSimpleProducts": {
          "type": "array",
          "description": "List of predefined simple products to include in the consignment.",
          "items": {
            "$ref": "#/definitions/SimpleProductTransportMode"
          }
        },
        "onTheFlySimpleProducts": {
          "type": "array",
          "description": "List of simple products fully described in the request, without predefined record.",
          "items": {
            "$ref": "#/definitions/SimpleProductTransportModeOnTheFly"
          }
        },
        "predefinedMixedPackingProducts": {
          "type": "array",
          "description": "List of predefined mixed packing products to include in the consignment.",
          "items": {
            "$ref": "#/definitions/MixedPackingProductTransportMode"
          }
        },
        "onTheFlyMixedPackingProducts": {
          "type": "array",
          "description": "List of mixed packing products fully described in the request, without predefined record.",
          "items": {
            "$ref": "#/definitions/MixedPackingProductTransportModeOnTheFly"
          }
        },
        "overpacks": {
          "type": "array",
          "description": "Overpacks of the consignment. Processed for every regulation (ADR 5.1.2, IMDG 5.1.2, IATA 5.0.1.5). Up to version 2.7.2 they were only applied to air consignments and silently ignored otherwise.",
          "items": {
            "$ref": "#/definitions/Overpack"
          }
        },
        "predefinedLoaderCode": {
          "type": "string",
          "example": "LOA001",
          "description": "Code of an existent Loader"
        },
        "onTheFlyLoader": {
          "description": "Loader participant data provided directly without using a predefined record.",
          "$ref": "#/definitions/ParticipantOnTheFly"
        },
        "predefinedCarrierCode": {
          "type": "string",
          "example": "CAR001",
          "description": "Code of an existent Carrier"
        },
        "onTheFlyCarrier": {
          "description": "Carrier participant data provided directly without using a predefined record.",
          "$ref": "#/definitions/ParticipantOnTheFly"
        },
        "driver": {
          "type": "string",
          "description": "Full name of the driver in charge of the transport.",
          "example": "David Martin"
        },
        "vehicleRegistration": {
          "type": "string",
          "description": "Registration plate of the vehicle.",
          "example": "VEHREG 8917"
        },
        "trailerRegistration": {
          "type": "string",
          "description": "Registration plate of the trailer, if applicable.",
          "example": "TRAREG 4885"
        },
        "deliveryNoteNumber": {
          "type": "string",
          "description": "Reference number of the delivery note associated with the consignment.",
          "example": "INV0001"
        },
        "emergencyPhone": {
          "type": "string",
          "description": "Emergency telephone number available during transport.",
          "example": "+1 888 387 2848"
        },
        "shipperReferenceNumber": {
          "type": "string",
          "description": "Reference number assigned to the consignment by the shipper.",
          "example": "SRN001"
        },
        "freightForwarderReference": {
          "type": "string",
          "description": "Reference number assigned to the consignment by the freight forwarder.",
          "example": "FFN001"
        },
        "additionalInformation": {
          "type": "string",
          "description": "Additional information of the consignment.",
          "example": "Contact person: John Smith"
        },
        "isExclusiveUseShipment": {
          "type": "boolean",
          "description": "True when the consignment travels under exclusive use. Cross-modal header-level flag: renders the 'EXCLUSIVE USE SHIPMENT' mention on every Class 7 item for the three regulatory documents (ADR 5.4.1.2.5.1, IMDG 5.4.1.5.7.1.7, IATA DGR 10.8.3.9). If the property is omitted (null) the existing header value is preserved.",
          "example": false
        },
        "iataData": {
          "description": "IATA-specific data of the consignment, when the mode of transport is air.",
          "$ref": "#/definitions/ConsignmentIataData"
        },
        "imdgData": {
          "description": "IMDG-specific data of the consignment, when the mode of transport is sea.",
          "$ref": "#/definitions/ConsignmentImdgData"
        },
        "adrData": {
          "description": "ADR-specific data of the consignment, when the mode of transport is road: the data that only Spain requires, such as the administrative control document.",
          "allOf": [
            {
              "$ref": "#/definitions/ConsignmentAdrData"
            }
          ]
        },
        "specialFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ConsignmentSpecialFeature"
          },
          "description": "Optional features of the consignment. Each one enables a specific behaviour or document and applies only to certain regulations; a feature that does not apply to the regulation of the consignment is rejected. When the field is omitted, the applicable defaults are applied."
        }
      }
    },
    "ConsignmentResponse": {
      "description": "Envelope object carrying the consignment data returned by the service under the consignmentResponse property.",
      "type": "object",
      "properties": {
        "consignmentResponse": {
          "$ref": "#/definitions/ConsignmentResponseData"
        }
      }
    },
    "ConsignmentResponseData": {
      "description": "Consignment with its participants, items and regulatory calculated data.",
      "type": "object",
      "required": [
        "consignmentType",
        "workPlaceCode",
        "date",
        "regulation"
      ],
      "properties": {
        "consignmentType": {
          "description": "Type of consignment by load configuration: PackagesAndReceptacles, Tank or Bulk.",
          "$ref": "#/definitions/ConsignmentType"
        },
        "regulation": {
          "description": "Dangerous goods regulation applied to the consignment: Adr, Imdg, Iata or Cfr49.",
          "$ref": "#/definitions/DangerousGoodsRegulation"
        },
        "date": {
          "type": "string",
          "description": "Issue date of the consignment, in ISO 8601 format.",
          "format": "date",
          "example": "2020-12-31"
        },
        "workPlaceCode": {
          "type": "string",
          "description": "Code of the workplace issuing the consignment.",
          "example": "WP001"
        },
        "shipper": {
          "description": "Shipper participant of the consignment.",
          "$ref": "#/definitions/ParticipantResponseData"
        },
        "consignee": {
          "description": "Consignee participant of the consignment.",
          "$ref": "#/definitions/ParticipantResponseData"
        },
        "loader": {
          "description": "Loader participant of the consignment.",
          "$ref": "#/definitions/ParticipantResponseData"
        },
        "carrier": {
          "description": "Carrier participant of the consignment.",
          "$ref": "#/definitions/ParticipantResponseData"
        },
        "driver": {
          "type": "string",
          "description": "Full name of the driver in charge of the transport.",
          "example": "David Martin"
        },
        "vehicleRegistration": {
          "type": "string",
          "description": "Registration plate of the vehicle.",
          "example": "VEHREG 8917"
        },
        "trailerRegistration": {
          "type": "string",
          "description": "Registration plate of the trailer, if applicable.",
          "example": "TRAREG 4885"
        },
        "deliveryNoteNumber": {
          "type": "string",
          "description": "Reference number of the delivery note associated with the consignment.",
          "example": "INV0001"
        },
        "emergencyPhone": {
          "type": "string",
          "description": "Emergency telephone number available during transport.",
          "example": "+1 888 387 2848"
        },
        "shipperReferenceNumber": {
          "type": "string",
          "description": "Reference number assigned to the consignment by the shipper.",
          "example": "SRN001"
        },
        "freightForwarderReference": {
          "type": "string",
          "description": "Reference number assigned to the consignment by the freight forwarder.",
          "example": "FFN001"
        },
        "additionalInformation": {
          "type": "string",
          "description": "Additional information regarding the consignment.",
          "example": "Contact person: John Smith"
        },
        "commonDataResponse": {
          "description": "Calculated common regulatory data of the consignment.",
          "$ref": "#/definitions/ConsignmentCommonDataResponse"
        },
        "isExclusiveUseShipment": {
          "type": "boolean",
          "description": "True when the consignment travels under exclusive use. Cross-modal header-level flag: renders the 'EXCLUSIVE USE SHIPMENT' mention on every Class 7 item for the three regulatory documents (ADR 5.4.1.2.5.1, IMDG 5.4.1.5.7.1.7, IATA DGR 10.8.3.9). If the property is omitted (null) the existing header value is preserved.",
          "example": false
        },
        "iataData": {
          "description": "IATA-specific data of the consignment, when the mode of transport is air.",
          "$ref": "#/definitions/ConsignmentIataData"
        },
        "imdgData": {
          "description": "IMDG-specific data of the consignment, when the mode of transport is sea.",
          "$ref": "#/definitions/ConsignmentImdgData"
        },
        "iataDataResponse": {
          "description": "Calculated IATA regulatory data of the consignment.",
          "$ref": "#/definitions/ConsignmentIataDataResponse"
        },
        "items": {
          "type": "array",
          "description": "List of items contained in the consignment.",
          "items": {
            "$ref": "#/definitions/ConsignmentItemResponse"
          }
        },
        "adrData": {
          "description": "ADR-specific data of the consignment: the data that only Spain requires, such as the administrative control document. Only present when the consignment has any.",
          "allOf": [
            {
              "$ref": "#/definitions/ConsignmentAdrDataResponse"
            }
          ]
        },
        "specialFeatures": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ConsignmentSpecialFeature"
          },
          "description": "Optional features of the consignment. Each one enables a specific behaviour or document. Null when the consignment has none."
        }
      }
    },
    "ConsignmentItemResponse": {
      "description": "Item belonging to a consignment response: simple product, mixed packing product or overpack.",
      "type": "object",
      "properties": {
        "consignmentItemType": {
          "description": "Type of consignment item: SimpleProduct, MixedPackingProduct or Overpack.",
          "$ref": "#/definitions/ConsignmentItemType"
        },
        "simpleProduct": {
          "description": "Simple product item, present when item type is SimpleProduct.",
          "$ref": "#/definitions/SimpleProductTransportModeResponse"
        },
        "mixedPackingProduct": {
          "description": "Mixed packing product item, present when item type is MixedPackingProduct.",
          "$ref": "#/definitions/MixedPackingProductTransportModeResponse"
        },
        "overpack": {
          "description": "Overpack item, present when item type is Overpack.",
          "$ref": "#/definitions/OverpackResponse"
        },
        "iataDataItemResponse": {
          "description": "Calculated IATA regulatory data of the item.",
          "$ref": "#/definitions/ConsignmentItemIataDataResponse"
        },
        "imdgDataItemResponse": {
          "description": "Calculated IMDG regulatory data of the item.",
          "$ref": "#/definitions/ConsignmentItemImdgDataResponse"
        },
        "adrDataItemResponse": {
          "description": "Calculated ADR regulatory data of the item.",
          "$ref": "#/definitions/ConsignmentItemAdrDataResponse"
        }
      }
    },
    "ProductRadiologicalNuclide": {
      "description": "A single radionuclide entry of the multi-radionuclide list of a ProductRadiological. A Class 7 product may contain one or more radionuclides (a 'cocktail'); each one is declared with its own activity in becquerels. The A2 multiple of the consignment item is calculated from the activity and the A2 value of each radionuclide.",
      "type": "object",
      "required": [
        "radionuclideCode",
        "activityBq"
      ],
      "properties": {
        "radionuclideCode": {
          "type": "string",
          "description": "Radionuclide code as listed in the radionuclide catalogue (for example 'Co-60', 'Cs-137', 'Ir-192', 'Sr-90').",
          "example": "Co-60"
        },
        "activityBq": {
          "type": "number",
          "description": "Maximum activity per package during transport for this radionuclide, expressed in becquerels (Bq). SI units only; strictly positive.",
          "example": 50000000
        }
      }
    },
    "ProductRadiological": {
      "description": "Radiological characteristics of a Class 7 (radioactive) product. Required when the parent product belongs to Class 7. Supported regimes: Excepted (UN 2908-2911), Type A normal form (UN 2915), Type A special form (UN 3332), Type B(U) (UN 2916 with unilateral approval), LSA-I / LSA-II / LSA-III (UN 2912, 3321, 3322) and SCO-I / SCO-II (UN 2913, level discriminated by packageType IP-1 vs IP-2). Type B(M), Type C, fissile material (UN 3324-3329), UF6 and special arrangement are out of scope.",
      "type": "object",
      "properties": {
        "nuclides": {
          "type": "array",
          "description": "List of radionuclides contained in the product (1..N). The radiological block is mandatory for every Class 7 product, including the excepted packages UN 2908-2911: at least one entry, with a radionuclide code and a strictly positive activity per package, is required for every package type. Each entry has the radionuclide code and the activity per package in Bq. The A2 multiple of the consignment item is calculated from the activity and the A2 value of each radionuclide.",
          "items": {
            "$ref": "#/definitions/ProductRadiologicalNuclide"
          }
        },
        "packageType": {
          "type": "string",
          "enum": [
            "Excepted",
            "IndustrialPackage1",
            "IndustrialPackage2",
            "IndustrialPackage3",
            "TypeA",
            "TypeASpecialForm",
            "TypeBU",
            "SpecialArrangement"
          ],
          "description": "Package type. Allowed values: Excepted (UN 2908-2911); IndustrialPackage1 (IP-1, UN 2912 LSA-I, UN 2913 SCO-I); IndustrialPackage2 (IP-2, UN 2913 SCO-II, UN 3321 LSA-II liquid/gas, UN 3322 LSA-III under exclusive use); IndustrialPackage3 (IP-3, UN 3321 LSA-II solid, UN 3322 LSA-III); TypeA (UN 2915, normal form); TypeASpecialForm (UN 3332, certificate reference mandatory); TypeBU (UN 2916 unilateral approval, certificate reference mandatory); SpecialArrangement (UN 2919, transported under special arrangement: category IIIYellow and certificate reference with type code X mandatory).",
          "example": "Excepted"
        },
        "isSpecialForm": {
          "type": "boolean",
          "description": "True if the radioactive material is in special form (special form certificate required). Only meaningful when packageType = TypeASpecialForm.",
          "example": false
        },
        "isFissile": {
          "type": "boolean",
          "description": "True if the radioactive material is fissile (not fissile-excepted). Out of scope for this version; must be false.",
          "example": false
        },
        "category": {
          "type": "string",
          "enum": [
            "IWhite",
            "IIYellow",
            "IIIYellow"
          ],
          "description": "Package category (ADR 2.2.7.2.4 / IMDG 2.7.2.4 / IATA 10.5.7). Allowed values: IWhite (maximum radiation level less than or equal to 0.005 mSv/h, TI must be zero); IIYellow (greater than 0.005 mSv/h and up to 0.5 mSv/h, TI up to 1); IIIYellow (greater than 0.5 mSv/h and up to 2 mSv/h, TI greater than 1). Optional for Excepted packages. IIIYellow is mandatory for SpecialArrangement packages.",
          "example": "IWhite"
        },
        "transportIndex": {
          "type": "number",
          "description": "Transport Index (TI). Dimensionless, rounded up to one decimal place. Optional for Excepted packages.",
          "example": 0.0
        },
        "certificateRef": {
          "type": "string",
          "description": "Certificate reference. Mandatory for TypeASpecialForm (UN 3332), TypeBU (UN 2916) and SpecialArrangement (UN 2919; it must contain the special arrangement mark with type code X). Examples: 'ES/4567/S-96', 'ES/4567/B(U)', 'FIN/123/X'. Not applicable to Industrial Packages (IP-1/2/3) which follow the prescriptive design of ADR 6.4.5-6.4.7.",
          "example": ""
        },
        "physicoChemical": {
          "type": "string",
          "description": "Description of the physical and chemical form of the contents.",
          "example": "Sealed source, solid"
        },
        "surfaceDoseRate": {
          "type": "number",
          "description": "Maximum surface dose rate of the package, in mSv/h. Used together with the transport index to determine the package category, taking the more restrictive of the two (ADR/IMDG 5.1.5.3.4).",
          "example": 0.05
        },
        "packageDimensions": {
          "type": "string",
          "maxLength": 60,
          "description": "Overall package dimensions including units, in the order length x width (or diameter) x height, for example \"L 30 cm x W 30 cm x H 40 cm\". Required by the air transport document (ICAO TI 2025-26 5;4.1.5.7.1 f)) for packages of category IIYellow or IIIYellow in IATA consignments; not used by ADR or IMDG."
        }
      }
    },
    "SimpleProductTransportMode": {
      "description": "Mode of transport of a good predefined in the catalogue",
      "type": "object",
      "required": [
        "reference",
        "numberOfPackages"
      ],
      "properties": {
        "reference": {
          "type": "string",
          "description": "Unique reference of the predefined product in the catalogue.",
          "example": "PROMOD001"
        },
        "numberOfPackages": {
          "type": "integer",
          "description": "Number of identical outer packages of this product in the consignment.",
          "example": 3
        },
        "unitaryQuantity": {
          "type": "number",
          "description": "Net quantity of substance per outer package.",
          "example": 1.2
        },
        "unitaryGrossQuantity": {
          "type": "number",
          "description": "Gross mass of one outer package, expressed in kilograms.",
          "example": 2
        },
        "unitaryQuantityExplosive": {
          "type": "number",
          "description": "Net explosive content per outer package, expressed in kilograms.",
          "example": 0
        },
        "fillingDegree": {
          "type": "number",
          "description": "Filling degree of the package, expressed as percentage.",
          "example": 100
        },
        "authorizations": {
          "type": "string",
          "description": "Authorizations or special provisions applicable to the transport.",
          "example": "Auth 0001"
        },
        "innerPackagesNumber": {
          "type": "integer",
          "description": "Number of inner packages contained in each outer package.",
          "example": 0
        },
        "innerPackageQuantity": {
          "type": "number",
          "description": "Net quantity per inner package.",
          "example": 0
        },
        "innerPackageCapacity": {
          "type": "number",
          "description": "Capacity of each inner package, in litres (for aerosols, the capacity of the dispenser).",
          "example": 0.5
        },
        "innerPackageQuantityExplosive": {
          "type": "number",
          "description": "Net explosive content per inner package, expressed in kilograms.",
          "example": 0
        },
        "radiological": {
          "description": "Optional per-shipment radiological override for Class 7 products. Defaults to the values stored in the product catalogue.",
          "$ref": "#/definitions/ProductRadiological"
        },
        "consignmentItemCode": {
          "description": "Optional client identifier of the item within the consignment.",
          "$ref": "#/definitions/ConsignmentItemCode"
        }
      }
    },
    "SimpleProductTransportModeOnTheFly": {
      "description": "Mode of transport of a good that is not predefined in the catalogue and is defined on the fly.",
      "type": "object",
      "required": [
        "isDangerousGood",
        "isEnvironmentallyHazardous",
        "isEmpty",
        "physicalState",
        "measureUnit",
        "pureMixOrSolution",
        "numberOfPackages",
        "packageId",
        "hasInnerPackages"
      ],
      "properties": {
        "productName": {
          "type": "string",
          "description": "Commercial name of the product.",
          "example": "PRONAM001"
        },
        "productCode": {
          "type": "string",
          "description": "Internal product code assigned by the customer.",
          "example": "PROCOD001"
        },
        "isDangerousGood": {
          "type": "boolean",
          "description": "Indicates whether the product is regulated as dangerous goods.",
          "example": true
        },
        "dangerousGoodId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the dangerous good entry in master data.",
          "example": 2301
        },
        "isEnvironmentallyHazardous": {
          "type": "boolean",
          "description": "Indicates whether the substance is environmentally hazardous (marine pollutant). Optional when the catalogue determines it for every regulation enabled for the product: if omitted, the value is taken from the catalogue marks of the enabled regulations (UN 3077 and UN 3082 for IATA); when the catalogue leaves it undecided for any of them, the field is required.",
          "example": false
        },
        "isEmpty": {
          "type": "boolean",
          "description": "Indicates whether the package is empty and uncleaned.",
          "example": false
        },
        "physicalState": {
          "description": "Physical state of the substance: Liquid, Solid or Gas.",
          "$ref": "#/definitions/PhysicalState"
        },
        "measureUnit": {
          "description": "Measurement unit for quantities: Kg or L.",
          "$ref": "#/definitions/MeasureUnit"
        },
        "pureMixOrSolution": {
          "description": "Indicates whether the substance is pure, a mixture or a solution.",
          "$ref": "#/definitions/PureMixOrSolution"
        },
        "mixOrSolutionPercentage": {
          "type": "number",
          "description": "Percentage of the dangerous component in the mixture or solution."
        },
        "flashPoint": {
          "type": "number",
          "description": "Closed-cup flash-point of the substance, expressed in Celsius. For Class 3 it is checked against the packing group of the dangerous good: an inconsistency is reported as a warning, or as an error in the cases described in strictPackingInstructionCheck.",
          "example": 30.2
        },
        "controlTemperature": {
          "type": "number",
          "description": "Control temperature in Celsius (ADR 5.4.1.2.3.1 / IMDG 5.4.1.5.4 and 5.4.1.5.5). Mandatory together with emergencyTemperature for temperature-controlled substances (UN 3111-3120, 3231-3240, 3533 and 3534); optional for stabilized substances that allow temperature control. Must be lower than emergencyTemperature.",
          "example": 15.0
        },
        "emergencyTemperature": {
          "type": "number",
          "description": "Emergency temperature in Celsius (ADR 5.4.1.2.3.1 / IMDG 5.4.1.5.4 and 5.4.1.5.5). Provided in pair with controlTemperature and strictly higher than it.",
          "example": 20.0
        },
        "density": {
          "type": "number",
          "description": "Density of the substance, expressed in kilograms per liter. Under ADR and IMDG it is needed to verify a quantity limit expressed in a unit other than the measure unit of the product, such as a limit in kilograms for a product declared in liters; without it, that limit is not verified and the response reports it as a warning (an error with strictPackingInstructionCheck).",
          "example": 1
        },
        "numberOfPackages": {
          "type": "integer",
          "description": "Number of identical outer packages of this product in the consignment.",
          "example": 3
        },
        "packageId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the outer package type from master data. The package type also declares limited and excepted quantities: the package types for limited quantities (box, drum and shrink-wrapped tray) declare the goods as limited quantities and the box for excepted quantities declares them as excepted quantities, and the limits that apply are checked.",
          "example": 14
        },
        "packageHomologationId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the package UN homologation code from master data.\n\nUnder ADR and IMDG, the net quantity and gross mass limits of the single or outer packaging are taken from the row of this homologation in the packing instruction: when it is omitted for a packaging that requires homologation, those limits are not verified and the response reports it as a warning (an error with strictPackingInstructionCheck).\n\nThe package types for limited and excepted quantities do not require homologation and have no homologations of their own: with them this field is optional and indicates the material of the outer packaging, which is one of the homologations of the box (packageId 5) for the limited quantity box and the excepted quantity box, and one of the homologations of the drum (packageId 14) for the limited quantity drum; the shrink-wrapped tray takes no material. Any other homologation is rejected. When the material is indicated, the transport document describes the package with it, for example fibreboard box; otherwise, with the package type only.",
          "example": 43
        },
        "packingInstructionId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the applicable packing instruction.\n\nUnder ADR and IMDG it may be omitted: the application then determines it from the declared packaging and checks its quantity limits. When a single packing instruction cannot be determined, the quantity limits are not verified: the response reports it as a warning with the rule reference ADR 4.1.4 or IMDG 4.1.4, or, when strictPackingInstructionCheck is true, the request is rejected, naming the candidates when there are several.\n\nUnder IATA, when omitted, the application determines it from the packaging and the net quantity."
        },
        "strictPackingInstructionCheck": {
          "type": "boolean",
          "description": "Optional. When true, the packing instruction must belong to the dangerous good and the packaging must be included in the packing instruction list for each enabled ADR or IMDG regulation: the homologation of the single or outer packaging and the inner packaging material. When absent or false, these verifications are not performed for ADR and IMDG. The IATA regulation applies this verification in all cases.\n\nUnder ADR and IMDG, a quantity limit that cannot be verified because the request lacks the density (in a packing instruction or in the excepted quantity code) or the homologation of the packaging is reported as an error when true and as a warning otherwise; when true, a flash-point that is not consistent with packing group II is also reported as an error instead of a warning.\n\nNot returned by any response: it is a write-time validation switch only and is not stored.\n\nWhen true and packingInstructionId is omitted for ADR or IMDG, the request is rejected when no packing instruction, or more than one, admits the declared packaging."
        },
        "imdgSegregationGroupId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the IMDG segregation group of the substance (IMDG Code 3.1.4), or 255 for no segregation group. It applies to the IMDG Code only. When the entry of the Dangerous Goods List already assigns segregation groups, those apply and this value is ignored. Otherwise, when it is omitted, an entry that is not an N.O.S. entry is recorded without segregation group, and an N.O.S. entry is rejected, because the consignor has to state its group."
        },
        "englishTechnicalName": {
          "type": "string",
          "description": "Technical name of the substance in English: the name, such as the chemical name of the components that give the hazard, that is added in parentheses to the proper shipping name of an N.O.S. entry or of another entry that requires a technical name. It is required when the dangerous good requires a technical name under the regulations that apply to the product, and it is the name printed on the IMDG Multimodal Dangerous Goods Form and on the Shipper's Declaration for Dangerous Goods, which are issued in English.",
          "example": "XYLENE AND BENZENE"
        },
        "countryOfOriginLanguageTechnicalName": {
          "type": "string",
          "description": "Technical name of the substance in the language of the country of the account, such as Spanish for an account in Spain. It is printed on the transport documents that are issued in that language, such as the IMDG Multimodal Dangerous Goods Form, which uses it as second language after English. It is required, together with `englishTechnicalName`, when the dangerous good requires a technical name and this language is not English. It is ignored when this language is English or when another technical name of the product is already given in this language.",
          "example": "XILENO Y BENCENO"
        },
        "adrPrincipalLanguageTechnicalName": {
          "type": "string",
          "description": "Technical name of the substance in the ADR official language configured for the user (English, French or German). The ADR transport document is printed in the language of the country of the account and also in this language when it is a different one. It applies to ADR only, and it is required, together with `englishTechnicalName`, when the dangerous good requires a technical name and the ADR official language of the user is French or German; when that language is English, `englishTechnicalName` is used and this value is ignored.",
          "example": "XYLOL UND BENZOL"
        },
        "hasInnerPackages": {
          "type": "boolean",
          "description": "Indicates whether the outer package contains inner packages.",
          "example": false
        },
        "unitaryQuantity": {
          "type": "number",
          "description": "Net quantity of substance per outer package.",
          "example": 1.2
        },
        "unitaryGrossQuantity": {
          "type": "number",
          "description": "Gross mass of one outer package, expressed in kilograms.",
          "example": 2
        },
        "unitaryQuantityExplosive": {
          "type": "number",
          "description": "Net explosive content per outer package, expressed in kilograms.",
          "example": 0
        },
        "fillingDegree": {
          "type": "number",
          "description": "Filling degree of the package, expressed as percentage.",
          "example": 100
        },
        "authorizations": {
          "type": "string",
          "description": "Authorizations or special provisions applicable to the transport.",
          "example": "Auth 0001"
        },
        "innerPackageMaterialId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the inner package material from master data."
        },
        "innerPackagesNumber": {
          "type": "integer",
          "description": "Number of inner packages contained in each outer package.",
          "example": 0
        },
        "innerPackageQuantity": {
          "type": "number",
          "description": "Net quantity per inner package.",
          "example": 0
        },
        "innerPackageCapacity": {
          "type": "number",
          "description": "Capacity of each inner package, in litres (for aerosols, the capacity of the dispenser).",
          "example": 0.5
        },
        "innerPackageQuantityExplosive": {
          "type": "number",
          "description": "Net explosive content per inner package, expressed in kilograms.",
          "example": 0
        },
        "radiological": {
          "description": "Radiological data. Mandatory when the on-the-fly product belongs to Class 7 (radioactive). Must be omitted for non-radioactive products.",
          "$ref": "#/definitions/ProductRadiological"
        },
        "specialFeatures": {
          "description": "Special features of the product for this mode of transport. The extra viscous features apply to Class 3 substances under the corresponding regulation; the salvage packaging feature has no restriction.",
          "$ref": "#/definitions/ProductTransportModeSpecialFeatures"
        },
        "consignmentItemCode": {
          "description": "Optional client identifier of the item within the consignment.",
          "$ref": "#/definitions/ConsignmentItemCode"
        }
      }
    },
    "SimpleProductTransportModeResponse": {
      "description": "Mode of transport of a good as returned from the catalogue.",
      "type": "object",
      "required": [
        "isDangerousGood",
        "isEmpty",
        "measureUnit",
        "pureMixOrSolution",
        "numberOfPackages",
        "packageId",
        "hasInnerPackages"
      ],
      "properties": {
        "reference": {
          "type": "string",
          "description": "Unique reference of the predefined product in the catalogue.",
          "example": "REF001"
        },
        "productCode": {
          "type": "string",
          "description": "Internal product code assigned by the customer.",
          "example": "PROCOD001"
        },
        "productName": {
          "type": "string",
          "description": "Commercial name of the product.",
          "example": "PRONAM001"
        },
        "isDangerousGood": {
          "type": "boolean",
          "description": "Indicates whether the product is regulated as dangerous goods.",
          "example": true
        },
        "dangerousGoodId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the dangerous good entry in master data.",
          "example": 2301
        },
        "isEmpty": {
          "type": "boolean",
          "description": "Indicates whether the package is empty and uncleaned.",
          "example": false
        },
        "isEnvironmentallyHazardous": {
          "description": "Indicates whether the substance is environmentally hazardous (marine pollutant).",
          "type": "boolean"
        },
        "physicalState": {
          "description": "Physical state of the substance: Liquid, Solid or Gas.",
          "$ref": "#/definitions/PhysicalState"
        },
        "measureUnit": {
          "description": "Measurement unit for quantities: Kg or L.",
          "$ref": "#/definitions/MeasureUnit"
        },
        "pureMixOrSolution": {
          "description": "Indicates whether the substance is pure, a mixture or a solution.",
          "$ref": "#/definitions/PureMixOrSolution"
        },
        "mixOrSolutionPercentage": {
          "type": "number",
          "description": "Percentage of the dangerous component in the mixture or solution."
        },
        "flashPoint": {
          "type": "number",
          "description": "Closed-cup flash-point of the substance, expressed in Celsius.",
          "example": 30.2
        },
        "controlTemperature": {
          "type": "number",
          "description": "Control temperature in Celsius (ADR 5.4.1.2.3.1 / IMDG 5.4.1.5.4 and 5.4.1.5.5). Mandatory together with emergencyTemperature for temperature-controlled substances (UN 3111-3120, 3231-3240, 3533 and 3534); optional for stabilized substances that allow temperature control. Must be lower than emergencyTemperature.",
          "example": 15.0
        },
        "emergencyTemperature": {
          "type": "number",
          "description": "Emergency temperature in Celsius (ADR 5.4.1.2.3.1 / IMDG 5.4.1.5.4 and 5.4.1.5.5). Provided in pair with controlTemperature and strictly higher than it.",
          "example": 20.0
        },
        "density": {
          "type": "number",
          "description": "Density of the substance, expressed in kilograms per liter.",
          "example": 1
        },
        "numberOfPackages": {
          "type": "integer",
          "description": "Number of identical outer packages of this product in the consignment.",
          "example": 3
        },
        "packageId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the outer package type from master data.",
          "example": 14
        },
        "packageHomologationId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the package UN homologation code from master data. With the package types for limited and excepted quantities it indicates the material of the outer packaging; of two homologations with the same material, the one with the lowest identifier is returned.",
          "example": 43
        },
        "packingInstructionId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the applicable packing instruction."
        },
        "imdgSegregationGroupId": {
          "description": "Identifier of the IMDG segregation group declared for the substance.",
          "type": "integer",
          "format": "int64"
        },
        "technicalName": {
          "type": "string",
          "description": "Technical name of the substance, when applicable.",
          "example": "XYLENE AND BENZENE"
        },
        "technicalNames": {
          "description": "Technical names of the substance in every language stored for it. Complements the single technicalName above, which keeps returning the name in the language of the transport document. The englishTechnicalName supplied on creation is always retrievable here; the other technical names supplied on creation appear under the concrete language to which they correspond, such as Spanish or French, with a single entry for each language.",
          "$ref": "#/definitions/TechnicalNames"
        },
        "hasInnerPackages": {
          "type": "boolean",
          "description": "Indicates whether the outer package contains inner packages.",
          "example": false
        },
        "unitaryQuantity": {
          "type": "number",
          "description": "Net quantity of substance per outer package.",
          "example": 1.2
        },
        "unitaryGrossQuantity": {
          "type": "number",
          "description": "Gross mass of one outer package, expressed in kilograms.",
          "example": 2
        },
        "unitaryQuantityExplosive": {
          "type": "number",
          "description": "Net explosive content per outer package, expressed in kilograms.",
          "example": 0
        },
        "fillingDegree": {
          "type": "number",
          "description": "Filling degree of the package, expressed as percentage.",
          "example": 100
        },
        "authorizations": {
          "type": "string",
          "description": "Authorizations or special provisions applicable to the transport.",
          "example": "Auth 0001"
        },
        "innerPackageMaterialId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the inner package material from master data."
        },
        "innerPackagesNumber": {
          "type": "integer",
          "description": "Number of inner packages contained in each outer package.",
          "example": 0
        },
        "innerPackageQuantity": {
          "type": "number",
          "description": "Net quantity per inner package.",
          "example": 0
        },
        "innerPackageCapacity": {
          "type": "number",
          "description": "Capacity of each inner package, in litres (for aerosols, the capacity of the dispenser).",
          "example": 0.5
        },
        "innerPackageQuantityExplosive": {
          "type": "number",
          "description": "Net explosive content per inner package, expressed in kilograms.",
          "example": 0
        },
        "radiological": {
          "description": "Radiological data of the consignment line product. Only populated for Class 7 (radioactive) products. Includes radionuclide code, activity in Bq, package type, special form flag, fissile flag, category, transport index, certificate reference and physico-chemical description.",
          "$ref": "#/definitions/ProductRadiological"
        },
        "specialFeatures": {
          "description": "Special features of the substance.",
          "$ref": "#/definitions/ProductTransportModeSpecialFeatures"
        },
        "consignmentItemCode": {
          "description": "Optional client identifier of the item within the consignment.",
          "$ref": "#/definitions/ConsignmentItemCode"
        }
      }
    },
    "MixedPackingProductTransportMode": {
      "description": "Predefined mixed packing product to be added to a consignment, identified by reference.",
      "type": "object",
      "required": [
        "reference",
        "numberOfPackages"
      ],
      "properties": {
        "reference": {
          "type": "string",
          "description": "Unique reference of the predefined mixed packing in the catalogue.",
          "example": "MIXPACMOD001"
        },
        "numberOfPackages": {
          "type": "integer",
          "description": "Number of identical outer packages of this mixed packing in the consignment.",
          "example": 3
        },
        "unitaryGrossQuantity": {
          "type": "number",
          "description": "Gross mass of one outer package, expressed in kilograms.",
          "example": 21
        },
        "consignmentItemCode": {
          "description": "Optional client identifier of the item within the consignment.",
          "$ref": "#/definitions/ConsignmentItemCode"
        }
      }
    },
    "MixedPackingProductTransportModeOnTheFly": {
      "description": "Mixed packing that is not predefined in the catalogue and is fully described on the fly.",
      "type": "object",
      "required": [
        "numberOfPackages",
        "outerPackageId",
        "outerPackageHomologationId",
        "contents"
      ],
      "properties": {
        "productName": {
          "type": "string",
          "description": "Commercial name of the mixed packing product.",
          "example": "MIXPACNAM001"
        },
        "productCode": {
          "type": "string",
          "description": "Internal product code assigned by the customer.",
          "example": "MIXPACCOD001"
        },
        "numberOfPackages": {
          "type": "integer",
          "description": "Number of identical outer packages of this mixed packing in the consignment.",
          "example": 3
        },
        "unitaryGrossQuantity": {
          "type": "number",
          "description": "Gross mass of one outer package, expressed in kilograms.",
          "example": 21
        },
        "outerPackageId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the outer package type from master data. The package type also declares limited and excepted quantities: the package types for limited quantities (box, drum and shrink-wrapped tray) declare the goods as limited quantities and the box for excepted quantities declares them as excepted quantities, and the limits that apply are checked.",
          "example": 14
        },
        "outerPackageHomologationId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the outer package UN homologation code from master data. With the limited quantity box and the excepted quantity box it indicates the material of the outer packaging and must be one of the homologations of the box (packageId 5); with the limited quantity drum, one of the homologations of the drum (packageId 14).",
          "example": 43
        },
        "contents": {
          "type": "array",
          "description": "List of contents within the mixed packing.",
          "items": {
            "$ref": "#/definitions/MixedPackingProductTransportModeContent"
          }
        },
        "consignmentItemCode": {
          "description": "Optional client identifier of the item within the consignment.",
          "$ref": "#/definitions/ConsignmentItemCode"
        }
      }
    },
    "MixedPackingProductTransportModeInteractive": {
      "description": "Mixed packing added to a consignment, ready to receive contents interactively.",
      "type": "object",
      "required": [
        "numberOfPackages",
        "outerPackageId",
        "outerPackageHomologationId",
        "productCode"
      ],
      "properties": {
        "consignmentId": {
          "type": "integer",
          "format": "int64",
          "description": "Consignment that fixes the account and the regulation used to validate the contents. Creating the product does NOT add it to this consignment: attach it afterwards with POST /consignment/{consignmentId}/mixedPackingProduct.",
          "example": 354357254
        },
        "productName": {
          "type": "string",
          "description": "Commercial name of the mixed packing product.",
          "example": "MIXPACNAM001"
        },
        "productCode": {
          "type": "string",
          "description": "Internal product code assigned by the customer. Required: it is the reference to pass to POST /consignment/{consignmentId}/mixedPackingProduct to attach the product to the consignment once its contents are added. It is trimmed of surrounding blanks, must not be blank and must not be already in use by another product of the account, because the attach step requires exactly one product with that reference.",
          "example": "MIXPACCOD001"
        },
        "numberOfPackages": {
          "type": "integer",
          "description": "Number of identical outer packages of this mixed packing in the consignment.",
          "example": 3
        },
        "unitaryGrossQuantity": {
          "type": "number",
          "description": "Gross mass of one outer package, expressed in kilograms.",
          "example": 21
        },
        "outerPackageId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the outer package type from master data. The package type also declares limited and excepted quantities: the package types for limited quantities (box, drum and shrink-wrapped tray) declare the goods as limited quantities and the box for excepted quantities declares them as excepted quantities, and the limits that apply are checked.",
          "example": 14
        },
        "outerPackageHomologationId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the outer package UN homologation code from master data. With the limited quantity box and the excepted quantity box it indicates the material of the outer packaging and must be one of the homologations of the box (packageId 5); with the limited quantity drum, one of the homologations of the drum (packageId 14).",
          "example": 43
        },
        "consignmentItemCode": {
          "description": "Optional client identifier of the item within the consignment.",
          "$ref": "#/definitions/ConsignmentItemCode"
        },
        "contents": {
          "type": "array",
          "description": "Contents of the mixed packing. Substances supplied here are created together with the mixed packing; further substances may be added afterwards with the dedicated content operation.",
          "items": {
            "$ref": "#/definitions/MixedPackingProductTransportModeContent"
          }
        }
      }
    },
    "MixedPackingProductTransportModeResponse": {
      "description": "Mode of transport of a mixed packing as returned from the catalogue.",
      "type": "object",
      "required": [
        "numberOfPackages",
        "outerPackageId",
        "outerPackageHomologationId",
        "contents"
      ],
      "properties": {
        "productName": {
          "type": "string",
          "description": "Commercial name of the mixed packing product.",
          "example": "MIXPACNAM001"
        },
        "productCode": {
          "type": "string",
          "description": "Internal product code assigned by the customer.",
          "example": "MIXPACCOD001"
        },
        "numberOfPackages": {
          "type": "integer",
          "description": "Number of identical outer packages of this mixed packing in the consignment.",
          "example": 3
        },
        "unitaryGrossQuantity": {
          "type": "number",
          "description": "Gross mass of one outer package, expressed in kilograms.",
          "example": 21
        },
        "outerPackageId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the outer package type from master data.",
          "example": 14
        },
        "outerPackageHomologationId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the outer package UN homologation code from master data. With the package types for limited and excepted quantities it indicates the material of the outer packaging; of two homologations with the same material, the one with the lowest identifier is returned.",
          "example": 43
        },
        "contents": {
          "type": "array",
          "description": "List of contents within the mixed packing.",
          "items": {
            "$ref": "#/definitions/MixedPackingProductTransportModeContentResponse"
          }
        },
        "consignmentItemCode": {
          "description": "Optional client identifier of the item within the consignment.",
          "$ref": "#/definitions/ConsignmentItemCode"
        }
      }
    },
    "MixedPackingProductTransportModeContent": {
      "description": "Each of the goods contained on a mixed packing",
      "type": "object",
      "required": [
        "isEnvironmentallyHazardous",
        "physicalState",
        "measureUnit",
        "pureMixOrSolution",
        "numberOfInnerPackages",
        "innerPackageMaterialId",
        "innerPackageQuantity"
      ],
      "properties": {
        "dangerousGoodId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the dangerous good entry in master data. Class 7 (radioactive) entries are rejected as contents of a mixed packing: declare radioactive material as a simple product with radiological.nuclides[].",
          "example": 2301
        },
        "isEnvironmentallyHazardous": {
          "type": "boolean",
          "description": "Indicates whether the substance is environmentally hazardous (marine pollutant). Optional when the catalogue determines it for every regulation enabled for the product: if omitted, the value is taken from the catalogue marks of the enabled regulations (UN 3077 and UN 3082 for IATA); when the catalogue leaves it undecided for any of them, the field is required.",
          "example": false
        },
        "physicalState": {
          "description": "Physical state of the substance: Liquid, Solid or Gas.",
          "$ref": "#/definitions/PhysicalState"
        },
        "measureUnit": {
          "description": "Measurement unit for quantities: Kg or L.",
          "$ref": "#/definitions/MeasureUnit"
        },
        "pureMixOrSolution": {
          "description": "Indicates whether the substance is pure, a mixture or a solution.",
          "$ref": "#/definitions/PureMixOrSolution"
        },
        "mixOrSolutionPercentage": {
          "type": "number",
          "description": "Percentage of the dangerous component in the mixture or solution."
        },
        "flashPoint": {
          "type": "number",
          "description": "Closed-cup flash-point of the substance, expressed in Celsius. For Class 3 it is checked against the packing group of the dangerous good: an inconsistency is reported as a warning, or as an error in the cases described in strictPackingInstructionCheck.",
          "example": 30.2
        },
        "density": {
          "type": "number",
          "description": "Density of the substance, expressed in kilograms per liter. Under ADR and IMDG it is needed to verify a quantity limit expressed in a unit other than the measure unit of the content, such as the net quantity limit in kilograms of the outer packaging for a content declared in liters, or an excepted quantity limit in milliliters for a liquid declared in kilograms; without it, that limit is not verified and the response reports it as a warning (an error with strictPackingInstructionCheck).",
          "example": 1
        },
        "imdgSegregationGroupId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the IMDG segregation group of the substance (IMDG Code 3.1.4), or 255 for no segregation group. It applies to the IMDG Code only. When the entry of the Dangerous Goods List already assigns segregation groups, those apply and this value is ignored. Otherwise, when it is omitted, an entry that is not an N.O.S. entry is recorded without segregation group, and an N.O.S. entry is rejected, because the consignor has to state its group."
        },
        "englishTechnicalName": {
          "type": "string",
          "description": "Technical name of the substance in English: the name, such as the chemical name of the components that give the hazard, that is added in parentheses to the proper shipping name of an N.O.S. entry or of another entry that requires a technical name. It is required when the dangerous good requires a technical name under the regulations that apply to the product, and it is the name printed on the IMDG Multimodal Dangerous Goods Form and on the Shipper's Declaration for Dangerous Goods, which are issued in English.",
          "example": "XYLENE AND BENZENE"
        },
        "countryOfOriginLanguageTechnicalName": {
          "type": "string",
          "description": "Technical name of the substance in the language of the country of the account, such as Spanish for an account in Spain. It is printed on the transport documents that are issued in that language, such as the IMDG Multimodal Dangerous Goods Form, which uses it as second language after English. It is required, together with `englishTechnicalName`, when the dangerous good requires a technical name and this language is not English. It is ignored when this language is English or when another technical name of the product is already given in this language.",
          "example": "XILENO Y BENCENO"
        },
        "adrPrincipalLanguageTechnicalName": {
          "type": "string",
          "description": "Technical name of the substance in the ADR official language configured for the user (English, French or German). The ADR transport document is printed in the language of the country of the account and also in this language when it is a different one. It applies to ADR only, and it is required, together with `englishTechnicalName`, when the dangerous good requires a technical name and the ADR official language of the user is French or German; when that language is English, `englishTechnicalName` is used and this value is ignored.",
          "example": "XYLOL UND BENZOL"
        },
        "authorizations": {
          "type": "string",
          "description": "Authorizations or special provisions applicable to the transport.",
          "example": "Auth 0001"
        },
        "innerPackageMaterialId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the inner package material from master data.",
          "example": 1
        },
        "packingInstructionId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the applicable packing instruction.\n\nUnder ADR and IMDG it may be omitted: the application then determines it from the outer packaging of the mixed packing and the inner packaging material of the content, and checks its quantity limits. When a single packing instruction cannot be determined, the quantity limits are not verified: the response reports it as a warning with the rule reference ADR 4.1.4 or IMDG 4.1.4, or, when strictPackingInstructionCheck is true, the request is rejected, naming the candidates when there are several.\n\nUnder IATA, when omitted, the application determines it from the packaging and the net quantity."
        },
        "strictPackingInstructionCheck": {
          "type": "boolean",
          "description": "Optional. When true, for each enabled ADR or IMDG regulation the packing instruction of the content must belong to the dangerous good, and the outer packaging of the mixed packing and the inner packaging material of the content must be included in its list. When absent or false, these verifications are not performed for ADR and IMDG. The IATA regulation applies this verification in all cases.\n\nUnder ADR and IMDG, a quantity limit that cannot be verified because the request lacks the density, in a packing instruction or in the excepted quantity code, is reported as an error when true and as a warning otherwise; when true, a flash-point that is not consistent with packing group II is also reported as an error instead of a warning.\n\nNot returned by any response: it is a write-time validation switch only and is not stored.\n\nWhen true and packingInstructionId is omitted for ADR or IMDG, the request is rejected when no packing instruction, or more than one, admits the packaging of the content."
        },
        "numberOfInnerPackages": {
          "type": "integer",
          "description": "Number of inner packages of this content within the mixed packing.",
          "example": 3
        },
        "innerPackageQuantity": {
          "type": "number",
          "description": "Net quantity per inner package.",
          "example": 0.1
        },
        "innerPackageCapacity": {
          "type": "number",
          "description": "Capacity of each inner package, in litres (for aerosols, the capacity of the dispenser).",
          "example": 0.5
        },
        "innerPackageQuantityExplosive": {
          "type": "number",
          "description": "Net explosive content per inner package, expressed in kilograms.",
          "example": 0
        },
        "consignmentItemCode": {
          "description": "Optional client identifier of the item within the consignment.",
          "$ref": "#/definitions/ConsignmentItemCode"
        }
      }
    },
    "MixedPackingProductTransportModeContentResponse": {
      "description": "Each of the goods contained on a mixed packing response",
      "type": "object",
      "required": [
        "measureUnit",
        "pureMixOrSolution",
        "numberOfInnerPackages",
        "innerPackageMaterialId",
        "innerPackageQuantity"
      ],
      "properties": {
        "isDangerousGood": {
          "type": "boolean",
          "description": "Indicates whether the content is regulated as dangerous goods.",
          "example": true
        },
        "dangerousGoodId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the dangerous good entry in master data.",
          "example": 2301
        },
        "measureUnit": {
          "description": "Measurement unit for quantities: Kg or L.",
          "$ref": "#/definitions/MeasureUnit"
        },
        "pureMixOrSolution": {
          "description": "Indicates whether the substance is pure, a mixture or a solution.",
          "$ref": "#/definitions/PureMixOrSolution"
        },
        "mixOrSolutionPercentage": {
          "type": "number",
          "description": "Percentage of the dangerous component in the mixture or solution."
        },
        "flashPoint": {
          "type": "number",
          "description": "Closed-cup flash-point of the substance, expressed in Celsius.",
          "example": 30.2
        },
        "density": {
          "type": "number",
          "description": "Density of the substance, expressed in kilograms per liter.",
          "example": 1
        },
        "technicalName": {
          "type": "string",
          "description": "Technical name of the substance, when applicable.",
          "example": "XYLENE AND BENZENE"
        },
        "authorizations": {
          "type": "string",
          "description": "Authorizations or special provisions applicable to the transport.",
          "example": "Auth 0001"
        },
        "innerPackageMaterialId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the inner package material from master data.",
          "example": 1
        },
        "packingInstructionId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the applicable packing instruction."
        },
        "numberOfInnerPackages": {
          "type": "integer",
          "description": "Number of inner packages of this content within the mixed packing.",
          "example": 3
        },
        "innerPackageQuantity": {
          "type": "number",
          "description": "Net quantity per inner package.",
          "example": 0.1
        },
        "innerPackageCapacity": {
          "type": "number",
          "description": "Capacity of each inner package, in litres (for aerosols, the capacity of the dispenser).",
          "example": 0.5
        },
        "innerPackageQuantityExplosive": {
          "type": "number",
          "description": "Net explosive content per inner package, expressed in kilograms.",
          "example": 0
        },
        "consignmentItemCode": {
          "description": "Optional client identifier of the item within the consignment.",
          "$ref": "#/definitions/ConsignmentItemCode"
        },
        "isEnvironmentallyHazardous": {
          "description": "Indicates whether the substance is environmentally hazardous (marine pollutant).",
          "type": "boolean"
        },
        "physicalState": {
          "description": "Physical state of the substance: Liquid, Solid or Gas.",
          "$ref": "#/definitions/PhysicalState"
        },
        "imdgSegregationGroupId": {
          "description": "Identifier of the IMDG segregation group declared for the substance.",
          "type": "integer",
          "format": "int64"
        },
        "technicalNames": {
          "description": "Technical names of the substance in every language stored for it. Complements the single technicalName above, which keeps returning the name in the language of the transport document. The englishTechnicalName supplied on creation is always retrievable here; the other technical names supplied on creation appear under the concrete language to which they correspond, such as Spanish or French, with a single entry for each language.",
          "$ref": "#/definitions/TechnicalNames"
        }
      }
    },
    "Overpack": {
      "description": "Group of identical overpacks containing simple or mixed packing products under common identifiers. Accepted in ADR, IMDG and IATA consignments; the GET of the consignment returns each overpack as an item of type Overpack with its contents nested.",
      "type": "object",
      "required": [
        "identifiersOfOverpacks",
        "numberOfOverpacks"
      ],
      "properties": {
        "numberOfOverpacks": {
          "description": "number of identical overpacks",
          "type": "integer",
          "example": 2,
          "minimum": 1
        },
        "identifiersOfOverpacks": {
          "description": "identifier for each identical overpacks",
          "type": "array",
          "items": {
            "type": "string"
          },
          "example": [
            "#OV1",
            "#OV2"
          ]
        },
        "predefinedSimpleProducts": {
          "type": "array",
          "description": "Predefined simple products grouped within the overpack.",
          "items": {
            "$ref": "#/definitions/SimpleProductTransportMode"
          }
        },
        "onTheFlySimpleProducts": {
          "type": "array",
          "description": "Simple products fully described in the request, grouped within the overpack.",
          "items": {
            "$ref": "#/definitions/SimpleProductTransportModeOnTheFly"
          }
        },
        "predefinedMixedPackingProducts": {
          "type": "array",
          "description": "Predefined mixed packing products grouped within the overpack.",
          "items": {
            "$ref": "#/definitions/MixedPackingProductTransportMode"
          }
        },
        "onTheFlyMixedPackingProducts": {
          "type": "array",
          "description": "Mixed packing products fully described in the request, grouped within the overpack.",
          "items": {
            "$ref": "#/definitions/MixedPackingProductTransportModeOnTheFly"
          }
        },
        "consignmentItemCode": {
          "description": "Optional client identifier of the item within the consignment.",
          "$ref": "#/definitions/ConsignmentItemCode"
        }
      }
    },
    "OverpackResponse": {
      "description": "Overpack of the consignment, including its grouped contents.",
      "type": "object",
      "required": [
        "identifiersOfOverpacks",
        "numberOfOverpacks"
      ],
      "properties": {
        "numberOfOverpacks": {
          "description": "number of identical overpacks",
          "type": "integer",
          "example": 2,
          "minimum": 1
        },
        "identifiersOfOverpacks": {
          "description": "identifier for each identical overpacks",
          "type": "array",
          "items": {
            "type": "string"
          },
          "example": [
            "#OV1",
            "#OV2"
          ]
        },
        "contents": {
          "type": "array",
          "description": "List of items contained in the overpack.",
          "items": {
            "$ref": "#/definitions/ConsignmentItemResponse"
          }
        },
        "consignmentItemCode": {
          "description": "Optional client identifier of the item within the consignment.",
          "$ref": "#/definitions/ConsignmentItemCode"
        }
      }
    },
    "ConsignmentItemCode": {
      "description": "unique identifier of an item in the context of a Consignment",
      "type": "string",
      "example": "ITEM-9515-4013-AA46"
    },
    "SimpleProduct": {
      "description": "Mode of transport of a good to be saved in the catalogue.",
      "type": "object",
      "required": [
        "accountCode",
        "enabledDangerousGoodsRegulations",
        "reference",
        "isDangerousGood",
        "isEnvironmentallyHazardous",
        "isEmpty",
        "physicalState",
        "measureUnit",
        "pureMixOrSolution",
        "packageId",
        "hasInnerPackages"
      ],
      "properties": {
        "accountCode": {
          "type": "string",
          "description": "Customer account code identifying the tenant in the system.",
          "example": "CO001"
        },
        "enabledDangerousGoodsRegulations": {
          "type": "array",
          "description": "List of dangerous goods regulations enabled for this product.",
          "minItems": 1,
          "items": {
            "$ref": "#/definitions/DangerousGoodsRegulation"
          }
        },
        "reference": {
          "type": "string",
          "description": "Unique reference of the product in the catalogue.",
          "example": "REF001"
        },
        "productCode": {
          "type": "string",
          "description": "Internal product code assigned by the customer.",
          "example": "PROCOD001"
        },
        "productName": {
          "type": "string",
          "description": "Commercial name of the product.",
          "example": "PRONAM001"
        },
        "isDangerousGood": {
          "type": "boolean",
          "description": "Indicates whether the product is regulated as dangerous goods.",
          "example": true
        },
        "dangerousGoodId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the dangerous good entry in master data.",
          "example": 2301
        },
        "technicalNames": {
          "description": "Technical names of the substance in different languages.",
          "$ref": "#/definitions/TechnicalNames"
        },
        "isEnvironmentallyHazardous": {
          "type": "boolean",
          "description": "Indicates whether the substance is environmentally hazardous (marine pollutant).",
          "example": false
        },
        "isEmpty": {
          "type": "boolean",
          "description": "Indicates whether the package is empty and uncleaned.",
          "example": false
        },
        "physicalState": {
          "description": "Physical state of the substance: Liquid, Solid or Gas.",
          "$ref": "#/definitions/PhysicalState"
        },
        "measureUnit": {
          "description": "Measurement unit for quantities: Kg or L.",
          "$ref": "#/definitions/MeasureUnit"
        },
        "pureMixOrSolution": {
          "description": "Indicates whether the substance is pure, a mixture or a solution.",
          "$ref": "#/definitions/PureMixOrSolution"
        },
        "mixOrSolutionPercentage": {
          "type": "number",
          "description": "Percentage of the dangerous component in the mixture or solution."
        },
        "flashPoint": {
          "type": "number",
          "description": "Closed-cup flash-point of the substance, expressed in Celsius. For Class 3 it is checked against the packing group of the dangerous good: an inconsistency is reported as a warning, or as an error in the cases described in strictPackingInstructionCheck.",
          "example": 30.2
        },
        "controlTemperature": {
          "type": "number",
          "description": "Control temperature in Celsius (ADR 5.4.1.2.3.1 / IMDG 5.4.1.5.4 and 5.4.1.5.5). Mandatory together with emergencyTemperature for temperature-controlled substances (UN 3111-3120, 3231-3240, 3533 and 3534); optional for stabilized substances that allow temperature control. Must be lower than emergencyTemperature.",
          "example": 15.0
        },
        "emergencyTemperature": {
          "type": "number",
          "description": "Emergency temperature in Celsius (ADR 5.4.1.2.3.1 / IMDG 5.4.1.5.4 and 5.4.1.5.5). Provided in pair with controlTemperature and strictly higher than it.",
          "example": 20.0
        },
        "density": {
          "type": "number",
          "description": "Density of the substance, expressed in kilograms per liter. Under ADR and IMDG it is needed to verify a quantity limit expressed in a unit other than the measure unit of the product, such as a limit in kilograms for a product declared in liters; without it, that limit is not verified and the response reports it as a warning (an error with strictPackingInstructionCheck).",
          "example": 1
        },
        "packageId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the outer package type from master data. The package type also declares limited and excepted quantities: the package types for limited quantities (box, drum and shrink-wrapped tray) declare the goods as limited quantities and the box for excepted quantities declares them as excepted quantities, and the limits that apply are checked.",
          "example": 14
        },
        "packageHomologationId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the package UN homologation code from master data.\n\nUnder ADR and IMDG, the net quantity and gross mass limits of the single or outer packaging are taken from the row of this homologation in the packing instruction: when it is omitted for a packaging that requires homologation, those limits are not verified and the response reports it as a warning (an error with strictPackingInstructionCheck).\n\nThe package types for limited and excepted quantities do not require homologation and have no homologations of their own: with them this field is optional and indicates the material of the outer packaging, which is one of the homologations of the box (packageId 5) for the limited quantity box and the excepted quantity box, and one of the homologations of the drum (packageId 14) for the limited quantity drum; the shrink-wrapped tray takes no material. Any other homologation is rejected. When the material is indicated, the transport document describes the package with it, for example fibreboard box; otherwise, with the package type only.",
          "example": 43
        },
        "packingInstructionId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the applicable packing instruction.\n\nUnder ADR and IMDG it may be omitted: the application then determines it from the declared packaging and checks its quantity limits. When a single packing instruction cannot be determined, the quantity limits are not verified: the response reports it as a warning with the rule reference ADR 4.1.4 or IMDG 4.1.4, or, when strictPackingInstructionCheck is true, the request is rejected, naming the candidates when there are several.\n\nUnder IATA, when omitted, the application determines it from the packaging and the net quantity."
        },
        "strictPackingInstructionCheck": {
          "type": "boolean",
          "description": "Optional. When true, the packing instruction must belong to the dangerous good and the packaging must be included in the packing instruction list for each enabled ADR or IMDG regulation: the homologation of the single or outer packaging and the inner packaging material. When absent or false, these verifications are not performed for ADR and IMDG. The IATA regulation applies this verification in all cases.\n\nUnder ADR and IMDG, a quantity limit that cannot be verified because the request lacks the density (in a packing instruction or in the excepted quantity code) or the homologation of the packaging is reported as an error when true and as a warning otherwise; when true, a flash-point that is not consistent with packing group II is also reported as an error instead of a warning.\n\nNot returned by any response: it is a write-time validation switch only and is not stored.\n\nWhen true and packingInstructionId is omitted for ADR or IMDG, the request is rejected when no packing instruction, or more than one, admits the declared packaging."
        },
        "imdgSegregationGroupId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the IMDG segregation group of the substance (IMDG Code 3.1.4), or 255 for no segregation group. It applies to the IMDG Code only. When the entry of the Dangerous Goods List already assigns segregation groups, those apply and this value is ignored. Otherwise, when it is omitted, an entry that is not an N.O.S. entry is recorded without segregation group, and an N.O.S. entry is rejected, because the consignor has to state its group."
        },
        "hasInnerPackages": {
          "type": "boolean",
          "description": "Indicates whether the outer package contains inner packages.",
          "example": false
        },
        "unitaryQuantity": {
          "type": "number",
          "description": "Net quantity of substance per outer package.",
          "example": 1.2
        },
        "unitaryGrossQuantity": {
          "type": "number",
          "description": "Gross mass of one outer package, expressed in kilograms.",
          "example": 2
        },
        "unitaryQuantityExplosive": {
          "type": "number",
          "description": "Net explosive content per outer package, expressed in kilograms.",
          "example": 0
        },
        "fillingDegree": {
          "type": "number",
          "description": "Filling degree of the package, expressed as percentage.",
          "example": 100
        },
        "authorizations": {
          "type": "string",
          "description": "Authorizations or special provisions applicable to the transport.",
          "example": "Auth 0001"
        },
        "innerPackageMaterialId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the inner package material from master data."
        },
        "innerPackagesNumber": {
          "type": "integer",
          "description": "Number of inner packages contained in each outer package.",
          "example": 0
        },
        "innerPackageQuantity": {
          "type": "number",
          "description": "Net quantity per inner package.",
          "example": 0
        },
        "innerPackageCapacity": {
          "type": "number",
          "description": "Capacity of each inner package, in litres (for aerosols, the capacity of the dispenser).",
          "example": 0.5
        },
        "innerPackageQuantityExplosive": {
          "type": "number",
          "description": "Net explosive content per inner package, expressed in kilograms.",
          "example": 0
        },
        "radiological": {
          "description": "Radiological data. Mandatory when the product belongs to Class 7 (radioactive). Must be omitted for non-radioactive products.",
          "$ref": "#/definitions/ProductRadiological"
        },
        "specialFeatures": {
          "description": "Special features of the product for this mode of transport. The extra viscous features apply to Class 3 substances under the corresponding regulation; the salvage packaging feature has no restriction.",
          "$ref": "#/definitions/ProductTransportModeSpecialFeatures"
        }
      }
    },
    "SimpleProductResponse": {
      "description": "Envelope object carrying the simple product data returned by the service under the simpleProductResponse property.",
      "type": "object",
      "properties": {
        "simpleProductResponse": {
          "$ref": "#/definitions/SimpleProductResponseData"
        }
      }
    },
    "SimpleProductResponseData": {
      "description": "Mode of transport of a good saved in the catalogue.",
      "type": "object",
      "required": [
        "reference",
        "isDangerousGood",
        "enabledDangerousGoodsRegulations",
        "isEnvironmentallyHazardous",
        "isEmpty",
        "measureUnit",
        "pureMixOrSolution",
        "packageId",
        "hasInnerPackages"
      ],
      "properties": {
        "accountCode": {
          "type": "string",
          "description": "Customer account code identifying the tenant in the system.",
          "example": "CO001"
        },
        "reference": {
          "type": "string",
          "description": "Unique reference of the product in the catalogue.",
          "example": "REF001"
        },
        "productCode": {
          "type": "string",
          "description": "Internal product code assigned by the customer.",
          "example": "PROCOD001"
        },
        "productName": {
          "type": "string",
          "description": "Commercial name of the product.",
          "example": "PRONAM001"
        },
        "isDangerousGood": {
          "type": "boolean",
          "description": "Indicates whether the product is regulated as dangerous goods.",
          "example": true
        },
        "dangerousGoodId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the dangerous good entry in master data.",
          "example": 2301
        },
        "enabledDangerousGoodsRegulations": {
          "type": "array",
          "description": "List of dangerous goods regulations enabled for this product.",
          "minItems": 1,
          "items": {
            "$ref": "#/definitions/DangerousGoodsRegulation"
          }
        },
        "technicalNames": {
          "description": "Technical names of the substance in different languages.",
          "$ref": "#/definitions/TechnicalNames"
        },
        "isEnvironmentallyHazardous": {
          "type": "boolean",
          "description": "Indicates whether the substance is environmentally hazardous (marine pollutant).",
          "example": false
        },
        "isEmpty": {
          "type": "boolean",
          "description": "Indicates whether the package is empty and uncleaned.",
          "example": false
        },
        "physicalState": {
          "description": "Physical state of the substance: Liquid, Solid or Gas.",
          "$ref": "#/definitions/PhysicalState"
        },
        "measureUnit": {
          "description": "Measurement unit for quantities: Kg or L.",
          "$ref": "#/definitions/MeasureUnit"
        },
        "pureMixOrSolution": {
          "description": "Indicates whether the substance is pure, a mixture or a solution.",
          "$ref": "#/definitions/PureMixOrSolution"
        },
        "mixOrSolutionPercentage": {
          "type": "number",
          "description": "Percentage of the dangerous component in the mixture or solution."
        },
        "flashPoint": {
          "type": "number",
          "description": "Closed-cup flash-point of the substance, expressed in Celsius.",
          "example": 30.2
        },
        "controlTemperature": {
          "type": "number",
          "description": "Control temperature in Celsius (ADR 5.4.1.2.3.1 / IMDG 5.4.1.5.4 and 5.4.1.5.5). Mandatory together with emergencyTemperature for temperature-controlled substances (UN 3111-3120, 3231-3240, 3533 and 3534); optional for stabilized substances that allow temperature control. Must be lower than emergencyTemperature.",
          "example": 15.0
        },
        "emergencyTemperature": {
          "type": "number",
          "description": "Emergency temperature in Celsius (ADR 5.4.1.2.3.1 / IMDG 5.4.1.5.4 and 5.4.1.5.5). Provided in pair with controlTemperature and strictly higher than it.",
          "example": 20.0
        },
        "density": {
          "type": "number",
          "description": "Density of the substance, expressed in kilograms per liter.",
          "example": 1
        },
        "packageId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the outer package type from master data.",
          "example": 14
        },
        "packageHomologationId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the package UN homologation code from master data. With the package types for limited and excepted quantities it indicates the material of the outer packaging; of two homologations with the same material, the one with the lowest identifier is returned.",
          "example": 43
        },
        "packingInstructionId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the applicable packing instruction."
        },
        "imdgSegregationGroupId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the IMDG segregation group of the substance.",
          "example": 5
        },
        "hasInnerPackages": {
          "type": "boolean",
          "description": "Indicates whether the outer package contains inner packages.",
          "example": false
        },
        "unitaryQuantity": {
          "type": "number",
          "description": "Net quantity of substance per outer package.",
          "example": 1.2
        },
        "unitaryGrossQuantity": {
          "type": "number",
          "description": "Gross mass of one outer package, expressed in kilograms.",
          "example": 2
        },
        "unitaryQuantityExplosive": {
          "type": "number",
          "description": "Net explosive content per outer package, expressed in kilograms.",
          "example": 0
        },
        "fillingDegree": {
          "type": "number",
          "description": "Filling degree of the package, expressed as percentage.",
          "example": 100
        },
        "authorizations": {
          "type": "string",
          "description": "Authorizations or special provisions applicable to the transport.",
          "example": "Auth 0001"
        },
        "innerPackageMaterialId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the inner package material from master data."
        },
        "innerPackagesNumber": {
          "type": "integer",
          "description": "Number of inner packages contained in each outer package.",
          "example": 0
        },
        "innerPackageQuantity": {
          "type": "number",
          "description": "Net quantity per inner package.",
          "example": 0
        },
        "innerPackageCapacity": {
          "type": "number",
          "description": "Capacity of each inner package, in litres (for aerosols, the capacity of the dispenser).",
          "example": 0.5
        },
        "innerPackageQuantityExplosive": {
          "type": "number",
          "description": "Net explosive content per inner package, expressed in kilograms.",
          "example": 0
        },
        "radiological": {
          "description": "Radiological data of the product. Only populated for Class 7 (radioactive) products. Includes radionuclide code, activity in Bq, package type, special form flag, fissile flag, category, transport index, certificate reference and physico-chemical description.",
          "$ref": "#/definitions/ProductRadiological"
        },
        "specialFeatures": {
          "description": "Special features of the product for this mode of transport.",
          "$ref": "#/definitions/ProductTransportModeSpecialFeatures"
        },
        "isValid": {
          "type": "boolean",
          "description": "Indicates whether the product passed validation against the regulations. False for a product saved with a correctable error, such as a missing technical name, until it is corrected in the application.",
          "example": true
        }
      }
    },
    "MixedPackingProduct": {
      "description": "Mixed packing product to be saved in the catalogue, with its outer packaging and its contents.",
      "type": "object",
      "required": [
        "accountCode",
        "enabledDangerousGoodsRegulations",
        "reference",
        "outerPackageId",
        "outerPackageHomologationId",
        "contents"
      ],
      "properties": {
        "accountCode": {
          "type": "string",
          "description": "Customer account code identifying the tenant in the system.",
          "example": "CO001"
        },
        "enabledDangerousGoodsRegulations": {
          "minItems": 1,
          "type": "array",
          "description": "Dangerous goods regulations for which the mixed packing product is enabled: Adr, Imdg or Iata. Cfr49 is not available for mixed packings.",
          "items": {
            "$ref": "#/definitions/DangerousGoodsRegulation"
          }
        },
        "reference": {
          "type": "string",
          "minLength": 1,
          "maxLength": 50,
          "description": "Unique reference of the mixed packing product in the catalogue, also used as its product code. It is trimmed of surrounding blanks, must not be blank and must not be in use by any other product of the accounts visible to the user, because the consignment finds the product by this value.",
          "example": "MPREF-0001"
        },
        "productName": {
          "type": "string",
          "maxLength": 150,
          "description": "Commercial name of the mixed packing product. When it is omitted, a name is generated automatically.",
          "example": "MIXPACNAM001"
        },
        "outerPackageId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the outer package type from master data: box, drum, limited quantity box or drum, or excepted quantity box.",
          "example": 5
        },
        "outerPackageHomologationId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the UN homologation code of the outer package from master data. It must belong to the outer package type. With the limited quantity box and the excepted quantity box, which have no homologations of their own, it is one of the homologations of the box (packageId 5), and with the limited quantity drum one of the homologations of the drum (packageId 14); it indicates the material of the outer packaging.",
          "example": 116
        },
        "unitaryGrossQuantity": {
          "type": "number",
          "description": "Gross mass of one outer package, expressed in kilograms. Required when the Imdg regulation is enabled.",
          "example": 12.5
        },
        "contents": {
          "minItems": 2,
          "type": "array",
          "description": "Contents of the mixed packing, at least two, saved in the order of the list.",
          "items": {
            "$ref": "#/definitions/MixedPackingProductTransportModeContent"
          }
        }
      }
    },
    "MixedPackingProductResponse": {
      "description": "Envelope object carrying the mixed packing product data returned by the service under the mixedPackingProductResponse property.",
      "type": "object",
      "properties": {
        "mixedPackingProductResponse": {
          "$ref": "#/definitions/MixedPackingProductResponseData"
        }
      }
    },
    "MixedPackingProductResponseData": {
      "description": "Mixed packing product of the catalogue with its outer packaging and its contents.",
      "type": "object",
      "properties": {
        "accountCode": {
          "type": "string",
          "description": "Customer account code identifying the tenant in the system.",
          "example": "CO001"
        },
        "enabledDangerousGoodsRegulations": {
          "type": "array",
          "description": "Dangerous goods regulations for which the mixed packing product is enabled.",
          "items": {
            "$ref": "#/definitions/DangerousGoodsRegulation"
          }
        },
        "reference": {
          "type": "string",
          "description": "Unique reference of the mixed packing product in the catalogue, also used as its product code.",
          "example": "MPREF-0001"
        },
        "productName": {
          "type": "string",
          "description": "Commercial name of the mixed packing product.",
          "example": "MIXPACNAM001"
        },
        "outerPackageId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the outer package type from master data.",
          "example": 5
        },
        "outerPackageHomologationId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the UN homologation code of the outer package from master data. With the package types for limited and excepted quantities it indicates the material of the outer packaging; of two homologations with the same material, the one with the lowest identifier is returned.",
          "example": 116
        },
        "unitaryGrossQuantity": {
          "type": "number",
          "description": "Gross mass of one outer package, expressed in kilograms.",
          "example": 12.5
        },
        "contents": {
          "type": "array",
          "description": "Contents of the mixed packing, in the order in which they were created.",
          "items": {
            "$ref": "#/definitions/MixedPackingProductTransportModeContentResponse"
          }
        }
      }
    },
    "Participant": {
      "description": "Participant (Shipper, Consignee, Loader ...)",
      "type": "object",
      "required": [
        "accountCode",
        "types",
        "code",
        "name",
        "address",
        "city-town",
        "province-region-state",
        "postalCode",
        "countryCode"
      ],
      "properties": {
        "accountCode": {
          "type": "string",
          "description": "Customer account code identifying the tenant in the system.",
          "example": "CO001"
        },
        "types": {
          "type": "array",
          "description": "List of participant types: Shipper, Loader, Carrier, Consignee, Supplier, Driver, Consolidator, NotifyParty, FreightForwarder or ShippingAgent.",
          "minItems": 1,
          "items": {
            "$ref": "#/definitions/ParticipantType"
          }
        },
        "code": {
          "type": "string",
          "description": "Unique code identifying this participant within the account.",
          "example": "PAR01"
        },
        "name": {
          "type": "string",
          "description": "Legal or commercial name of the participant.",
          "example": "TransOne Inc."
        },
        "address": {
          "type": "string",
          "description": "Postal address of the participant.",
          "example": "Mary Ann St"
        },
        "city-town": {
          "type": "string",
          "description": "City or town of the participant.",
          "example": "Cardiff"
        },
        "province-region-state": {
          "type": "string",
          "description": "Province, region or state of the participant, as free text of up to 50 characters with no fixed format. It cannot be empty when the participant is of type Shipper, Loader, Carrier, Consignee or Supplier; for the other types it may be empty. When the participant has no province, region or state, send a hyphen (-); a dot or a comma are also accepted, and the transport documents and the package marks then leave the value out.",
          "example": "Wales"
        },
        "postalCode": {
          "type": "string",
          "description": "Postal code of the participant address, as free text of up to 50 characters with no fixed format. It cannot be empty when the participant is of type Shipper, Loader, Carrier, Consignee or Supplier; for the other types it may be empty. When the address has no postal code, send a hyphen (-); a dot or a comma are also accepted, and the transport documents and the package marks then leave the value out.",
          "example": "CF10 2EQ"
        },
        "countryCode": {
          "type": "string",
          "description": "ISO 3166-1 alpha-2 code of the country of the participant.",
          "example": "GB",
          "maxLength": 2
        },
        "telephone": {
          "type": "string",
          "description": "Telephone number of the participant.",
          "example": "+44 29 2023 4500"
        },
        "fax": {
          "type": "string",
          "description": "Fax number of the participant.",
          "example": ""
        },
        "contactPerson": {
          "type": "string",
          "description": "Name of the contact person at the participant.",
          "example": ""
        },
        "taxCode": {
          "type": "string",
          "description": "Tax identification code of the participant.",
          "example": ""
        },
        "status": {
          "type": "string",
          "description": "Position or capacity of the contact person within the participant organisation, such as Managing Director or Shipping Manager.",
          "example": "Shipping manager"
        },
        "adrData": {
          "allOf": [
            {
              "$ref": "#/definitions/ParticipantAdrData"
            }
          ],
          "description": "Data of ADR of the participant: the ADR driver training certificate of a participant of type `Driver`. When omitted, the recorded data are kept."
        }
      }
    },
    "ParticipantAdrData": {
      "type": "object",
      "properties": {
        "driverTrainingCertificate": {
          "allOf": [
            {
              "$ref": "#/definitions/AdrDriverTrainingCertificate"
            }
          ],
          "description": "ADR driver training certificate (ADR 8.2.1 and 8.2.2.8) of a participant of type `Driver`. In a request, an `adrData` block without it removes the recorded certificate."
        }
      },
      "description": "Data of ADR of a participant."
    },
    "AdrDriverTrainingCertificate": {
      "required": [
        "certificateNumber",
        "validUntil"
      ],
      "type": "object",
      "properties": {
        "certificateNumber": {
          "type": "string",
          "description": "Number of the certificate.",
          "example": "ES-ADR-118734",
          "maxLength": 50
        },
        "validUntil": {
          "type": "string",
          "description": "Date until which the certificate is valid, in ISO 8601 format, between 1900-01-01 and 2079-06-06 (ADR 8.2.2.8.2).",
          "example": "2029-05-31",
          "format": "date"
        },
        "specializations": {
          "type": "array",
          "description": "Specializations that the certificate includes besides the basic training: `Tanks` (carriage in tanks, ADR 8.2.1.3), `Class1` and `Class7` (ADR 8.2.1.4). Empty or omitted when the certificate covers only the basic training.",
          "example": [
            "Tanks"
          ],
          "items": {
            "type": "string",
            "enum": [
              "Tanks",
              "Class1",
              "Class7"
            ]
          }
        }
      },
      "description": "ADR driver training certificate of a driver (model of ADR 8.2.2.8.5)."
    },
    "ParticipantOnTheFly": {
      "description": "Participant (shipper, consignee, loader and others) that is not predefined in the catalogue and is described on the fly.",
      "type": "object",
      "required": [
        "name",
        "address",
        "city-town",
        "province-region-state",
        "postalCode",
        "countryCode"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "Legal or commercial name of the participant.",
          "example": "TransOne Inc."
        },
        "address": {
          "type": "string",
          "description": "Postal address of the participant.",
          "example": "Mary Ann St"
        },
        "city-town": {
          "type": "string",
          "description": "City or town of the participant.",
          "example": "Cardiff"
        },
        "province-region-state": {
          "type": "string",
          "description": "Province, region or state of the participant, as free text of up to 50 characters with no fixed format. It cannot be empty when the participant is of type Shipper, Loader, Carrier, Consignee or Supplier; for the other types it may be empty. When the participant has no province, region or state, send a hyphen (-); a dot or a comma are also accepted, and the transport documents and the package marks then leave the value out.",
          "example": "Wales"
        },
        "postalCode": {
          "type": "string",
          "description": "Postal code of the participant address, as free text of up to 50 characters with no fixed format. It cannot be empty when the participant is of type Shipper, Loader, Carrier, Consignee or Supplier; for the other types it may be empty. When the address has no postal code, send a hyphen (-); a dot or a comma are also accepted, and the transport documents and the package marks then leave the value out.",
          "example": "CF10 2EQ"
        },
        "countryCode": {
          "type": "string",
          "description": "ISO 3166-1 alpha-2 code of the country of the participant.",
          "example": "GB",
          "maxLength": 2
        },
        "telephone": {
          "type": "string",
          "description": "Telephone number of the participant.",
          "example": "+44 29 2023 4500"
        },
        "fax": {
          "type": "string",
          "description": "Fax number of the participant.",
          "example": ""
        },
        "contactPerson": {
          "type": "string",
          "description": "Name of the contact person at the participant.",
          "example": ""
        },
        "taxCode": {
          "type": "string",
          "description": "Tax identification code of the participant.",
          "example": ""
        },
        "status": {
          "type": "string",
          "description": "Position or capacity of the contact person within the participant organisation, such as Managing Director or Shipping Manager.",
          "example": "Shipping manager"
        }
      }
    },
    "ParticipantResponse": {
      "description": "Envelope object carrying the participant data returned by the service under the participantResponse property.",
      "type": "object",
      "properties": {
        "participantResponse": {
          "$ref": "#/definitions/ParticipantResponseData"
        }
      }
    },
    "ParticipantResponseData": {
      "description": "Participant (shipper, consignee, loader and others) as returned from the catalogue.",
      "type": "object",
      "required": [
        "accountCode",
        "types",
        "code",
        "name",
        "address",
        "city-town",
        "province-region-state",
        "postalCode",
        "countryCode"
      ],
      "properties": {
        "accountCode": {
          "type": "string",
          "description": "Customer account code identifying the tenant in the system.",
          "example": "CO001"
        },
        "types": {
          "type": "array",
          "description": "List of participant types: Shipper, Loader, Carrier, Consignee, Supplier, Driver, Consolidator, NotifyParty, FreightForwarder or ShippingAgent.",
          "minItems": 1,
          "items": {
            "$ref": "#/definitions/ParticipantType"
          }
        },
        "code": {
          "type": "string",
          "description": "Unique code identifying this participant within the account.",
          "example": "PAR01"
        },
        "name": {
          "type": "string",
          "description": "Legal or commercial name of the participant.",
          "example": "TransOne Inc."
        },
        "address": {
          "type": "string",
          "description": "Postal address of the participant.",
          "example": "Mary Ann St"
        },
        "city-town": {
          "type": "string",
          "description": "City or town of the participant.",
          "example": "Cardiff"
        },
        "province-region-state": {
          "type": "string",
          "description": "Province, region or state of the participant. A hyphen (-), a dot or a comma means that the participant has none, and the transport documents and the package marks leave the value out.",
          "example": "Wales"
        },
        "postalCode": {
          "type": "string",
          "description": "Postal code of the participant address. A hyphen (-), a dot or a comma means that the address has none, and the transport documents and the package marks leave the value out.",
          "example": "CF10 2EQ"
        },
        "countryCode": {
          "type": "string",
          "description": "ISO 3166-1 alpha-2 code of the country of the participant.",
          "example": "GB",
          "maxLength": 2
        },
        "telephone": {
          "type": "string",
          "description": "Telephone number of the participant.",
          "example": "+44 29 2023 4500"
        },
        "fax": {
          "type": "string",
          "description": "Fax number of the participant.",
          "example": ""
        },
        "contactPerson": {
          "type": "string",
          "description": "Name of the contact person at the participant.",
          "example": ""
        },
        "taxCode": {
          "type": "string",
          "description": "Tax identification code of the participant.",
          "example": ""
        },
        "status": {
          "description": "Position or capacity of the contact person within the participant organisation, such as Managing Director or Shipping Manager.",
          "type": "string"
        },
        "adrData": {
          "allOf": [
            {
              "$ref": "#/definitions/ParticipantAdrData"
            }
          ],
          "description": "Data of ADR of the participant: the ADR driver training certificate when it is recorded."
        }
      }
    },
    "ConsignmentIataData": {
      "description": "IATA specific data of Consignment",
      "type": "object",
      "required": [
        "signatureNameAndStatusOfDeclarant",
        "signatureDate"
      ],
      "properties": {
        "airWaybillNumber": {
          "type": "string",
          "description": "Air waybill number of the consignment.",
          "example": "WBN001"
        },
        "airportOfDeparture": {
          "type": "string",
          "description": "Airport of departure of the consignment.",
          "example": "Stewart International Airport",
          "maxLength": 250
        },
        "airportOfDestination": {
          "type": "string",
          "description": "Airport of destination of the consignment.",
          "example": "Heathrow",
          "maxLength": 250
        },
        "signatureNameAndStatusOfDeclarant": {
          "type": "string",
          "description": "Name and status of the declarant signing the document.",
          "example": "David Martin - Safety Adviser"
        },
        "signatureDate": {
          "type": "string",
          "description": "Date of the declarant signature, in ISO 8601 format.",
          "format": "date",
          "example": "2020-12-31"
        },
        "signaturePlace": {
          "type": "string",
          "description": "Place where the declarant signature is performed.",
          "example": "New York"
        }
      }
    },
    "ConsignmentImdgData": {
      "description": "IMDG specific data of Consignment",
      "type": "object",
      "required": [
        "signatureCompany",
        "signatureNameAndStatusOfDeclarant",
        "signatureDate",
        "signaturePlace"
      ],
      "properties": {
        "vessel": {
          "type": "string",
          "description": "Identification of the vessel transporting the consignment.",
          "example": "VES003",
          "maxLength": 250
        },
        "portOfDeparture": {
          "type": "string",
          "description": "Port of departure of the consignment.",
          "example": "Houston",
          "maxLength": 250
        },
        "portOfDischarge": {
          "type": "string",
          "description": "Port of discharge of the consignment.",
          "example": "Hamburg",
          "maxLength": 250
        },
        "containerOrVehicleIdentification": {
          "type": "string",
          "description": "Identification of the container or vehicle transporting the consignment.",
          "example": "CONID001",
          "maxLength": 250
        },
        "sealNumber": {
          "type": "string",
          "description": "Identification number of the security seal.",
          "example": "SEALZHN",
          "maxLength": 250
        },
        "sizeAndType": {
          "type": "string",
          "description": "Size and type of the container or vehicle.",
          "example": "",
          "maxLength": 250
        },
        "tareMass": {
          "type": "number",
          "description": "Tare mass of the container or vehicle, in kilograms.",
          "example": 1002.5,
          "minimum": 0,
          "maximum": 999999999
        },
        "totalGrossMass": {
          "type": "number",
          "description": "Total gross mass of the container or vehicle, in kilograms.",
          "example": 1092.5,
          "minimum": 0,
          "maximum": 999999999
        },
        "packingCertificateCompany": {
          "type": "string",
          "description": "Company issuing the container packing certificate.",
          "example": "Cert Comp"
        },
        "packingCertificateNameAndStatusOfDeclarant": {
          "type": "string",
          "description": "Name and status of the declarant of the container packing certificate.",
          "example": "Maria Johnson - Certification Manager"
        },
        "packingCertificateDate": {
          "type": "string",
          "description": "Date of the container packing certificate, in ISO 8601 format, between 1900-01-01 and 2079-06-06.",
          "format": "date",
          "example": "2020-12-31"
        },
        "packingCertificatePlace": {
          "type": "string",
          "description": "Place where the container packing certificate is issued.",
          "example": "Houston"
        },
        "signatureCompany": {
          "type": "string",
          "description": "Company of the declarant signing the transport document.",
          "example": "TransOne Inc."
        },
        "signatureNameAndStatusOfDeclarant": {
          "type": "string",
          "description": "Name and status of the declarant signing the document.",
          "example": "David Martin - Safety Adviser"
        },
        "signatureDate": {
          "type": "string",
          "description": "Date of the declarant signature, in ISO 8601 format.",
          "format": "date",
          "example": "2020-12-31"
        },
        "signaturePlace": {
          "type": "string",
          "description": "Place where the declarant signature is performed.",
          "example": "Houston"
        }
      }
    },
    "ConsignmentDocument": {
      "description": "Document generation request specifying types, output format and optional rendering settings.",
      "type": "object",
      "required": [
        "documentTypes",
        "documentFormat"
      ],
      "properties": {
        "documentTypes": {
          "type": "array",
          "description": "List of document types to be generated.",
          "minItems": 1,
          "items": {
            "$ref": "#/definitions/DocumentType"
          }
        },
        "documentFormat": {
          "description": "Output file format of the generated document: PDF, XLSX or DOCX.",
          "$ref": "#/definitions/DocumentFormat"
        },
        "documentSettings": {
          "type": "array",
          "description": "Optional rendering settings to customize the generated document.",
          "minItems": 0,
          "items": {
            "$ref": "#/definitions/DocumentSetting"
          }
        }
      }
    },
    "ConsignmentCommonDataResponse": {
      "description": "Consignment Response common data",
      "type": "object",
      "required": [
        "hasDangerousGoods"
      ],
      "properties": {
        "hasDangerousGoods": {
          "type": "boolean",
          "description": "Indicates whether the consignment contains at least one dangerous good.",
          "example": true
        }
      }
    },
    "ConsignmentIataDataResponse": {
      "description": "Consignment Response Iata data",
      "type": "object",
      "required": [
        "shipmentLimitations"
      ],
      "properties": {
        "shipmentLimitations": {
          "description": "Calculated IATA shipment limitation: PAX, CAO or Forbidden.",
          "$ref": "#/definitions/IataShipmentLimitations"
        },
        "isCargoAircraftOnly": {
          "type": "boolean",
          "description": "Aircraft acceptance limitation: true if the shipment is restricted to Cargo Aircraft Only (CAO); false if accepted on both Passenger and Cargo aircraft (PAX). Set at consignment level and consistent with shipmentLimitations (CAO <-> true, PAX <-> false).",
          "example": false
        },
        "isRadioactiveShipment": {
          "type": "boolean",
          "description": "True when the consignment contains radioactive material (Class 7) shown on the DGD. Marks the 'Radioactive' Shipment Type box on the DGD (IATA 10.8.3.7); radioactive consignments are issued in a DGD separate from non-radioactive dangerous goods (IATA 10.8.3.8.2). Radioactive material in excepted packages is not shown on the DGD and does not set this flag.",
          "example": false
        },
        "airWaybillStatements": {
          "description": "Dangerous goods statements to be shown on the air waybill (ICAO Technical Instructions 5;4.2, 3;5.5 and 5;1.2.4.2): Handling Information (box 21) and Nature and Quantity of Goods (box 22). Response only.",
          "$ref": "#/definitions/AirWaybillStatements"
        }
      }
    },
    "AirWaybillStatements": {
      "type": "object",
      "properties": {
        "handlingInformation": {
          "type": "array",
          "description": "Statements for the Handling Information box (box 21): the reference to the attached Shipper's Declaration and, when applicable, Cargo aircraft only.",
          "items": {
            "type": "string"
          },
          "example": [
            "Dangerous goods as per attached Shipper's Declaration"
          ]
        },
        "natureAndQuantityOfGoods": {
          "type": "array",
          "description": "Statements for the Nature and Quantity of Goods box (box 22) for dangerous goods carried without a Shipper's Declaration: excepted quantities, lithium and sodium ion batteries in Section II, radioactive material in excepted packages and dry ice.",
          "items": {
            "type": "string"
          },
          "example": [
            "UN 2910, RADIOACTIVE MATERIAL, EXCEPTED PACKAGE - LIMITED QUANTITY OF MATERIAL, Number of Packages: 1"
          ]
        }
      },
      "description": "Dangerous goods statements to be shown on the air waybill of an air consignment. Response only."
    },
    "ConsignmentItemIataDataResponse": {
      "description": "Consignment Response item Iata data",
      "type": "object",
      "properties": {
        "unOrIdNumber": {
          "type": "string",
          "description": "UN number or identification number assigned to the substance.",
          "example": "UN 1203"
        },
        "properShippingName": {
          "type": "string",
          "description": "Proper shipping name of the substance.",
          "example": "Chemical Kits"
        },
        "classOrDivision": {
          "type": "string",
          "description": "Class or division of the dangerous goods.",
          "example": "9"
        },
        "packingGroup": {
          "type": "string",
          "description": "Packing group of the substance.",
          "example": "II"
        },
        "quantityAndTypeOfPacking": {
          "type": "string",
          "description": "Calculated description of quantity and type of packaging.",
          "example": "1 Fibreboard box x 3kg"
        },
        "packingInstruction": {
          "type": "string",
          "description": "Applicable IATA packing instruction code.",
          "example": "960"
        },
        "authorizations": {
          "type": "string",
          "description": "Authorizations or special provisions applicable to the transport.",
          "example": "Auth 0001"
        },
        "mixedPackingQValue": {
          "type": "number",
          "description": "Calculated Q value used for mixed packing compatibility check.",
          "example": 0.1
        },
        "radiologicalDescription": {
          "type": "string",
          "description": "Class 7 (radioactive material) additional information block (IATA DGR 10.8.3.9): radionuclides, physical-chemical form, activity, category, transport index, certificate, exclusive use and A2 multiple. Populated only for in-scope Class 7 items; empty otherwise.",
          "example": ""
        }
      }
    },
    "ConsignmentItemImdgDataResponse": {
      "description": "Consignment Response item Imdg data",
      "type": "object",
      "properties": {
        "load": {
          "type": "string",
          "description": "Calculated description of the load for the transport document.",
          "example": "UN 1266, PERFUMERY PRODUCTS (Contains denat alcohol) , 3, III, MARINE POLLUTANT . LIMITED QUANTITY Segregation Group: Without Segregation Group  Flash Point (°C): 13 F-E, S-D"
        },
        "quantityAndTypeOfPacking": {
          "type": "string",
          "description": "Calculated description of quantity and type of packaging.",
          "example": "6 Fibreboard boxes with 10 Packagings of glass x 1.065 L"
        },
        "netQuantityText": {
          "type": "string",
          "description": "Calculated descriptive text of the net quantity.",
          "example": "63.9 L 60.72 kg"
        },
        "grossQuantityText": {
          "type": "string",
          "description": "Calculated descriptive text of the gross quantity.",
          "example": "66 kg"
        },
        "radiologicalDescription": {
          "type": "string",
          "description": "Class 7 (radioactive material) additional information block (IMDG 5.4.1.5.7.1): radionuclides, physical-chemical form, activity, category, transport index, certificate, exclusive use and A2 multiple. Populated only for in-scope Class 7 items; empty otherwise.",
          "example": ""
        }
      }
    },
    "ConsignmentItemAdrDataResponse": {
      "description": "Consignment Response item Adr data",
      "type": "object",
      "properties": {
        "load": {
          "type": "string",
          "description": "Calculated description of the load for the transport document.",
          "example": "UN 2735, AMINES, LIQUID, CORROSIVE, N.O.S. (Contains 3-Aminomethyl-3,5, 5-trimethylcyclohexylamin; trimethylhexane-1, 6-diamine) , 8, II, (E)"
        },
        "quantityAndTypeOfPacking": {
          "type": "string",
          "description": "Calculated description of quantity and type of packaging.",
          "example": "1 Fibreboard box"
        },
        "transportCategory": {
          "type": "string",
          "description": "ADR transport category of the load.",
          "example": "2"
        },
        "quantityText": {
          "type": "string",
          "description": "Calculated descriptive text of the net and gross quantities.",
          "example": "Net: 1.59 L Gross: 15.7 kg"
        },
        "tunnelRestrictionCode": {
          "type": "string",
          "description": "ADR tunnel restriction code applicable to the load.",
          "example": "D/E"
        },
        "radiologicalDescription": {
          "type": "string",
          "description": "Class 7 (radioactive material) additional information block (ADR 5.4.1.2.5.1): radionuclides, physical-chemical form, activity, category, transport index, certificate, exclusive use and A2 multiple. Populated only for in-scope Class 7 items; empty otherwise.",
          "example": ""
        }
      }
    },
    "IataShipmentLimitations": {
      "description": "Calculated IATA shipment limitation: PAX, CAO or Forbidden. New values may be added; clients must accept unknown values.",
      "type": "string",
      "enum": [
        "PAX",
        "CAO",
        "Forbidden"
      ]
    },
    "PhysicalState": {
      "description": "Physical state of the substance: Liquid, Solid or Gas. New values may be added; clients must accept unknown values.",
      "type": "string",
      "enum": [
        "Liquid",
        "Solid",
        "Gas"
      ]
    },
    "MeasureUnit": {
      "description": "Measurement unit used for product quantities: Kg for mass or L for volume. New values may be added; clients must accept unknown values.",
      "type": "string",
      "enum": [
        "Kg",
        "L"
      ]
    },
    "PureMixOrSolution": {
      "description": "Indicates whether the substance is pure, a mixture or a solution. New values may be added; clients must accept unknown values.",
      "type": "string",
      "enum": [
        "Pure",
        "Mix",
        "Solution"
      ]
    },
    "TechnicalNames": {
      "type": "object",
      "description": "Technical names in different languages",
      "properties": {
        "englishTechnicalName": {
          "type": "string",
          "description": "Technical name of the substance in English.",
          "example": "XYLENE AND BENZENE"
        },
        "spanishTechnicalName": {
          "type": "string",
          "description": "Technical name of the substance in Spanish.",
          "example": "XILENO Y BENCENO"
        },
        "frenchTechnicalName": {
          "type": "string",
          "description": "Technical name of the substance in French.",
          "example": "XYLÈNE ET BENZÈNE"
        },
        "germanTechnicalName": {
          "type": "string",
          "description": "Technical name of the substance in German.",
          "example": "XYLOL UND BENZOL"
        },
        "portugueseTechnicalName": {
          "type": "string",
          "description": "Technical name of the substance in Portuguese.",
          "example": "XILENO E BENZENO"
        },
        "russianTechnicalName": {
          "type": "string",
          "description": "Technical name of the substance in Russian.",
          "example": "КСИЛОЛ И БЕНЗОЛ"
        },
        "chineseTechnicalName": {
          "type": "string",
          "description": "Technical name of the substance in Chinese.",
          "example": "二甲苯和苯"
        },
        "italianTechnicalName": {
          "type": "string",
          "description": "Technical name of the substance in Italian.",
          "example": "XILENE E BENZENE"
        },
        "dutchTechnicalName": {
          "type": "string",
          "description": "Technical name of the substance in Dutch.",
          "example": "XYLEEN EN BENZEEN"
        },
        "turkishTechnicalName": {
          "type": "string",
          "description": "Technical name of the substance in Turkish.",
          "example": "KSİLEN VE BENZEN"
        },
        "polishTechnicalName": {
          "type": "string",
          "description": "Technical name of the substance in Polish.",
          "example": "KSYLEN I BENZEN"
        },
        "swedishTechnicalName": {
          "type": "string",
          "description": "Technical name of the substance in Swedish.",
          "example": "XYLEN OCH BENSEN"
        },
        "norwegianTechnicalName": {
          "type": "string",
          "description": "Technical name of the substance in Norwegian.",
          "example": "XYLEN OG BENSEN"
        },
        "czechTechnicalName": {
          "type": "string",
          "description": "Technical name of the substance in Czech.",
          "example": "XYLEN A BENZEN"
        },
        "danishTechnicalName": {
          "type": "string",
          "description": "Technical name of the substance in Danish.",
          "example": "XYLEN OG BENZEN"
        },
        "greekTechnicalName": {
          "type": "string",
          "description": "Technical name of the substance in Greek.",
          "example": "ΞΥΛΟΛΙΟ ΚΑΙ ΒΕΝΖΟΛΙΟ"
        },
        "hungarianTechnicalName": {
          "type": "string",
          "description": "Technical name of the substance in Hungarian.",
          "example": "XILOL ÉS BENZOL"
        },
        "slovakTechnicalName": {
          "type": "string",
          "description": "Technical name of the substance in Slovak.",
          "example": "XYLÉN A BENZÉN"
        },
        "romanianTechnicalName": {
          "type": "string",
          "description": "Technical name of the substance in Romanian.",
          "example": "XILEN ȘI BENZEN"
        },
        "finnishTechnicalName": {
          "type": "string",
          "description": "Technical name of the substance in Finnish.",
          "example": "KSYLEENI JA BENTSEENI"
        }
      }
    },
    "ProductTransportModeSpecialFeatures": {
      "description": "Special features of a product for a mode of transport, such as extra viscous or salvage packaging. New values may be added; clients must accept unknown values.",
      "type": "string",
      "enum": [
        "IsExtraViscousAccordingAdr",
        "IsExtraViscousAccordingImdg",
        "IsSalvagePackage"
      ]
    },
    "DocumentType": {
      "description": "Type of document to be generated for the consignment. AirWaybillData (air consignments only) is the air waybill data sheet with the dangerous goods statements to be shown on the air waybill (ICAO Technical Instructions 5;4.2, 3;5.5 and 5;1.2.4.2). New values may be added; clients must accept unknown values.",
      "type": "string",
      "enum": [
        "TransportDocument",
        "CheckList",
        "PackageMarking",
        "PackageMarkingSmallCustomSize",
        "AirWaybillData"
      ]
    },
    "DocumentSetting": {
      "description": "Optional rendering setting affecting the generated document. New values may be added; clients must accept unknown values.",
      "type": "string",
      "enum": [
        "HideRedStripesForIATATransportDocument",
        "ShowBlueStripesForIMDGTransportDocument",
        "EnglishCheckList",
        "SpanishCheckList",
        "FrenchCheckList",
        "GermanCheckList",
        "PortugueseCheckList",
        "RussianCheckList",
        "ChineseCheckList",
        "ItalianCheckList",
        "DutchCheckList",
        "TurkishCheckList",
        "PolishCheckList",
        "SwedishCheckList",
        "NorwegianCheckList",
        "CzechCheckList",
        "DanishCheckList",
        "GreekCheckList",
        "HungarianCheckList",
        "SlovakCheckList",
        "RomanianCheckList",
        "FinnishCheckList"
      ]
    },
    "ConsignmentType": {
      "description": "Type of consignment by load configuration: PackagesAndReceptacles, Tank or Bulk. New values may be added; clients must accept unknown values.",
      "type": "string",
      "enum": [
        "PackagesAndReceptacles",
        "Tank",
        "Bulk"
      ]
    },
    "ConsignmentItemType": {
      "description": "Type of consignment item: SimpleProduct, MixedPackingProduct or Overpack. New values may be added; clients must accept unknown values.",
      "type": "string",
      "enum": [
        "SimpleProduct",
        "MixedPackingProduct",
        "Overpack"
      ]
    },
    "DocumentFormat": {
      "description": "Output file format of the generated document: PDF, XLSX or DOCX. New values may be added; clients must accept unknown values.",
      "type": "string",
      "enum": [
        "PDF",
        "XLSX",
        "DOCX"
      ]
    },
    "DangerousGoodsRegulation": {
      "description": "Dangerous goods regulation applicable to the consignment: Adr, Imdg, Iata or Cfr49. New values may be added; clients must accept unknown values.",
      "type": "string",
      "enum": [
        "Adr",
        "Imdg",
        "Iata",
        "Cfr49"
      ]
    },
    "ParticipantType": {
      "description": "Functional role of a participant in the consignment chain. A participant may hold several types at once; every type, Driver included, can be read, updated and deleted by code. When Consignee and Supplier are both given, Supplier is discarded: the Consignee type already covers the supplier role. Consolidator, NotifyParty, FreightForwarder and ShippingAgent are the roles of the parties of a master consignment. New values may be added; clients must accept unknown values.",
      "type": "string",
      "enum": [
        "Shipper",
        "Loader",
        "Carrier",
        "Consignee",
        "Supplier",
        "Driver",
        "Consolidator",
        "NotifyParty",
        "FreightForwarder",
        "ShippingAgent"
      ]
    },
    "ConsignmentDocumentSendingByEmail": {
      "description": "Document generation and email delivery request, combining document specification with recipient addresses.",
      "allOf": [
        {
          "$ref": "#/definitions/ConsignmentDocument"
        },
        {
          "$ref": "#/definitions/EmailAddresses"
        }
      ]
    },
    "EmailAddresses": {
      "description": "Email recipient addresses for the document delivery, including To, CC and BCC.",
      "type": "object",
      "required": [
        "emailTo"
      ],
      "properties": {
        "emailTo": {
          "type": "string",
          "description": "Primary email recipient address.",
          "example": "dgmailbox@massivedynamics.com"
        },
        "emailCC": {
          "type": "string",
          "description": "Email recipients to receive a carbon copy.",
          "example": "dgmailboxcc@massivedynamics.com"
        },
        "emailBCC": {
          "type": "string",
          "description": "Email recipients to receive a blind carbon copy.",
          "example": "dgmailboxbcc@massivedynamics.com"
        }
      }
    },
    "ApiResponseOK": {
      "description": "Standard success response envelope with status code, message and request tracing identifier.",
      "type": "object",
      "properties": {
        "success": {
          "type": "boolean",
          "description": "Indicates whether the operation completed successfully.",
          "example": true
        },
        "httpStatusCode": {
          "type": "integer",
          "description": "HTTP status code returned by the operation.",
          "format": "int32",
          "example": 200
        },
        "message": {
          "type": "string",
          "description": "Human-readable message describing the operation result.",
          "example": "Operation Completed OK"
        },
        "messageType": {
          "type": "string",
          "description": "Severity classification of the message.",
          "enum": [
            "Information",
            "Warning"
          ]
        },
        "requestGuid": {
          "type": "string",
          "description": "Unique identifier of the request, returned for tracing purposes.",
          "example": "F8AEC2D1-9515-4013-AA46-10405EB688A2"
        },
        "warnings": {
          "description": "Every warning found while processing the request, in detection order, each one with its stable code. A warning does not prevent the operation. Omitted when there is no warning.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ApiIssue"
          }
        }
      }
    },
    "ApiResponseAddItemOK": {
      "description": "Success response envelope returned when a new item has been created on the server.",
      "type": "object",
      "properties": {
        "success": {
          "type": "boolean",
          "description": "Indicates whether the item creation completed successfully.",
          "example": true
        },
        "httpStatusCode": {
          "type": "integer",
          "description": "HTTP status code returned by the operation.",
          "format": "int32",
          "example": 201
        },
        "message": {
          "type": "string",
          "description": "Human-readable message describing the item creation result.",
          "example": "Item Created OK"
        },
        "messageType": {
          "type": "string",
          "description": "Severity classification of the message.",
          "enum": [
            "Information",
            "Warning"
          ]
        },
        "requestGuid": {
          "type": "string",
          "description": "Unique identifier of the request, returned for tracing purposes.",
          "example": "F8AEC2D1-9515-4013-AA46-10405EB688A2"
        },
        "warnings": {
          "description": "Every warning found while processing the request, in detection order, each one with its stable code. A warning does not prevent the operation. Omitted when there is no warning.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ApiIssue"
          }
        }
      }
    },
    "AddItemResponseOK": {
      "description": "Composite success response combining new item identifier with the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/AddedItemId"
        },
        {
          "$ref": "#/definitions/ApiResponseAddItemOK"
        }
      ]
    },
    "AddedItemId": {
      "description": "Integer identifier of the added item",
      "type": "object",
      "properties": {
        "newItemId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier assigned to the newly created item.",
          "example": 23
        },
        "newItemIsValid": {
          "type": "boolean",
          "description": "Indicates whether the newly created item passed regulatory validation.",
          "example": true
        }
      }
    },
    "ValidatedItemResponseOK": {
      "description": "Composite success response for validation-only requests, combining the validation verdict with the standard success envelope. No item is created.",
      "allOf": [
        {
          "$ref": "#/definitions/ValidatedItemResult"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "DetailedDangerousGoodVersion": {
      "type": "object",
      "properties": {
        "catalogueVersion": {
          "type": "string",
          "description": "Version of the detailed dangerous goods list for the filters of the request: the same value as the ETag header of getDetailedDangerousGoods with the same filters. It changes when the published content of the list changes.",
          "example": "W/\"ddg-v2026.18.11-3f9a1c07be52-1-30-1-all\"",
          "x-nullable": true
        }
      },
      "description": "Version of the detailed dangerous goods list.",
      "required": [
        "catalogueVersion"
      ]
    },
    "DetailedDangerousGoodVersionResponse": {
      "description": "Envelope object carrying the version of the detailed dangerous goods list under the detailedDangerousGoodVersionResponse property.",
      "type": "object",
      "properties": {
        "detailedDangerousGoodVersionResponse": {
          "$ref": "#/definitions/DetailedDangerousGoodVersion"
        }
      }
    },
    "DetailedDangerousGoodVersionResponseOK": {
      "description": "Composite response combining the version of the detailed dangerous goods list with the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/DetailedDangerousGoodVersionResponse"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "ValidatedItemResult": {
      "description": "Validation verdict returned by the validation-only service",
      "type": "object",
      "properties": {
        "newItemId": {
          "type": "integer",
          "format": "int64",
          "x-nullable": true,
          "description": "Always null: the validation service does not create any item."
        },
        "newItemIsValid": {
          "type": "boolean",
          "description": "Indicates whether the product passed the complete regulatory validation.",
          "example": true
        }
      }
    },
    "ConsignmentResponseOK": {
      "description": "Composite response combining consignment data with the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/ConsignmentResponse"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "SimpleProductResponseOK": {
      "description": "Composite response combining simple product data with the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/SimpleProductResponse"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "MixedPackingProductResponseOK": {
      "description": "Composite response combining mixed packing product data with the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/MixedPackingProductResponse"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "ParticipantResponseOK": {
      "description": "Composite response combining participant data with the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/ParticipantResponse"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "Base64EncodedFileResponseOK": {
      "description": "Composite response combining the encoded document file with the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/Base64EncodedFileResponse"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "Base64EncodedFileResponse": {
      "description": "Container for the base 64 encoded file returned by document generation operations.",
      "type": "object",
      "properties": {
        "base64EncodedFile": {
          "description": "Base 64 encoded representation of the generated document.",
          "$ref": "#/definitions/Base64EncodedFile"
        }
      }
    },
    "Base64EncodedFile": {
      "description": "File encoded using Base 64",
      "type": "object",
      "properties": {
        "base64EncodedContent": {
          "type": "string",
          "description": "File content encoded in Base 64.",
          "example": "SGVsbG8="
        },
        "contentType": {
          "type": "string",
          "description": "MIME content type of the encoded file.",
          "example": "text/plain"
        }
      }
    },
    "SimpleDangerousGoodsResponseOK": {
      "description": "Composite response combining the simplified dangerous goods master data with the paging data, returned only when a page is requested, and the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/SimpleDangerousGoodsResponse"
        },
        {
          "$ref": "#/definitions/PagedResult"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "SimpleDangerousGoodsResponse": {
      "description": "Container for the master data list of dangerous goods.",
      "type": "object",
      "properties": {
        "simpleDangerousGoods": {
          "description": "Simplified master data entries of dangerous goods.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/SimpleDangerousGood"
          }
        }
      }
    },
    "SimpleDangerousGood": {
      "description": "Master data entry of a dangerous good, with UN number, name and regulatory status.",
      "type": "object",
      "properties": {
        "dangerousGoodId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the dangerous good entry in master data.",
          "example": 588
        },
        "unNumber": {
          "type": "string",
          "description": "Four digits of the identification number, without prefix; use `identificationNumber`, which states whether it is a UN or an ID number.",
          "example": "1203"
        },
        "identificationNumber": {
          "type": "string",
          "description": "Identification number with its prefix: UN for UN numbers, NA for North American numbers (49 CFR only) and ID for ID 8000. Four digits, without spaces.",
          "example": "UN1203",
          "maxLength": 6,
          "pattern": "^(UN|NA|ID)[0-9]{4}$"
        },
        "name": {
          "type": "string",
          "description": "Proper shipping name of the substance.",
          "example": "MOTOR SPIRIT"
        },
        "packingGroup": {
          "type": "string",
          "description": "Packing group of the substance.",
          "example": "II"
        },
        "classificationCode": {
          "type": "string",
          "description": "Classification code of the substance.",
          "example": "F1 (class 3)"
        },
        "labels": {
          "type": "string",
          "description": "Hazard labels applicable to the substance.",
          "example": "3"
        },
        "statusIATA": {
          "type": "string",
          "description": "IATA regulatory status of the substance.",
          "example": "Subject"
        },
        "statusIMDG": {
          "type": "string",
          "description": "IMDG regulatory status of the substance.",
          "example": "Subject"
        },
        "statusADR": {
          "type": "string",
          "description": "ADR regulatory status of the substance.",
          "example": "Subject"
        }
      }
    },
    "DetailedDangerousGoodsResponseOK": {
      "description": "Composite response combining the detailed dangerous goods list with the paging data, returned only when a page is requested, and the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/DetailedDangerousGoodsResponse"
        },
        {
          "$ref": "#/definitions/PagedResult"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "DetailedDangerousGoodsResponse": {
      "type": "object",
      "properties": {
        "detailedDangerousGoods": {
          "type": "array",
          "description": "Detailed dangerous goods list entries.",
          "items": {
            "$ref": "#/definitions/DetailedDangerousGood"
          }
        }
      }
    },
    "DetailedDangerousGood": {
      "type": "object",
      "properties": {
        "dangerousGoodId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the dangerous good entry in master data.",
          "example": 613
        },
        "unNumber": {
          "type": "string",
          "description": "Four digits of the identification number, without prefix; use `identificationNumber`, which states whether it is a UN or an ID number.",
          "example": "1219"
        },
        "identificationNumber": {
          "type": "string",
          "description": "Identification number with its prefix: UN for UN numbers, NA for North American numbers (49 CFR only) and ID for ID 8000. Four digits, without spaces.",
          "example": "UN1219",
          "maxLength": 6,
          "pattern": "^(UN|NA|ID)[0-9]{4}$"
        },
        "name": {
          "type": "string",
          "description": "Name of the substance or article in the language of the account.",
          "example": "ISOPROPANOL"
        },
        "class": {
          "type": "string",
          "description": "Class or division of the substance or article.",
          "example": "3"
        },
        "classificationCode": {
          "type": "string",
          "description": "Classification code of the substance or article.",
          "example": "F1 (class 3)"
        },
        "packingGroup": {
          "type": "string",
          "description": "Packing group of the substance or article.",
          "example": "II"
        },
        "labels": {
          "type": "array",
          "description": "Hazard labels applicable to the substance or article.",
          "items": {
            "type": "string"
          },
          "example": [
            "3"
          ]
        },
        "statusADR": {
          "type": "string",
          "description": "ADR regulatory status of the substance or article.",
          "example": "Subject"
        },
        "statusIMDG": {
          "type": "string",
          "description": "IMDG regulatory status of the substance or article.",
          "example": "Subject"
        },
        "statusIATA": {
          "type": "string",
          "description": "IATA regulatory status of the substance or article.",
          "example": "Subject"
        },
        "statusCFR49": {
          "type": "string",
          "description": "49 CFR regulatory status of the substance or article.",
          "example": "Subject"
        },
        "adrData": {
          "description": "Row of Table A of Chapter 3.2 of ADR. Present only when the user holds the ApiUserDangerousGoodsADR role.",
          "$ref": "#/definitions/DetailedDangerousGoodAdrData"
        },
        "imdgData": {
          "description": "Row of the Dangerous Goods List of Chapter 3.2 of the IMDG Code. Present only when the user holds the ApiUserDangerousGoodsIMDG role.",
          "$ref": "#/definitions/DetailedDangerousGoodImdgData"
        },
        "iataData": {
          "description": "Row of Table 4.2 of the IATA Dangerous Goods Regulations. Present only when the user holds the ApiUserDangerousGoodsIATA role.",
          "$ref": "#/definitions/DetailedDangerousGoodIataData"
        }
      }
    },
    "DetailedDangerousGoodAdrData": {
      "type": "object",
      "description": "Columns of Table A of Chapter 3.2 of ADR.",
      "properties": {
        "properShippingName": {
          "type": "string",
          "description": "Column 2. Proper shipping name under ADR.",
          "example": "ISOPROPANOL"
        },
        "specialProvisions": {
          "type": "array",
          "description": "Column 6. Special provisions assigned to this entry in Table A of ADR; only the provisions of this regulation are listed, sorted by number.",
          "items": {
            "type": "string"
          },
          "example": [
            "601"
          ]
        },
        "limitedQuantity": {
          "$ref": "#/definitions/DetailedDangerousGoodLimitedQuantity"
        },
        "exceptedQuantity": {
          "$ref": "#/definitions/DetailedDangerousGoodExceptedQuantity"
        },
        "packingInstructions": {
          "type": "array",
          "description": "Column 8. Packing instructions, by name only.",
          "items": {
            "type": "string"
          },
          "example": [
            "P001",
            "R001"
          ]
        },
        "packingProvisions": {
          "type": "array",
          "description": "Column 9a. Special packing provisions.",
          "items": {
            "type": "string"
          },
          "example": [
            "PP1"
          ]
        },
        "mixedPackingProvisions": {
          "type": "array",
          "description": "Column 9b. Mixed packing provisions.",
          "items": {
            "type": "string"
          },
          "example": [
            "MP19"
          ]
        },
        "portableTankInstructions": {
          "type": "array",
          "description": "Column 10. Portable tank and bulk container instructions.",
          "items": {
            "type": "string"
          },
          "example": [
            "T4"
          ]
        },
        "portableTankProvisions": {
          "type": "array",
          "description": "Column 11. Portable tank and bulk container special provisions.",
          "items": {
            "type": "string"
          },
          "example": [
            "TP1"
          ]
        },
        "tankCodes": {
          "type": "array",
          "description": "Column 12. ADR tank code.",
          "items": {
            "type": "string"
          },
          "example": [
            "LGBF"
          ]
        },
        "tankProvisions": {
          "type": "array",
          "description": "Column 13. Special provisions for ADR tanks.",
          "items": {
            "type": "string"
          },
          "example": [
            "TU1"
          ]
        },
        "vehicleForTankCarriage": {
          "type": "string",
          "description": "Column 14. Vehicle for tank carriage.",
          "example": "FL"
        },
        "transportCategory": {
          "$ref": "#/definitions/DetailedDangerousGoodTransportCategory"
        },
        "tunnelRestrictionCode": {
          "type": "string",
          "description": "Column 15. Tunnel restriction code.",
          "example": "D/E"
        },
        "carriageProvisionsPackages": {
          "type": "array",
          "description": "Column 16. Special provisions for carriage of packages.",
          "items": {
            "type": "string"
          },
          "example": [
            "V1"
          ]
        },
        "carriageProvisionsBulk": {
          "type": "array",
          "description": "Column 17. Special provisions for carriage in bulk.",
          "items": {
            "type": "string"
          },
          "example": [
            "VC1"
          ]
        },
        "carriageProvisionsHandling": {
          "type": "array",
          "description": "Column 18. Special provisions for loading and unloading.",
          "items": {
            "type": "string"
          },
          "example": [
            "CV13"
          ]
        },
        "carriageProvisionsOperation": {
          "type": "array",
          "description": "Column 19. Special provisions concerning operation.",
          "items": {
            "type": "string"
          },
          "example": [
            "S2",
            "S20"
          ]
        },
        "hazardIdentificationNumber": {
          "type": "string",
          "description": "Column 20. Hazard identification number.",
          "example": "33"
        }
      }
    },
    "DetailedDangerousGoodImdgData": {
      "type": "object",
      "description": "Columns of the Dangerous Goods List of Chapter 3.2 of the IMDG Code.",
      "properties": {
        "properShippingName": {
          "type": "string",
          "description": "Column 2. Proper shipping name under the IMDG Code.",
          "example": "ISOPROPANOL"
        },
        "specialProvisions": {
          "type": "array",
          "description": "Column 6. Special provisions assigned to this entry in the Dangerous Goods List of the IMDG Code; only the provisions of this regulation are listed, sorted by number.",
          "items": {
            "type": "string"
          },
          "example": [
            "601"
          ]
        },
        "limitedQuantity": {
          "$ref": "#/definitions/DetailedDangerousGoodLimitedQuantity"
        },
        "exceptedQuantity": {
          "$ref": "#/definitions/DetailedDangerousGoodExceptedQuantity"
        },
        "packingInstructions": {
          "type": "array",
          "description": "Column 8. Packing instructions, by name only.",
          "items": {
            "type": "string"
          },
          "example": [
            "P001",
            "R001"
          ]
        },
        "packingProvisions": {
          "type": "array",
          "description": "Column 9. Special packing provisions.",
          "items": {
            "type": "string"
          },
          "example": [
            "PP1"
          ]
        },
        "ibcInstructions": {
          "type": "array",
          "description": "Column 10. Instructions for intermediate bulk containers, by name only.",
          "items": {
            "type": "string"
          },
          "example": [
            "IBC02"
          ]
        },
        "ibcProvisions": {
          "type": "array",
          "description": "Column 11. Special provisions for intermediate bulk containers.",
          "items": {
            "type": "string"
          },
          "example": [
            "B1"
          ]
        },
        "portableTankInstructions": {
          "type": "array",
          "description": "Column 13. Portable tank and bulk container instructions.",
          "items": {
            "type": "string"
          },
          "example": [
            "T4"
          ]
        },
        "portableTankProvisions": {
          "type": "array",
          "description": "Column 14. Portable tank and bulk container special provisions.",
          "items": {
            "type": "string"
          },
          "example": [
            "TP1"
          ]
        },
        "isMarinePollutant": {
          "type": "boolean",
          "description": "Column 4. Indicates whether the substance is a marine pollutant."
        },
        "emergencyScheduleFire": {
          "type": "string",
          "description": "Column 15. Emergency schedule for fire.",
          "example": "F-E"
        },
        "emergencyScheduleSpillage": {
          "type": "string",
          "description": "Column 15. Emergency schedule for spillage.",
          "example": "S-D"
        },
        "stowageCategory": {
          "type": "string",
          "description": "Column 16a. Stowage category.",
          "example": "B"
        },
        "stowageProvisions": {
          "type": "array",
          "description": "Column 16a. Stowage special provisions.",
          "items": {
            "type": "string"
          },
          "example": [
            "SW1"
          ]
        },
        "handlingProvisions": {
          "type": "array",
          "description": "Column 16a. Handling special provisions.",
          "items": {
            "type": "string"
          },
          "example": [
            "H1"
          ]
        },
        "segregationProvisions": {
          "type": "array",
          "description": "Column 16b. Segregation special provisions.",
          "items": {
            "type": "string"
          },
          "example": [
            "SG35"
          ]
        },
        "segregationGroups": {
          "type": "array",
          "description": "Column 16b. Segregation groups to which the substance belongs.",
          "items": {
            "type": "string"
          },
          "example": [
            "Acids"
          ]
        },
        "referenceFlashPoint": {
          "$ref": "#/definitions/DetailedDangerousGoodFlashPoint"
        }
      }
    },
    "DetailedDangerousGoodIataData": {
      "type": "object",
      "description": "Columns of Table 4.2 of the IATA Dangerous Goods Regulations.",
      "properties": {
        "properShippingName": {
          "type": "string",
          "description": "Column B. Proper shipping name under the IATA Dangerous Goods Regulations.",
          "example": "ISOPROPANOL"
        },
        "specialProvisions": {
          "type": "array",
          "description": "Column M. Special provisions assigned to this entry in Table 4.2 of the IATA Dangerous Goods Regulations, sorted by number (A1, A2, A20, A130).",
          "items": {
            "type": "string"
          },
          "example": [
            "A180"
          ]
        },
        "exceptedQuantity": {
          "$ref": "#/definitions/DetailedDangerousGoodExceptedQuantity"
        },
        "limitedQuantityPackingInstructions": {
          "type": "array",
          "description": "Columns G and H. Limited quantity packing instructions of the Y series, with their maximum net quantity per package.",
          "items": {
            "$ref": "#/definitions/DetailedDangerousGoodIataPackingInstruction"
          }
        },
        "passengerPackingInstructions": {
          "type": "array",
          "description": "Columns I and J. Packing instructions for passenger and cargo aircraft, with their maximum net quantity per package.",
          "items": {
            "$ref": "#/definitions/DetailedDangerousGoodIataPackingInstruction"
          }
        },
        "cargoPackingInstructions": {
          "type": "array",
          "description": "Columns K and L. Packing instructions for cargo aircraft only, with their maximum net quantity per package.",
          "items": {
            "$ref": "#/definitions/DetailedDangerousGoodIataPackingInstruction"
          }
        },
        "emergencyResponseGuideCode": {
          "type": "string",
          "description": "Column N. Emergency response guide code.",
          "example": "3L"
        },
        "stateVariations": {
          "type": "array",
          "description": "State variations applicable to the substance or article.",
          "items": {
            "type": "string"
          },
          "example": [
            "AEG-01"
          ]
        }
      }
    },
    "DetailedDangerousGoodFlashPoint": {
      "type": "object",
      "description": "Reference flash-point of the substance, in degrees Celsius, as given in the Dangerous Goods List of the IMDG Code. Only the entries of well defined substances carry it; generic and N.O.S. entries, whose flash-point depends on their composition, do not. When the entry covers several substances, such as isomers, the range covers all of them. The value is for information only and does not replace the flash-point of the actual product.",
      "properties": {
        "minimum": {
          "type": "number",
          "description": "Lowest value of the reference flash-point, in degrees Celsius. Absent when the IMDG Code only gives an upper limit, such as below -18 °C.",
          "example": -20
        },
        "maximum": {
          "type": "number",
          "description": "Highest value of the reference flash-point, in degrees Celsius. Absent when the IMDG Code only gives a lower limit, such as 23 °C or above. Equal to `minimum` when the IMDG Code gives a single value.",
          "example": -18
        },
        "testMethod": {
          "allOf": [
            {
              "$ref": "#/definitions/FlashPointTestMethod"
            }
          ],
          "description": "Test method of the reference flash-point. Absent when the IMDG Code does not state it."
        }
      }
    },
    "FlashPointTestMethod": {
      "type": "string",
      "enum": [
        "ClosedCup",
        "OpenCup"
      ],
      "description": "Test method of a flash-point. `ClosedCup`: closed-cup test. `OpenCup`: open-cup test, whose value is usually some degrees higher than the closed-cup value of the same substance and is not directly comparable with it. New values may be added; clients must accept unknown values."
    },
    "DetailedDangerousGoodLimitedQuantity": {
      "type": "object",
      "description": "Limited quantity of the entry (column 7a of Table A of ADR and of the Dangerous Goods List of the IMDG Code): the code as published by the table and, separately, the maximum quantity per inner packaging with its measure unit. For LQ0 maxQuantity is 0 and no unit is reported. When the table gives the unit by physical state (kg for solids, l for liquids) the unit is resolved from the physical state of the entry; when it cannot be deduced, measureUnit carries the dual text of the table.",
      "properties": {
        "code": {
          "type": "string",
          "description": "Code published by the table.",
          "example": "1 l"
        },
        "maxQuantity": {
          "type": "number",
          "description": "Maximum quantity per inner packaging.",
          "example": 1
        },
        "measureUnit": {
          "type": "string",
          "description": "Measure unit of the maximum quantity: l or kg.",
          "example": "l"
        }
      }
    },
    "DetailedDangerousGoodExceptedQuantity": {
      "type": "object",
      "description": "Excepted quantity of the entry (column 7b of ADR and of the IMDG Code, column F of Table 4.2 of the IATA Dangerous Goods Regulations): the E code and, separately, the maximum quantity per inner packaging and per outer packaging with their measure unit, g for solids and ml for liquids and gases (3.5.1.2). For E0 both quantities are 0 and no unit is reported; when the physical state cannot be deduced, measureUnit is g/ml.",
      "properties": {
        "code": {
          "type": "string",
          "description": "Code published by the table.",
          "example": "E2"
        },
        "maxInnerQuantity": {
          "type": "number",
          "description": "Maximum quantity per inner packaging.",
          "example": 30
        },
        "maxOuterQuantity": {
          "type": "number",
          "description": "Maximum quantity per outer packaging.",
          "example": 500
        },
        "measureUnit": {
          "type": "string",
          "description": "Measure unit of both quantities: g or ml.",
          "example": "ml"
        }
      }
    },
    "DetailedDangerousGoodTransportCategory": {
      "type": "object",
      "description": "Transport category of the entry (column 15 of Table A of ADR) and the maximum total quantity per transport unit of ADR 1.1.3.6, separated from its unit: kg NEM for Class 1, l for Class 2, liquids and gases, kg for solids; kg/l when the physical state cannot be deduced. Category 4 has no limit: quantity and unit are omitted.",
      "properties": {
        "code": {
          "type": "string",
          "description": "Code published by the catalogue.",
          "example": "2-333"
        },
        "category": {
          "type": "integer",
          "description": "Transport category, from 0 to 4.",
          "example": 2
        },
        "maxTotalQuantityPerTransportUnit": {
          "type": "number",
          "description": "Maximum total quantity per transport unit.",
          "example": 333
        },
        "measureUnit": {
          "type": "string",
          "description": "Measure unit of the maximum total quantity.",
          "example": "l"
        }
      }
    },
    "DetailedDangerousGoodIataPackingInstruction": {
      "type": "object",
      "description": "Packing instruction of Table 4.2, reported by name, with the maximum quantity per package published in the adjacent column of the table. The details of the packing instruction are not included.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the packing instruction.",
          "example": "Y341"
        },
        "maxQuantity": {
          "type": "number",
          "description": "Maximum quantity per package.",
          "example": 1
        },
        "measureUnit": {
          "type": "string",
          "description": "Measure unit of the maximum quantity.",
          "example": "L"
        },
        "isGrossWeight": {
          "type": "boolean",
          "description": "Indicates whether the maximum quantity is expressed as gross mass."
        }
      }
    },
    "PackagesResponseOK": {
      "description": "Composite response combining the package master data with the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/PackagesResponse"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "PackagesResponse": {
      "description": "Container for the master data list of outer package types.",
      "type": "object",
      "properties": {
        "packages": {
          "description": "List of outer package type master data entries.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Package"
          }
        }
      }
    },
    "Package": {
      "description": "Master data entry of an outer package type.",
      "type": "object",
      "properties": {
        "packageId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the package type.",
          "example": 18
        },
        "name": {
          "type": "string",
          "description": "Descriptive name of the package type.",
          "example": "Box"
        }
      }
    },
    "PackageHomologationsResponseOK": {
      "description": "Composite response combining package homologations master data with the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/PackageHomologationsResponse"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "PackageHomologationsResponse": {
      "description": "Container for the master data list of package UN homologation codes.",
      "type": "object",
      "properties": {
        "packageHomologations": {
          "description": "List of package UN homologation master data entries.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/PackageHomologation"
          }
        }
      }
    },
    "PackageHomologation": {
      "description": "Master data entry of a UN homologation code applicable to a package type.",
      "type": "object",
      "properties": {
        "packageHomologationId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the package homologation entry.",
          "example": 116
        },
        "name": {
          "type": "string",
          "description": "Descriptive name of the homologated package.",
          "example": "Fibreboard box"
        },
        "code": {
          "type": "string",
          "description": "UN homologation code of the package.",
          "example": "4G"
        },
        "packageId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the related package type. The package types for limited and excepted quantities have no homologations of their own: their material is one of the homologations of the box (packageId 5) or of the drum (packageId 14).",
          "example": 5
        }
      }
    },
    "InnerPackageMaterialsResponseOK": {
      "description": "Composite response combining inner package materials master data with the success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/InnerPackageMaterialsResponse"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "InnerPackageMaterialsResponse": {
      "description": "Container for the master data list of inner package materials.",
      "type": "object",
      "properties": {
        "innerPackageMaterials": {
          "description": "List of inner package material master data entries.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/InnerPackageMaterial"
          }
        }
      }
    },
    "InnerPackageMaterial": {
      "description": "Master data entry of a material available for inner packages.",
      "type": "object",
      "properties": {
        "innerPackageMaterialId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the inner package material.",
          "example": 3
        },
        "name": {
          "type": "string",
          "description": "Descriptive name of the inner package material.",
          "example": "Plastic"
        }
      }
    },
    "PackingInstructionsResponseOK": {
      "description": "Composite response combining IATA packing instructions master data with the success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/PackingInstructionsResponse"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "PackingInstructionsResponse": {
      "description": "Container for the master data list of IATA packing instructions.",
      "type": "object",
      "properties": {
        "packingInstructions": {
          "description": "List of IATA packing instruction master data entries.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/PackingInstruction"
          }
        }
      }
    },
    "PackingInstruction": {
      "description": "Master data entry of an IATA packing instruction code.",
      "type": "object",
      "properties": {
        "packingInstructionId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the packing instruction.",
          "example": 1024
        },
        "name": {
          "type": "string",
          "description": "Code of the packing instruction.",
          "example": "962"
        }
      }
    },
    "RadionuclidesResponseOK": {
      "description": "Composite response combining the radionuclides master data with the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/RadionuclidesResponse"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "RadionuclidesResponse": {
      "description": "Container for the master data list of radionuclides.",
      "type": "object",
      "properties": {
        "radionuclides": {
          "description": "List of radionuclide master data entries.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Radionuclide"
          }
        }
      }
    },
    "Radionuclide": {
      "description": "Master data entry of a radionuclide used for Class 7 (radioactive material) products and consignments.",
      "type": "object",
      "properties": {
        "radionuclideId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the radionuclide.",
          "example": 7
        },
        "code": {
          "type": "string",
          "description": "Standard code of the radionuclide as referenced in ADR Table 2.2.7.2.2.1.",
          "example": "Co-60"
        },
        "name": {
          "type": "string",
          "description": "Localized name of the radionuclide in the language of the authenticated user.",
          "example": "Cobalt-60"
        }
      }
    },
    "ImdgSegregationGroupsResponseOK": {
      "description": "Composite response combining IMDG segregation groups master data with the success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/ImdgSegregationGroupsResponse"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "ImdgSegregationGroupsResponse": {
      "description": "Container for the master data list of IMDG segregation groups.",
      "type": "object",
      "properties": {
        "imdgSegregationGroups": {
          "description": "List of IMDG segregation group master data entries.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ImdgSegregationGroup"
          }
        }
      }
    },
    "ImdgSegregationGroup": {
      "description": "Master data entry of an IMDG segregation group.",
      "type": "object",
      "properties": {
        "imdgSegregationGroupId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the IMDG segregation group.",
          "example": 1
        },
        "name": {
          "type": "string",
          "description": "Descriptive name of the IMDG segregation group.",
          "example": "Acids"
        }
      }
    },
    "CountriesResponseOK": {
      "description": "Composite response combining the countries master data with the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/CountriesResponse"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "CountriesResponse": {
      "description": "Container for the master data list of countries.",
      "type": "object",
      "properties": {
        "countries": {
          "description": "List of country master data entries.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Country"
          }
        }
      }
    },
    "Country": {
      "description": "Master data entry of a country used for participants and addresses.",
      "type": "object",
      "properties": {
        "countryId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the country.",
          "example": 180
        },
        "name": {
          "type": "string",
          "description": "Name of the country in English.",
          "example": "Qatar"
        },
        "countryCode": {
          "type": "string",
          "description": "ISO 3166-1 alpha-2 code of the country.",
          "example": "QA"
        }
      }
    },
    "ApiIssueCode": {
      "type": "string",
      "description": "Stable machine-readable code of an error or a warning:\n\n- General errors, such as those of authentication, permissions, licences, unknown URLs and methods, requests that are too large, request values that are missing or not valid and unexpected failures, have a descriptive code; `UNEXPECTED_ERROR` identifies an unexpected failure of the request.\n- The errors and warnings of the rules of each functional area have a code made of the name of the area, an underscore and four digits, such as `CONSOLIDATION_0001`; the text of `message` describes the problem.\n\nA code keeps its meaning in every later version, is never reused for another problem and does not depend on the language of the message, whose text may change. New values may be added; clients must accept unknown values.",
      "enum": [
        "ACCOUNT_0001",
        "ACCOUNT_0002",
        "ACCOUNT_0003",
        "ACCOUNT_LICENSE_EXPIRED",
        "AMBIGUOUS_URL",
        "AUTHENTICATION_FAILED",
        "CONSIGNMENT_0001",
        "CONSIGNMENT_0002",
        "CONSIGNMENT_0003",
        "CONSIGNMENT_0004",
        "CONSIGNMENT_0005",
        "CONSIGNMENT_0006",
        "CONSIGNMENT_0007",
        "CONSIGNMENT_0008",
        "CONSIGNMENT_0009",
        "CONSIGNMENT_0010",
        "CONSIGNMENT_0011",
        "CONSIGNMENT_0012",
        "CONSIGNMENT_0013",
        "CONSIGNMENT_0014",
        "CONSIGNMENT_0015",
        "CONSIGNMENT_0016",
        "CONSIGNMENT_0017",
        "CONSIGNMENT_0018",
        "CONSIGNMENT_0019",
        "CONSIGNMENT_0020",
        "CONSIGNMENT_0021",
        "CONSIGNMENT_0022",
        "CONSIGNMENT_0023",
        "CONSIGNMENT_0024",
        "CONSIGNMENT_0025",
        "CONSIGNMENT_0026",
        "CONSIGNMENT_0027",
        "CONSIGNMENT_0028",
        "CONSIGNMENT_0029",
        "CONSIGNMENT_0030",
        "CONSIGNMENT_0031",
        "CONSIGNMENT_0032",
        "CONSIGNMENT_0033",
        "CONSIGNMENT_0034",
        "CONSIGNMENT_NOTE_0001",
        "CONSIGNMENT_NOTE_0002",
        "CONSIGNMENT_NOTE_0003",
        "CONSIGNMENT_NOTE_0004",
        "CONSIGNMENT_NOTE_0005",
        "CONSIGNMENT_NOTE_0006",
        "CONSIGNMENT_NOTE_0007",
        "CONSIGNMENT_NOTE_0008",
        "CONSIGNMENT_NOTE_0009",
        "CONSIGNMENT_NOTE_0010",
        "CONSIGNMENT_NOTE_0011",
        "CONSIGNMENT_NOTE_0012",
        "CONSIGNMENT_NOTE_0013",
        "CONSIGNMENT_NOTE_0014",
        "CONSIGNMENT_NOTE_0015",
        "CONSIGNMENT_NOTE_0016",
        "CONSIGNMENT_NOTE_0017",
        "CONSIGNMENT_NOTE_0018",
        "CONSIGNMENT_NOTE_0019",
        "CONSIGNMENT_NOTE_0020",
        "CONSIGNMENT_NOTE_0021",
        "CONSIGNMENT_NOTE_0022",
        "CONSIGNMENT_NOTE_0023",
        "CONSIGNMENT_NOTE_0024",
        "CONSIGNMENT_NOTE_0025",
        "CONSIGNMENT_NOTE_0026",
        "CONSIGNMENT_NOTE_0027",
        "CONSIGNMENT_NOTE_0028",
        "CONSIGNMENT_NOTE_0029",
        "CONSIGNMENT_NOTE_0030",
        "CONSIGNMENT_NOTE_0031",
        "CONSIGNMENT_NOTE_0032",
        "CONSIGNMENT_NOTE_0033",
        "CONSIGNMENT_NOTE_0034",
        "CONSIGNMENT_NOTE_0035",
        "CONSIGNMENT_NOTE_0036",
        "CONSIGNMENT_NOTE_0037",
        "CONSIGNMENT_NOTE_0038",
        "CONSIGNMENT_NOTE_0039",
        "CONSIGNMENT_NOTE_0040",
        "CONSIGNMENT_NOTE_0041",
        "CONSIGNMENT_NOTE_0042",
        "CONSIGNMENT_NOTE_0043",
        "CONSOLIDATION_0001",
        "CONSOLIDATION_0002",
        "CONSOLIDATION_0003",
        "CONSOLIDATION_0004",
        "CONSOLIDATION_0005",
        "CONSOLIDATION_0006",
        "CONSOLIDATION_0007",
        "CONSOLIDATION_0008",
        "CONSOLIDATION_0009",
        "CONSOLIDATION_0010",
        "CONSOLIDATION_0011",
        "CONSOLIDATION_0012",
        "CONSOLIDATION_0013",
        "CONSOLIDATION_0014",
        "CONSOLIDATION_0015",
        "CONSOLIDATION_0016",
        "CONSOLIDATION_0017",
        "CONSOLIDATION_0018",
        "CONSOLIDATION_0019",
        "CONSOLIDATION_0020",
        "CONSOLIDATION_0021",
        "CONSOLIDATION_0022",
        "CONSOLIDATION_0023",
        "CONSOLIDATION_0024",
        "CONSOLIDATION_0025",
        "CONSOLIDATION_0026",
        "CONSOLIDATION_0027",
        "CONSOLIDATION_0028",
        "CONSOLIDATION_0029",
        "CONSOLIDATION_0030",
        "CONSOLIDATION_0031",
        "CONSOLIDATION_0032",
        "CONSOLIDATION_0033",
        "CONSOLIDATION_0034",
        "CONSOLIDATION_0035",
        "CONSOLIDATION_0036",
        "CONSOLIDATION_0037",
        "CONSOLIDATION_0038",
        "CONSOLIDATION_0039",
        "CONSOLIDATION_0040",
        "CONSOLIDATION_0041",
        "CONSOLIDATION_0042",
        "CONSOLIDATION_0043",
        "CONSOLIDATION_0044",
        "CONSOLIDATION_0045",
        "CONSOLIDATION_0046",
        "CONSOLIDATION_0047",
        "CONSOLIDATION_0048",
        "CONSOLIDATION_0049",
        "CONSOLIDATION_0050",
        "CONSOLIDATION_0051",
        "CONSOLIDATION_0052",
        "CONSOLIDATION_0053",
        "CONSOLIDATION_0054",
        "CONSOLIDATION_0055",
        "CONSOLIDATION_0056",
        "CONSOLIDATION_0057",
        "CONSOLIDATION_0058",
        "CONSOLIDATION_0059",
        "CONSOLIDATION_0060",
        "CONSOLIDATION_0061",
        "CONSOLIDATION_0062",
        "CONSOLIDATION_0063",
        "CONSOLIDATION_0064",
        "CONSOLIDATION_0065",
        "CONSOLIDATION_0066",
        "CONSOLIDATION_0067",
        "CONSOLIDATION_0068",
        "CONSOLIDATION_0069",
        "CONSOLIDATION_0070",
        "CONSOLIDATION_0071",
        "CONSOLIDATION_0072",
        "CONSOLIDATION_0073",
        "CONSOLIDATION_0074",
        "CONSOLIDATION_0075",
        "CONSOLIDATION_0076",
        "CONSOLIDATION_0077",
        "CONSOLIDATION_0078",
        "CONSOLIDATION_0079",
        "CONSOLIDATION_0080",
        "CONSOLIDATION_0081",
        "CONSOLIDATION_0082",
        "CONSOLIDATION_0083",
        "CONSOLIDATION_0084",
        "CONSOLIDATION_0085",
        "CONSOLIDATION_0086",
        "CONSOLIDATION_0087",
        "CONSOLIDATION_0088",
        "CONSOLIDATION_0089",
        "CONSOLIDATION_0090",
        "CONSOLIDATION_0091",
        "CONSOLIDATION_0092",
        "CONSOLIDATION_0093",
        "CONSOLIDATION_0094",
        "CONSOLIDATION_0095",
        "CONSOLIDATION_0096",
        "CONSOLIDATION_0097",
        "CONSOLIDATION_0098",
        "CONSOLIDATION_0099",
        "CONSOLIDATION_0100",
        "CONSOLIDATION_0101",
        "CONSOLIDATION_0102",
        "CONSOLIDATION_0103",
        "CONSOLIDATION_0104",
        "CONSOLIDATION_0105",
        "CONSOLIDATION_0106",
        "CONSOLIDATION_0107",
        "CONSOLIDATION_0108",
        "CONSOLIDATION_0109",
        "CONSOLIDATION_0110",
        "CONSOLIDATION_0111",
        "CONSOLIDATION_0112",
        "CONSOLIDATION_0113",
        "CONSOLIDATION_0114",
        "CONSOLIDATION_0115",
        "CONSOLIDATION_0116",
        "CONSOLIDATION_0117",
        "CONSOLIDATION_0118",
        "CONSOLIDATION_0119",
        "CONSOLIDATION_0120",
        "CONSOLIDATION_0121",
        "CONSOLIDATION_0122",
        "CONSOLIDATION_0123",
        "CONSOLIDATION_0124",
        "CONSOLIDATION_0125",
        "CONSOLIDATION_0126",
        "CONSOLIDATION_0127",
        "CONSOLIDATION_0128",
        "CONSOLIDATION_0129",
        "CONSOLIDATION_0130",
        "DOCUMENT_0001",
        "DOCUMENT_0002",
        "DOCUMENT_0003",
        "DOCUMENT_0004",
        "DOCUMENT_0005",
        "DOCUMENT_0006",
        "DOCUMENT_0007",
        "DOCUMENT_0008",
        "FIELDS_HAVE_INVALID_VALUE",
        "GOOD_0001",
        "GOOD_0002",
        "GOOD_0003",
        "GOOD_0004",
        "GOOD_0005",
        "GOOD_0006",
        "GOOD_0007",
        "GOOD_0008",
        "GOOD_0009",
        "GOOD_0010",
        "GOOD_0011",
        "INVALID_CONTENT_TYPE",
        "INVALID_NAME",
        "INVALID_NUMBER_OF_IDENTIFIERS",
        "INVALID_REQUEST_GUID",
        "METHOD_NOT_ALLOWED",
        "MORE_THAN_ONE_ITEM_FOUND",
        "NAME_CAN_NOT_CONTAIN",
        "NAME_IS_TOO_LONG",
        "NOT_ALLOWED_TO_PERFORM_OPERATION",
        "NOT_AUTHENTICATED",
        "NOT_AVAILABLE_FOR_REGULATION",
        "NOT_DEFINED_OR_NOT_GRANTED_DATA",
        "NOT_VALID_VALUE_FOR_PARAMETER",
        "NO_ONE_ITEM_SELECTED",
        "NUMBER_OF_ITEMS_EXCEED",
        "OPERATION_NOT_ACCOMPLISHED",
        "PACKAGE_0001",
        "PACKAGE_0002",
        "PACKAGE_0003",
        "PACKAGE_0004",
        "PACKAGE_0005",
        "PACKAGE_0006",
        "PACKAGE_0007",
        "PACKAGE_0008",
        "PARTICIPANT_0001",
        "PARTICIPANT_0002",
        "PARTICIPANT_0003",
        "PARTICIPANT_0004",
        "PARTICIPANT_0005",
        "PARTICIPANT_0006",
        "PARTICIPANT_0007",
        "PARTICIPANT_0008",
        "PARTICIPANT_0009",
        "PARTICIPANT_0010",
        "PARTICIPANT_0011",
        "PARTICIPANT_0012",
        "PRODUCT_0001",
        "PRODUCT_0002",
        "PRODUCT_0003",
        "PRODUCT_0004",
        "PRODUCT_0005",
        "PRODUCT_0006",
        "PRODUCT_0007",
        "PRODUCT_0008",
        "PRODUCT_0009",
        "PRODUCT_0010",
        "PRODUCT_0011",
        "PRODUCT_0012",
        "PRODUCT_0013",
        "PRODUCT_0014",
        "PRODUCT_0015",
        "PRODUCT_0016",
        "PRODUCT_0017",
        "PRODUCT_0018",
        "PRODUCT_0019",
        "PRODUCT_0020",
        "PRODUCT_0021",
        "PRODUCT_0022",
        "PRODUCT_0023",
        "PRODUCT_0024",
        "PRODUCT_0025",
        "PRODUCT_0026",
        "PRODUCT_0027",
        "PRODUCT_0028",
        "PRODUCT_0029",
        "PRODUCT_0030",
        "PRODUCT_0031",
        "PRODUCT_0032",
        "PRODUCT_0033",
        "PRODUCT_0034",
        "PRODUCT_0035",
        "PRODUCT_0036",
        "PRODUCT_0037",
        "PRODUCT_0038",
        "RADIOLOGICAL_0001",
        "RADIOLOGICAL_0002",
        "REGULATION_LICENSE_REQUIRED",
        "REGULATION_NO_ONE_REGULATION",
        "REQUEST_TOO_LARGE",
        "REQUEST_VALUE_NOT_VALID",
        "REQUIRED_FIELDS_ARE_EMPTY_OR_NOT_VALID",
        "ROLE_NOT_ALLOWED",
        "UNEXPECTED_ERROR",
        "URL_NOT_FOUND",
        "WASTE_0001",
        "WEBHOOK_0001",
        "WEBHOOK_0002",
        "WEBHOOK_0003",
        "WEBHOOK_0004"
      ]
    },
    "ApiIssue": {
      "type": "object",
      "properties": {
        "code": {
          "allOf": [
            {
              "$ref": "#/definitions/ApiIssueCode"
            }
          ],
          "description": "Stable machine-readable code of the error or the warning. General errors have a descriptive code; the errors and warnings of the rules of each functional area have the name of the area, an underscore and four digits, and `message` describes the problem. New values may be added; clients must accept unknown values.",
          "example": "NOT_VALID_VALUE_FOR_PARAMETER"
        },
        "message": {
          "type": "string",
          "description": "Text of the error or the warning, in the language of the user.",
          "example": "Not valid value for the parameter."
        },
        "parameter": {
          "type": "string",
          "description": "Element of the request that the entry refers to, with the JSON names of its path joined by dots and without list positions. Absent when the entry does not refer to an element of the request.",
          "example": "onTheFlySimpleProducts.packageId"
        },
        "parameterValue": {
          "type": "string",
          "description": "Value received for the element that the entry refers to, when it is known.",
          "example": "48213"
        },
        "parameterPosition": {
          "type": "string",
          "description": "Position of the element in the innermost list of its path, starting at 0. Absent when the element is not inside a list.",
          "example": "2"
        },
        "pointer": {
          "type": "string",
          "description": "JSON Pointer (RFC 6901) to the element of the request body, with every list position starting at 0. An empty string refers to the whole body. Absent for path, query and header parameters and when the entry does not refer to the body.",
          "example": "/overpacks/0/onTheFlySimpleProducts/2/packageId"
        },
        "ruleReference": {
          "type": "string",
          "description": "Paragraph of the regulation or packing instruction on which the finding is based, when the rule has one.",
          "example": "IMDG 4.1.4.1 P001"
        },
        "segregation": {
          "allOf": [
            {
              "$ref": "#/definitions/SegregationFinding"
            }
          ],
          "description": "Pair of items, required separation and verdict, only for the entries of a segregation check."
        }
      },
      "description": "One error or one warning of a response: its stable code, its text and, when it refers to an element of the request, that element. The values of one entry always belong to each other.",
      "required": [
        "code",
        "message"
      ]
    },
    "ApiResponseError400": {
      "description": "Error response envelope for invalid request payload, with offending parameter information.",
      "type": "object",
      "properties": {
        "success": {
          "type": "boolean",
          "description": "Indicates that the operation did not complete successfully.",
          "example": false
        },
        "httpStatusCode": {
          "type": "integer",
          "description": "HTTP status code returned by the operation.",
          "format": "int32",
          "example": 400
        },
        "message": {
          "type": "string",
          "description": "Human-readable message describing the validation error.",
          "example": "Good not valid"
        },
        "messageType": {
          "type": "string",
          "description": "Severity classification of the message.",
          "enum": [
            "Error",
            "Warning",
            "Information"
          ]
        },
        "parameter": {
          "description": "Aggregated list of the `parameter` of each entry of `errors`, separated by \", \" and in the same order: element n belongs to entry n of `errors`, and it is empty for an entry without parameter. Absent when no entry has a parameter.",
          "type": "string",
          "example": "goods"
        },
        "parameterValue": {
          "description": "Aggregated list of the `parameterValue` of each entry of `errors`, separated by \", \" and in the same order: element n belongs to entry n of `errors`, and it is empty for an entry without value. Absent when no entry has a value.",
          "type": "string",
          "example": "GoodX"
        },
        "parameterPosition": {
          "description": "Aggregated list of the `parameterPosition` of each entry of `errors`, separated by \", \" and in the same order: element n belongs to entry n of `errors`, and it is empty for an entry outside a list. Positions start at 0. Absent when no entry is inside a list.",
          "type": "string",
          "example": "3"
        },
        "requestGuid": {
          "type": "string",
          "description": "Unique identifier of the request, returned for tracing purposes.",
          "example": "F8AEC2D1-9515-4013-AA46-10405EB688A2"
        },
        "errors": {
          "description": "Every error that made the request fail, in detection order, each one with its stable code and, when it refers to an element of the request, its parameter, value, position and JSON Pointer. Present on every error response, with at least one entry.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ApiIssue"
          }
        },
        "warnings": {
          "description": "Every warning found while processing the request, in detection order, each one with its stable code. Omitted when there is no warning.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ApiIssue"
          }
        }
      }
    },
    "ApiResponseError401": {
      "description": "Error response envelope for unauthorized requests, with offending parameter information. A request with valid credentials from a user who does not have any of the roles that the operation requires is answered with 403, not with 401.",
      "type": "object",
      "properties": {
        "success": {
          "type": "boolean",
          "description": "Indicates that the operation did not complete successfully.",
          "example": false
        },
        "httpStatusCode": {
          "type": "integer",
          "description": "HTTP status code returned by the operation.",
          "format": "int32",
          "example": 401
        },
        "message": {
          "type": "string",
          "description": "Human-readable message describing the authentication error.",
          "example": "Authentication failed: the credentials of the API user or the access token are not valid"
        },
        "messageType": {
          "type": "string",
          "description": "Severity classification of the message.",
          "enum": [
            "Error",
            "Warning",
            "Information"
          ]
        },
        "parameter": {
          "description": "Aggregated list of the `parameter` of each entry of `errors`, separated by \", \" and in the same order: element n belongs to entry n of `errors`, and it is empty for an entry without parameter. Absent when no entry has a parameter.",
          "type": "string",
          "example": "Authorization"
        },
        "parameterValue": {
          "description": "Aggregated list of the `parameterValue` of each entry of `errors`, separated by \", \" and in the same order: element n belongs to entry n of `errors`, and it is empty for an entry without value. Absent when no entry has a value.",
          "type": "string",
          "example": "Value ABC"
        },
        "parameterPosition": {
          "description": "Aggregated list of the `parameterPosition` of each entry of `errors`, separated by \", \" and in the same order: element n belongs to entry n of `errors`, and it is empty for an entry outside a list. Positions start at 0. Absent when no entry is inside a list.",
          "type": "string",
          "example": "3"
        },
        "requestGuid": {
          "type": "string",
          "description": "Unique identifier of the request, returned for tracing purposes.",
          "example": "F8AEC2D1-9515-4013-AA46-10405EB688A2"
        },
        "errors": {
          "description": "The authentication error, with its stable code.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ApiIssue"
          }
        },
        "warnings": {
          "description": "Every warning found while processing the request, in detection order, each one with its stable code. Omitted when there is no warning.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ApiIssue"
          }
        }
      }
    },
    "ApiResponseError403": {
      "description": "Error response envelope for forbidden requests: the API user does not have any of the roles that the operation requires (code `ROLE_NOT_ALLOWED`), the licences of the regulations of the account are not valid, or the operation is reserved to the administrators of the account.",
      "type": "object",
      "properties": {
        "success": {
          "type": "boolean",
          "description": "Indicates that the operation did not complete successfully.",
          "example": false
        },
        "httpStatusCode": {
          "type": "integer",
          "description": "HTTP status code returned by the operation.",
          "format": "int32",
          "example": 403
        },
        "message": {
          "type": "string",
          "description": "Human-readable message describing why the request is forbidden.",
          "example": "The account does not have an active license for any dangerous goods regulation"
        },
        "messageType": {
          "type": "string",
          "description": "Severity classification of the message.",
          "enum": [
            "Error",
            "Warning",
            "Information"
          ]
        },
        "parameter": {
          "description": "Aggregated list of the `parameter` of each entry of `errors`, separated by \", \" and in the same order: element n belongs to entry n of `errors`, and it is empty for an entry without parameter. Absent when no entry has a parameter.",
          "type": "string",
          "example": "Regulation Licenses"
        },
        "parameterValue": {
          "description": "Aggregated list of the `parameterValue` of each entry of `errors`, separated by \", \" and in the same order: element n belongs to entry n of `errors`, and it is empty for an entry without value. Absent when no entry has a value.",
          "type": "string"
        },
        "parameterPosition": {
          "description": "Aggregated list of the `parameterPosition` of each entry of `errors`, separated by \", \" and in the same order: element n belongs to entry n of `errors`, and it is empty for an entry outside a list. Positions start at 0. Absent when no entry is inside a list.",
          "type": "string"
        },
        "requestGuid": {
          "type": "string",
          "description": "Unique identifier of the request, returned for tracing purposes.",
          "example": "F8AEC2D1-9515-4013-AA46-10405EB688A2"
        },
        "errors": {
          "description": "Every error that made the request fail, in detection order, each one with its stable code and, when it refers to an element of the request, its parameter, value, position and JSON Pointer. Present on every error response, with at least one entry.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ApiIssue"
          }
        },
        "warnings": {
          "description": "Every warning found while processing the request, in detection order, each one with its stable code. Omitted when there is no warning.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ApiIssue"
          }
        }
      }
    },
    "ApiResponseError404": {
      "description": "Error response envelope for resources not found, with offending parameter information.",
      "type": "object",
      "properties": {
        "success": {
          "type": "boolean",
          "description": "Indicates that the operation did not complete successfully.",
          "example": false
        },
        "httpStatusCode": {
          "type": "integer",
          "description": "HTTP status code returned by the operation.",
          "format": "int32",
          "example": 404
        },
        "message": {
          "type": "string",
          "description": "Human-readable message describing the not-found error.",
          "example": "Item not found"
        },
        "messageType": {
          "type": "string",
          "description": "Severity classification of the message.",
          "enum": [
            "Error",
            "Warning",
            "Information"
          ]
        },
        "parameter": {
          "description": "Aggregated list of the `parameter` of each entry of `errors`, separated by \", \" and in the same order: element n belongs to entry n of `errors`, and it is empty for an entry without parameter. Absent when no entry has a parameter.",
          "type": "string",
          "example": "productId"
        },
        "parameterValue": {
          "description": "Aggregated list of the `parameterValue` of each entry of `errors`, separated by \", \" and in the same order: element n belongs to entry n of `errors`, and it is empty for an entry without value. Absent when no entry has a value.",
          "type": "string",
          "example": "Prod001"
        },
        "parameterPosition": {
          "description": "Aggregated list of the `parameterPosition` of each entry of `errors`, separated by \", \" and in the same order: element n belongs to entry n of `errors`, and it is empty for an entry outside a list. Positions start at 0. Absent when no entry is inside a list.",
          "type": "string",
          "example": "3"
        },
        "requestGuid": {
          "type": "string",
          "description": "Unique identifier of the request, returned for tracing purposes.",
          "example": "F8AEC2D1-9515-4013-AA46-10405EB688A2"
        },
        "errors": {
          "description": "Every error that made the request fail, in detection order, each one with its stable code and, when it refers to an element of the request, its parameter, value, position and JSON Pointer. Present on every error response, with at least one entry.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ApiIssue"
          }
        },
        "warnings": {
          "description": "Every warning found while processing the request, in detection order, each one with its stable code. Omitted when there is no warning.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ApiIssue"
          }
        }
      }
    },
    "ApiResponseError409": {
      "description": "Error response envelope for requests that conflict with the current state of the resource, with offending parameter information.",
      "type": "object",
      "properties": {
        "success": {
          "type": "boolean",
          "description": "Indicates that the operation did not complete successfully.",
          "example": false
        },
        "httpStatusCode": {
          "type": "integer",
          "description": "HTTP status code returned by the operation.",
          "format": "int32",
          "example": 409
        },
        "message": {
          "type": "string",
          "description": "Human-readable message describing the conflict with the current state of the resource.",
          "example": "Only a master consignment in draft or cancelled status can be deleted."
        },
        "messageType": {
          "type": "string",
          "description": "Severity classification of the message.",
          "enum": [
            "Error",
            "Warning",
            "Information"
          ]
        },
        "parameter": {
          "description": "Aggregated list of the `parameter` of each entry of `errors`, separated by \", \" and in the same order: element n belongs to entry n of `errors`, and it is empty for an entry without parameter. Absent when no entry has a parameter.",
          "type": "string",
          "example": "masterConsignmentId"
        },
        "parameterValue": {
          "description": "Aggregated list of the `parameterValue` of each entry of `errors`, separated by \", \" and in the same order: element n belongs to entry n of `errors`, and it is empty for an entry without value. Absent when no entry has a value.",
          "type": "string",
          "example": "1234"
        },
        "parameterPosition": {
          "description": "Aggregated list of the `parameterPosition` of each entry of `errors`, separated by \", \" and in the same order: element n belongs to entry n of `errors`, and it is empty for an entry outside a list. Positions start at 0. Absent when no entry is inside a list.",
          "type": "string"
        },
        "requestGuid": {
          "type": "string",
          "description": "Unique identifier of the request, returned for tracing purposes.",
          "example": "F8AEC2D1-9515-4013-AA46-10405EB688A2"
        },
        "errors": {
          "description": "Every error that made the request fail, in detection order, each one with its stable code and, when it refers to an element of the request, its parameter, value, position and JSON Pointer. Present on every error response, with at least one entry.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ApiIssue"
          }
        },
        "warnings": {
          "description": "Every warning found while processing the request, in detection order, each one with its stable code. Omitted when there is no warning.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ApiIssue"
          }
        }
      }
    },
    "ApiResponseError500": {
      "description": "Error response envelope for unexpected server errors.",
      "type": "object",
      "properties": {
        "success": {
          "type": "boolean",
          "description": "Indicates that the operation did not complete successfully.",
          "example": false
        },
        "httpStatusCode": {
          "type": "integer",
          "description": "HTTP status code returned by the operation.",
          "format": "int32",
          "example": 500
        },
        "message": {
          "type": "string",
          "description": "Human-readable message describing the unexpected server error.",
          "example": "Unexpected Error"
        },
        "messageType": {
          "type": "string",
          "description": "Severity classification of the message.",
          "enum": [
            "Error"
          ]
        },
        "parameter": {
          "description": "Aggregated list of the `parameter` of each entry of `errors`, separated by \", \" and in the same order: element n belongs to entry n of `errors`, and it is empty for an entry without parameter. Absent when no entry has a parameter.",
          "type": "string"
        },
        "parameterValue": {
          "description": "Aggregated list of the `parameterValue` of each entry of `errors`, separated by \", \" and in the same order: element n belongs to entry n of `errors`, and it is empty for an entry without value. Absent when no entry has a value.",
          "type": "string"
        },
        "parameterPosition": {
          "description": "Aggregated list of the `parameterPosition` of each entry of `errors`, separated by \", \" and in the same order: element n belongs to entry n of `errors`, and it is empty for an entry outside a list. Positions start at 0. Absent when no entry is inside a list.",
          "type": "string"
        },
        "requestGuid": {
          "type": "string",
          "description": "Unique identifier of the request, returned for tracing purposes.",
          "example": "F8AEC2D1-9515-4013-AA46-10405EB688A2"
        },
        "errors": {
          "description": "Every error that made the request fail, in detection order, each one with its stable code and, when it refers to an element of the request, its parameter, value, position and JSON Pointer. Present on every error response, with at least one entry.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ApiIssue"
          }
        },
        "warnings": {
          "description": "Every warning found while processing the request, in detection order, each one with its stable code. Omitted when there is no warning.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ApiIssue"
          }
        }
      }
    },
    "EmptyRequestBody": {
      "description": "Empty JSON object, `{}`, sent as the body of an operation that reads no data from it: a POST request without a body is rejected with 400 before it reaches the operation.",
      "type": "object",
      "example": {}
    },
    "TwoIntegers": {
      "type": "object",
      "description": "Simple data structure of two integers for testing",
      "required": [
        "a",
        "b"
      ],
      "properties": {
        "a": {
          "type": "integer",
          "description": "First integer to be doubled.",
          "example": 1
        },
        "b": {
          "type": "integer",
          "description": "Second integer to be doubled.",
          "example": 2
        }
      }
    },
    "TwoIntegersResponse": {
      "description": "Container for the pair of integers returned by the diagnostic doubling operations.",
      "type": "object",
      "properties": {
        "twoIntegers": {
          "description": "Pair of integers, each doubled by the operation.",
          "$ref": "#/definitions/TwoIntegers"
        }
      }
    },
    "TwoIntegersResponseOK": {
      "description": "Composite response combining the doubled integers with the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/TwoIntegersResponse"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "OAuth2TokenResponse": {
      "description": "Successful token response, as defined by RFC 6749 section 5.1.",
      "type": "object",
      "properties": {
        "access_token": {
          "description": "The issued opaque access token.",
          "type": "string"
        },
        "token_type": {
          "description": "Type of the token, always `bearer`.",
          "type": "string",
          "example": "bearer"
        },
        "expires_in": {
          "description": "Lifetime of the token in seconds.",
          "type": "integer",
          "example": 3599
        }
      }
    },
    "ConsignmentSpecialFeature": {
      "enum": [
        "ShowRedStripes",
        "ShowBlueStripes",
        "ShowMarksForAllPackages",
        "ShowLabelsForAllPackages",
        "ShowMultimodalIataDeclaration",
        "DuplicateIataIdentification",
        "AdministrativeControlDocument"
      ],
      "type": "string",
      "description": "Optional feature of a consignment. Each one enables a specific behaviour or a specific document and applies only to certain regulations, so a feature that does not apply to the regulation of the consignment is rejected. When the request provides an explicit list, the list is the complete specification: every feature that is not listed is disabled, including the features that are enabled by default when the field is omitted.\n\n- `ShowRedStripes`: prints the IATA declaration with the red hatched border in the background; when it is not included, the declaration is printed without the red stripes, for preprinted paper. IATA only; enabled by default when the field is omitted.\n- `ShowBlueStripes`: prints the IMDG declaration with the blue stripes in the background. IMDG only.\n- `ShowMarksForAllPackages`: prints one page for every package in the package marking document, instead of one page for each different marking.\n- `ShowLabelsForAllPackages`: prints one page for every package in the packaging labels document, instead of one page for each different label.\n- `ShowMultimodalIataDeclaration`: issues the multimodal IATA declaration, which adds the road transport information to the handling information of the declaration. IATA only.\n- `DuplicateIataIdentification`: repeats the identification of the dangerous goods in the IATA declaration every time the same goods appear, instead of stating it only the first time. IATA only.\n- `AdministrativeControlDocument`: issues the administrative control document required for national road transport in Spain. ADR only.\n\nThe administrative control document only applies when the taking over (the workplace) and the delivery (the consignee) are in Spain; otherwise the feature is removed when the consignment is completed and, when the request lists it explicitly, the response carries a warning. When it applies, the contractual shipper (or the consignor when no contractual shipper is stated) and the effective carrier (or the carrier when no effective carrier is stated) must have a tax code: otherwise the consignment is rejected when it is completed, and the document is neither printed nor downloaded; the other documents of the consignment are not affected.\n\nNew values may be added; clients must accept unknown values."
    },
    "ConsignmentAdministrativeControlData": {
      "type": "object",
      "properties": {
        "predefinedContractualShipperCode": {
          "type": "string",
          "description": "Code of the predefined participant acting as contractual shipper, when different from the shipper of the consignment.",
          "x-nullable": true
        },
        "onTheFlyContractualShipper": {
          "$ref": "#/definitions/ParticipantOnTheFly"
        },
        "predefinedEffectiveCarrierCode": {
          "type": "string",
          "description": "Code of the predefined participant acting as effective carrier, when different from the carrier of the consignment.",
          "x-nullable": true
        },
        "onTheFlyEffectiveCarrier": {
          "$ref": "#/definitions/ParticipantOnTheFly"
        },
        "specialTransportAuthorization": {
          "type": "string",
          "maxLength": 250,
          "description": "Special circulation authorisation reference, when applicable.",
          "x-nullable": true
        },
        "shipperRemarks": {
          "type": "string",
          "maxLength": 1000,
          "description": "Remarks and reservations of the contractual shipper.",
          "x-nullable": true
        },
        "carrierRemarks": {
          "type": "string",
          "maxLength": 1000,
          "description": "Remarks and reservations of the effective carrier.",
          "x-nullable": true
        }
      },
      "description": "Data of the administrative control document required for national road transport in Spain. Only necessary for the administrative control document of national road transport in Spain; not required for ADR, IMDG, IATA or CFR49 documentation. When the administrative control document applies, the contractual shipper (or the consignor when no contractual shipper is stated) and the effective carrier (or the carrier when no effective carrier is stated) must have a tax code: otherwise the consignment is rejected when it is completed, and the document is neither printed nor downloaded."
    },
    "ConsignmentAdministrativeControlDataResponse": {
      "type": "object",
      "properties": {
        "contractualShipper": {
          "$ref": "#/definitions/ParticipantResponseData"
        },
        "effectiveCarrier": {
          "$ref": "#/definitions/ParticipantResponseData"
        },
        "specialTransportAuthorization": {
          "type": "string",
          "description": "Special circulation authorisation reference, when applicable.",
          "x-nullable": true
        },
        "shipperRemarks": {
          "type": "string",
          "description": "Remarks and reservations of the contractual shipper.",
          "x-nullable": true
        },
        "carrierRemarks": {
          "type": "string",
          "description": "Remarks and reservations of the effective carrier.",
          "x-nullable": true
        },
        "documentUrl": {
          "type": "string",
          "description": "Public URL of the frozen administrative control document, the same one encoded in the QR code of the printed document. Only present once the document has been generated.",
          "x-nullable": true
        }
      },
      "description": "Data of the administrative control document as stored in the consignment, with the contractual shipper and the effective carrier resolved."
    },
    "ConsignmentAdrData": {
      "type": "object",
      "description": "ADR data of a consignment: the data that only Spain requires.",
      "properties": {
        "spainData": {
          "description": "Data of the consignment that only Spain requires: the administrative control document.",
          "allOf": [
            {
              "$ref": "#/definitions/ConsignmentSpainData"
            }
          ]
        }
      }
    },
    "ConsignmentSpainData": {
      "type": "object",
      "description": "Data of a consignment that only Spain requires.",
      "properties": {
        "administrativeControlData": {
          "description": "Data of the administrative control document. Only necessary for the administrative control document of national road transport in Spain; not required for ADR, IMDG, IATA or CFR49 documentation.",
          "allOf": [
            {
              "$ref": "#/definitions/ConsignmentAdministrativeControlData"
            }
          ]
        }
      }
    },
    "ConsignmentAdrDataResponse": {
      "type": "object",
      "description": "ADR data of a consignment in responses: the data that only Spain requires.",
      "properties": {
        "spainData": {
          "description": "Data of the consignment that only Spain requires: the administrative control document.",
          "allOf": [
            {
              "$ref": "#/definitions/ConsignmentSpainDataResponse"
            }
          ]
        }
      }
    },
    "ConsignmentSpainDataResponse": {
      "type": "object",
      "description": "Data of a consignment that only Spain requires, in responses.",
      "properties": {
        "administrativeControlData": {
          "description": "Data of the administrative control document, including the resolved contractual shipper and effective carrier. Only present when the consignment issues an administrative control document.",
          "allOf": [
            {
              "$ref": "#/definitions/ConsignmentAdministrativeControlDataResponse"
            }
          ]
        }
      }
    },
    "VesselResponse": {
      "description": "Envelope object carrying the vessel data returned by the service under the vesselResponse property.",
      "type": "object",
      "properties": {
        "vesselResponse": {
          "$ref": "#/definitions/VesselResponseData"
        }
      }
    },
    "VesselResponseOK": {
      "description": "Composite response combining vessel data with the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/VesselResponse"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "LocationRestriction": {
      "type": "object",
      "properties": {
        "accountCode": {
          "type": "string",
          "description": "Code of the customer account of the restriction, among the accounts in which the user can write. Every customer account has a code, unique among the active customer accounts of its consultancy, so responses always include it.",
          "example": "WP001"
        },
        "locationCode": {
          "type": "string",
          "description": "Code of the port, airport or terminal among the locations of the account given in `accountCode`, of its company or of its group (UN/LOCODE or code given by the account).",
          "example": "NLRTM",
          "maxLength": 20
        },
        "classOrDivision": {
          "type": "string",
          "description": "Class or division to which the restriction applies; omit it to apply the restriction to every class. A restriction applies either to a class or to an identification number: sending both is rejected with 400 naming classOrDivision.",
          "example": "3"
        },
        "identificationNumber": {
          "type": "string",
          "description": "Identification number, when the restriction applies to a single entry. Identification number with its prefix: UN for UN numbers, NA for North American numbers (49 CFR only) and ID for ID 8000. Four digits, without spaces. NA numbers are rejected with 400. It cannot be sent together with classOrDivision.",
          "example": "UN1263",
          "maxLength": 6,
          "pattern": "^(UN|NA|ID)[0-9]{4}$"
        },
        "restrictionType": {
          "allOf": [
            {
              "$ref": "#/definitions/LocationRestrictionType"
            }
          ],
          "description": "Kind of restriction."
        },
        "remarks": {
          "type": "string",
          "description": "Remarks on the restriction, such as the time needed to obtain a permit.",
          "example": "Permit requested 48 hours in advance",
          "maxLength": 500
        },
        "validFrom": {
          "type": "string",
          "description": "Start of the validity of the restriction, in ISO 8601 format (UTC).",
          "example": "2026-01-01T00:00:00Z",
          "format": "date-time"
        },
        "validUntil": {
          "type": "string",
          "description": "End of the validity of the restriction, in ISO 8601 format (UTC); empty for a restriction without an end date.",
          "example": "2026-12-31T23:59:59Z",
          "format": "date-time"
        },
        "source": {
          "type": "string",
          "description": "Origin of the rule, such as a port circular, a notice of the shipping line or the experience of the account.",
          "example": "Port circular 12/2026",
          "maxLength": 100
        }
      },
      "required": [
        "accountCode",
        "locationCode",
        "restrictionType"
      ],
      "description": "Restriction registered by an account for a port, airport or terminal, applied within its validity period when transport equipment is planned or loaded in a transport movement that calls at the location. The restrictions that apply are those of the account of the movement, of its company and of its group, or, for a movement of a consulting company, those of all its customer accounts; identical restrictions are applied once."
    },
    "LocationsResponse": {
      "type": "object",
      "properties": {
        "locations": {
          "type": "array",
          "description": "Locations found on the page.",
          "items": {
            "$ref": "#/definitions/Location"
          }
        }
      },
      "description": "Container for a page of locations."
    },
    "LocationsResponseOK": {
      "description": "Composite response combining a page of locations with the paging data and the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/LocationsResponse"
        },
        {
          "$ref": "#/definitions/PagedResult"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "StowageCategoriesResponse": {
      "type": "object",
      "properties": {
        "stowageCategories": {
          "type": "array",
          "description": "IMDG stowage categories.",
          "items": {
            "$ref": "#/definitions/StowageCategory"
          }
        }
      },
      "description": "Container for the IMDG stowage categories."
    },
    "StowageCategoriesResponseOK": {
      "description": "Composite response combining the IMDG stowage categories with the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/StowageCategoriesResponse"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "StowageCategory": {
      "type": "object",
      "properties": {
        "regulation": {
          "allOf": [
            {
              "$ref": "#/definitions/DangerousGoodsRegulation"
            }
          ],
          "description": "Regulation of the category: `Imdg`, the only one with stowage categories."
        },
        "code": {
          "type": "string",
          "description": "Stowage category: `A` to `E` for packaged goods and `01` to `05` for goods of class 1.",
          "example": "A"
        },
        "name": {
          "type": "string",
          "description": "Meaning of the category (IMDG 7.1.3).",
          "example": "On deck or under deck"
        }
      },
      "description": "Stowage category of the IMDG Code (7.1.3).",
      "required": [
        "regulation"
      ]
    },
    "TransportMeansResponse": {
      "description": "Envelope object carrying the vehicle or trailer data returned by the service under the transportMeansResponse property.",
      "type": "object",
      "properties": {
        "transportMeansResponse": {
          "$ref": "#/definitions/TransportMeansResponseData"
        }
      }
    },
    "TransportMeansResponseOK": {
      "description": "Composite response combining vehicle or trailer data with the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/TransportMeansResponse"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "TransportMeansResponseData": {
      "allOf": [
        {
          "$ref": "#/definitions/TransportMeans"
        },
        {
          "type": "object",
          "properties": {
            "transportMeansId": {
              "type": "integer",
              "format": "int64",
              "description": "Identifier of the vehicle or trailer.",
              "example": 34
            },
            "isTrailer": {
              "type": "boolean",
              "description": "True for trailers and semi-trailers, derived from the type."
            }
          }
        }
      ],
      "description": "Vehicle or trailer of the account with its identifier."
    },
    "StowageCodesResponse": {
      "type": "object",
      "properties": {
        "stowageCodes": {
          "type": "array",
          "description": "IMDG stowage, handling and segregation codes.",
          "items": {
            "$ref": "#/definitions/StowageCode"
          }
        }
      },
      "description": "Container for the IMDG stowage, handling and segregation codes."
    },
    "StowageCodesResponseOK": {
      "description": "Composite response combining the IMDG stowage, handling and segregation codes with the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/StowageCodesResponse"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "Location": {
      "type": "object",
      "properties": {
        "locationCode": {
          "type": "string",
          "description": "Code of the location: the UN/LOCODE for catalogue locations, or the code given by the account to a location of its own.",
          "example": "ESVLC",
          "maxLength": 20
        },
        "unlocode": {
          "type": "string",
          "description": "Official UN/LOCODE; empty for a location of the account that has none.",
          "example": "ESVLC",
          "maxLength": 5
        },
        "name": {
          "type": "string",
          "description": "Name of the port, airport or terminal.",
          "example": "Valencia"
        },
        "countryCode": {
          "type": "string",
          "description": "ISO 3166-1 alpha-2 code of the country.",
          "example": "ES",
          "maxLength": 2
        },
        "iataCode": {
          "type": "string",
          "description": "Three-letter IATA code of the airport, when the location is an airport.",
          "example": "VLC",
          "maxLength": 3
        },
        "isPort": {
          "type": "boolean",
          "description": "True when the location is a sea port."
        },
        "isAirport": {
          "type": "boolean",
          "description": "True when the location is an airport."
        },
        "isRoadTerminal": {
          "type": "boolean",
          "description": "True when the location is a road terminal."
        },
        "isRailTerminal": {
          "type": "boolean",
          "description": "True when the location is a rail terminal."
        },
        "isAccountSpecific": {
          "type": "boolean",
          "description": "True when the location was created by the account; false for a location of the global UN/LOCODE catalogue."
        },
        "alias": {
          "type": "string",
          "description": "Short name given to the location by the account. In the search of locations, when the location is among the locations of several accounts, the alias is the one of the most specific account: the workplace, then the company, then the group.",
          "example": "Valencia terminal"
        },
        "accountCode": {
          "type": "string",
          "description": "Code of the customer account whose locations include the location and whose `alias` is returned. Omitted when the location is not among the locations of the accounts.",
          "example": "WP001"
        }
      },
      "description": "Port, airport or terminal of the global UN/LOCODE catalogue or of the account.",
      "required": [
        "isPort",
        "isAirport",
        "isRoadTerminal",
        "isRailTerminal",
        "isAccountSpecific"
      ]
    },
    "TransportMeansListResponse": {
      "type": "object",
      "properties": {
        "transportMeans": {
          "type": "array",
          "description": "Vehicles and trailers of the account.",
          "items": {
            "$ref": "#/definitions/TransportMeansResponseData"
          }
        }
      },
      "description": "Container for the vehicles and trailers of the account."
    },
    "TransportMeansListResponseOK": {
      "description": "Composite response combining the vehicles and trailers of the account with the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/TransportMeansListResponse"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "TransportMeans": {
      "type": "object",
      "properties": {
        "accountCode": {
          "type": "string",
          "description": "Code of the customer account to which the vehicle or trailer belongs, among the accounts in which the user can write. Required when creating and when updating the vehicle or trailer: on update, another code moves it to that account. Every customer account has a code, unique among the active customer accounts of its consultancy, so responses always include it, except for the vehicle or trailer of a transport movement when it belongs to an account that the user cannot read.",
          "example": "WP001"
        },
        "registration": {
          "type": "string",
          "description": "Registration plate, unique among the vehicles and trailers of its account.",
          "example": "1234 KLM",
          "maxLength": 20
        },
        "registrationCountryCode": {
          "type": "string",
          "description": "ISO 3166-1 alpha-2 code of the country of registration.",
          "example": "ES",
          "maxLength": 2
        },
        "transportMeansType": {
          "allOf": [
            {
              "$ref": "#/definitions/TransportMeansType"
            }
          ],
          "description": "Kind of vehicle or trailer."
        },
        "adrData": {
          "allOf": [
            {
              "$ref": "#/definitions/TransportMeansAdrData"
            }
          ],
          "description": "Data of ADR of the vehicle or trailer: its approval type."
        },
        "maximumPermissibleMass": {
          "type": "integer",
          "description": "Maximum permissible mass of the vehicle or trailer in kilograms. Under ADR, the mass of the transport unit (vehicle and trailer) decides the limited quantity marking of ADR 3.4.13, required for more than 8 000 kg of limited quantities in a transport unit above 12 t, and the fire extinguishers of ADR 8.1.4.1.",
          "example": 18000,
          "minimum": 0
        },
        "description": {
          "type": "string",
          "description": "Free description, such as the make and model.",
          "example": "Rigid truck, 18 t",
          "maxLength": 100
        }
      },
      "required": [
        "accountCode",
        "registration",
        "transportMeansType"
      ],
      "description": "Vehicle or trailer of the account."
    },
    "TransportMeansAdrData": {
      "type": "object",
      "properties": {
        "approvalType": {
          "type": "string",
          "description": "Vehicle designation of ADR 9.1.1.2 when the vehicle is approved: `EX/II`, `EX/III`, `FL`, `AT` or `MEMU`.",
          "example": "FL",
          "maxLength": 6
        }
      },
      "description": "Data of ADR of a vehicle or trailer of the account."
    },
    "AccountLocation": {
      "type": "object",
      "properties": {
        "accountCode": {
          "type": "string",
          "description": "Code of the customer account to whose locations the location is added, among the accounts in which the user can write.",
          "example": "WP001"
        },
        "locationCode": {
          "type": "string",
          "description": "Code of the location: a UN/LOCODE of the catalogue, or the code of a new location of the account.",
          "example": "ESVLC",
          "maxLength": 20
        },
        "alias": {
          "type": "string",
          "description": "Short name given to the location by the account.",
          "example": "Valencia terminal",
          "maxLength": 50
        },
        "name": {
          "type": "string",
          "description": "Name of a new location of the account; required when the code is not in the catalogue.",
          "example": "Paterna rail terminal",
          "maxLength": 250
        },
        "countryCode": {
          "type": "string",
          "description": "ISO 3166-1 alpha-2 code of the country of a new location of the account; required when the code is not in the catalogue.",
          "example": "ES",
          "maxLength": 2
        },
        "isPort": {
          "type": "boolean",
          "description": "True when a new location of the account is a sea port."
        },
        "isAirport": {
          "type": "boolean",
          "description": "True when a new location of the account is an airport."
        },
        "isRoadTerminal": {
          "type": "boolean",
          "description": "True when a new location of the account is a road terminal."
        },
        "isRailTerminal": {
          "type": "boolean",
          "description": "True when a new location of the account is a rail terminal."
        }
      },
      "required": [
        "accountCode",
        "locationCode"
      ],
      "description": "Location to add to the locations of the account: a UN/LOCODE of the catalogue, with an optional alias, or a new location of the account, which requires a name and a country."
    },
    "PagedResult": {
      "type": "object",
      "properties": {
        "page": {
          "type": "integer",
          "description": "Page returned, starting at 1.",
          "example": 1
        },
        "pageSize": {
          "type": "integer",
          "description": "Number of items per page applied to the search.",
          "example": 50
        },
        "total": {
          "type": "integer",
          "description": "Total number of items that match the filters, across all pages.",
          "example": 137
        }
      },
      "description": "Paging information of a search result."
    },
    "LocationRestrictionType": {
      "type": "string",
      "enum": [
        "Forbidden",
        "TransitOnly",
        "PermitRequired",
        "DischargeFirstLoadLast",
        "OutsideStorage"
      ],
      "description": "Kind of restriction applied at a port, airport or terminal when transport equipment is loaded into a transport movement. `Forbidden`: the class or UN number is not accepted. `TransitOnly`: accepted only in transit, neither loaded nor discharged. `PermitRequired`: a prior permit of the port authority is required. `DischargeFirstLoadLast`: minimum time on the quay. `OutsideStorage`: the goods must be stored outside. New values may be added; clients must accept unknown values."
    },
    "VesselsResponse": {
      "type": "object",
      "properties": {
        "vessels": {
          "type": "array",
          "description": "Vessels of the account.",
          "items": {
            "$ref": "#/definitions/VesselResponseData"
          }
        }
      },
      "description": "Container for the vessels of the account."
    },
    "VesselsResponseOK": {
      "description": "Composite response combining the vessels of the account with the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/VesselsResponse"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "VesselResponseData": {
      "allOf": [
        {
          "$ref": "#/definitions/Vessel"
        },
        {
          "type": "object",
          "properties": {
            "vesselId": {
              "type": "integer",
              "format": "int64",
              "description": "Identifier of the vessel.",
              "example": 12
            }
          }
        }
      ],
      "description": "Vessel of the account with its identifier."
    },
    "StowageCode": {
      "type": "object",
      "properties": {
        "regulation": {
          "allOf": [
            {
              "$ref": "#/definitions/DangerousGoodsRegulation"
            }
          ],
          "description": "Regulation of the code: `Imdg`, the only one with these codes."
        },
        "code": {
          "type": "string",
          "description": "Stowage (`SW`), handling (`H`) or segregation (`SG`) code.",
          "example": "SW1"
        },
        "stowageCodeType": {
          "allOf": [
            {
              "$ref": "#/definitions/StowageCodeType"
            }
          ],
          "description": "Kind of code: stowage, handling or segregation."
        },
        "name": {
          "type": "string",
          "description": "Text of the code in the language of the API user, or in English when no translation exists.",
          "example": "Protected from sources of heat."
        }
      },
      "description": "Stowage, handling or segregation code of the IMDG Code (7.1.5, 7.1.6 and 7.2.8).",
      "required": [
        "regulation"
      ]
    },
    "StowageCodeType": {
      "description": "Kind of code of the IMDG Code. `Stowage`: stowage code (SW). `Handling`: handling code (H). `Segregation`: segregation code (SG). New values may be added; clients must accept unknown values.",
      "type": "string",
      "enum": [
        "Stowage",
        "Handling",
        "Segregation"
      ]
    },
    "LocationRestrictionsResponse": {
      "type": "object",
      "properties": {
        "locationRestrictions": {
          "type": "array",
          "description": "Location restrictions found on the page.",
          "items": {
            "$ref": "#/definitions/LocationRestrictionResponseData"
          }
        }
      },
      "description": "Container for a page of location restrictions."
    },
    "LocationRestrictionsResponseOK": {
      "description": "Composite response combining a page of location restrictions with the paging data and the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/LocationRestrictionsResponse"
        },
        {
          "$ref": "#/definitions/PagedResult"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "Vessel": {
      "type": "object",
      "properties": {
        "accountCode": {
          "type": "string",
          "description": "Code of the customer account to which the vessel belongs, among the accounts in which the user can write. Required when creating and when updating the vessel: on update, another code moves the vessel to that account. Every customer account has a code, unique among the active customer accounts of its consultancy, so responses always include it, except for the vessel of a transport movement when the vessel belongs to an account that the user cannot read.",
          "example": "WP001"
        },
        "name": {
          "type": "string",
          "description": "Name of the vessel, unique among the vessels of its account.",
          "example": "MSC ANNA",
          "maxLength": 250
        },
        "imoNumber": {
          "type": "string",
          "description": "IMO number: seven digits, the last of which is a check digit.",
          "example": "9123453",
          "maxLength": 7
        },
        "callSign": {
          "type": "string",
          "description": "Radio call sign.",
          "example": "P3AB7",
          "maxLength": 10
        },
        "flagCountryCode": {
          "type": "string",
          "description": "ISO 3166-1 alpha-2 code of the flag country.",
          "example": "MT",
          "maxLength": 2
        },
        "officialNumber": {
          "type": "string",
          "description": "Official number given by the flag State.",
          "example": "12345-A",
          "maxLength": 20
        },
        "mmsi": {
          "type": "string",
          "description": "Maritime Mobile Service Identity, nine digits.",
          "example": "248123456",
          "maxLength": 9
        },
        "vesselType": {
          "allOf": [
            {
              "$ref": "#/definitions/VesselType"
            }
          ],
          "description": "Type of ship, relevant to the IMDG segregation tables."
        },
        "isPassengerShip": {
          "type": "boolean",
          "description": "True for a passenger ship whose number of passengers exceeds 25 or one passenger for every 3 m of overall length, whichever is the greater (IMDG 7.1.3.2): goods of stowage categories D and E are not accepted on board and goods of categories B and C only on deck. A passenger ship within that limit is recorded as false. When `maximumNumberOfPassengers` is given, the value is calculated from it and from `overallLength`, and the value sent is ignored.",
          "default": false
        },
        "maximumNumberOfPassengers": {
          "type": "integer",
          "description": "Maximum number of passengers of the passenger ship safety certificate of the vessel. With more than 12, the vessel is a passenger ship for the stowage of class 1 (IMDG 7.1.3.1); with more than 25, or more than one passenger for every 3 m of overall length if that number is greater, it is also one for classes 2 to 9 (IMDG 7.1.3.2) and `isPassengerShip` is set to true.",
          "example": 400,
          "minimum": 0,
          "maximum": 9999
        },
        "overallLength": {
          "type": "number",
          "description": "Overall length of the vessel in metres, with up to two decimals. Required when `maximumNumberOfPassengers` is greater than 25, to apply the limit of one passenger for every 3 m of overall length (IMDG 7.1.3.2).",
          "example": 180.5,
          "minimum": 0.01,
          "maximum": 500
        },
        "predefinedCarrierCode": {
          "type": "string",
          "description": "Code of the Carrier participant that operates the vessel. On update, when the field is omitted the current shipping line is kept, and an empty string removes it. In responses, the code is omitted when the shipping line belongs to an account that the user cannot read.",
          "example": "CAR001"
        },
        "documentOfComplianceEntries": {
          "type": "array",
          "description": "Classes that the vessel may carry and where, according to its Document of Compliance. On update, the list replaces the current one. Only with the Consolidation role: it is omitted from the responses, a request that includes it is rejected with 403 for users without that role, and an update from them keeps the saved entries.",
          "items": {
            "$ref": "#/definitions/VesselDocumentOfCompliance"
          }
        }
      },
      "required": [
        "accountCode",
        "name",
        "vesselType"
      ],
      "description": "Vessel of the account."
    },
    "IsoContainerTypesResponse": {
      "type": "object",
      "properties": {
        "isoContainerTypes": {
          "type": "array",
          "description": "ISO 6346 container size and type codes.",
          "items": {
            "$ref": "#/definitions/IsoContainerType"
          }
        }
      },
      "description": "Container for the ISO 6346 container size and type codes."
    },
    "IsoContainerTypesResponseOK": {
      "description": "Composite response combining the ISO 6346 size and type codes with the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/IsoContainerTypesResponse"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "IsoContainerType": {
      "type": "object",
      "properties": {
        "code": {
          "type": "string",
          "description": "ISO 6346 size and type code.",
          "example": "22G1",
          "maxLength": 4
        },
        "name": {
          "type": "string",
          "description": "Description of the size and type code.",
          "example": "General purpose container, 20 ft"
        },
        "nominalLength": {
          "type": "integer",
          "description": "Nominal length in feet: 20, 40 or 45.",
          "example": 20
        },
        "typeGroup": {
          "type": "string",
          "description": "Type group of the code: `GP` general purpose, `HC` high cube, `RF` reefer, `TK` tank, `OT` open top, `FR` flat rack, `PF` platform or `BU` bulk.",
          "example": "GP"
        },
        "isTank": {
          "type": "boolean",
          "description": "True when the code designates a tank container."
        },
        "isReefer": {
          "type": "boolean",
          "description": "True when the code designates a refrigerated container."
        },
        "isOpen": {
          "type": "boolean",
          "description": "True when the container is open (open top, flat rack or platform) rather than closed, which matters for the segregation between containers on board."
        }
      },
      "description": "Container size and type code of ISO 6346.",
      "required": [
        "nominalLength",
        "isTank",
        "isReefer",
        "isOpen"
      ]
    },
    "TransportMeansType": {
      "type": "string",
      "enum": [
        "Tractor",
        "RigidTruck",
        "SemiTrailer",
        "Trailer",
        "Van",
        "Wagon"
      ],
      "description": "Kind of vehicle or trailer. `SemiTrailer` and `Trailer` are trailers (`isTrailer` is true); the other kinds are motor vehicles or wagons. New values may be added; clients must accept unknown values."
    },
    "VesselDocumentOfCompliance": {
      "type": "object",
      "properties": {
        "classOrDivision": {
          "type": "string",
          "description": "Class or division that the vessel is allowed to carry according to its Document of Compliance (SOLAS II-2/19).",
          "example": "3"
        },
        "isAllowedOnDeck": {
          "type": "boolean",
          "description": "True when the class or division is allowed on deck.",
          "default": true
        },
        "isAllowedUnderDeck": {
          "type": "boolean",
          "description": "True when the class or division is allowed under deck.",
          "default": true
        },
        "remarks": {
          "type": "string",
          "description": "Conditions stated in the certificate.",
          "example": "Only in hold 3",
          "maxLength": 250
        },
        "validUntil": {
          "type": "string",
          "description": "Expiry date of the certificate, in ISO 8601 format.",
          "example": "2027-06-30",
          "format": "date"
        }
      },
      "required": [
        "classOrDivision"
      ],
      "description": "Entry of the Document of Compliance of a vessel for one class or division."
    },
    "VesselType": {
      "type": "string",
      "enum": [
        "Containership",
        "RoRo",
        "HatchlessContainership",
        "BargeCarrying",
        "GeneralCargo"
      ],
      "description": "Type of ship, which determines the IMDG segregation rules between transport equipment on board. New values may be added; clients must accept unknown values."
    },
    "LocationRestrictionResponseData": {
      "allOf": [
        {
          "$ref": "#/definitions/LocationRestriction"
        },
        {
          "type": "object",
          "properties": {
            "locationRestrictionId": {
              "type": "integer",
              "format": "int64",
              "description": "Identifier of the location restriction.",
              "example": 41
            }
          }
        }
      ],
      "description": "Location restriction with its identifier."
    },
    "TransportEquipmentListResponse": {
      "type": "object",
      "properties": {
        "transportEquipment": {
          "type": "array",
          "description": "Transport equipment found on the page.",
          "items": {
            "$ref": "#/definitions/TransportEquipmentSummary"
          }
        }
      },
      "description": "Container for a page of transport equipment."
    },
    "TransportEquipmentListResponseOK": {
      "description": "Composite response combining a page of transport equipment with the paging data and the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/TransportEquipmentListResponse"
        },
        {
          "$ref": "#/definitions/PagedResult"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "TransportEquipmentMovementsResponse": {
      "type": "object",
      "properties": {
        "transportEquipmentMovements": {
          "type": "array",
          "description": "Transport movements of the transport equipment, oldest first.",
          "items": {
            "$ref": "#/definitions/TransportEquipmentMovement"
          }
        }
      },
      "description": "Container for the transport movements of the transport equipment."
    },
    "TransportEquipmentMovementsResponseOK": {
      "description": "Composite response combining the movements of the transport equipment with the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/TransportEquipmentMovementsResponse"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "TransportEquipmentValidation": {
      "type": "object",
      "properties": {
        "transportEquipment": {
          "allOf": [
            {
              "$ref": "#/definitions/TransportEquipmentCreation"
            }
          ],
          "description": "Transport equipment to validate; it is not stored."
        },
        "contents": {
          "type": "array",
          "minItems": 1,
          "description": "Consignment items that would be loaded into the transport equipment.",
          "items": {
            "$ref": "#/definitions/TransportEquipmentContentItem"
          }
        }
      },
      "required": [
        "transportEquipment",
        "contents"
      ],
      "description": "Planned transport equipment and the items that would be loaded into it, validated without storing anything: segregation, packing and quantity limits. The vessel and the route are checked when the transport equipment is placed on a transport movement. Intended for warehouse systems that plan cartons and pallets before picking."
    },
    "TransportEquipmentSummary": {
      "type": "object",
      "properties": {
        "transportEquipmentId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the transport equipment.",
          "example": 1207
        },
        "equipmentType": {
          "allOf": [
            {
              "$ref": "#/definitions/TransportEquipmentType"
            }
          ],
          "description": "Kind of transport equipment."
        },
        "identification": {
          "type": "string",
          "description": "Container number, registration plate or ULD identifier.",
          "example": "MSCU1234566"
        },
        "isoContainerTypeCode": {
          "type": "string",
          "description": "ISO 6346 size and type code of the container.",
          "example": "22G1"
        },
        "loadState": {
          "allOf": [
            {
              "$ref": "#/definitions/TransportEquipmentLoadState"
            }
          ],
          "description": "Load state of the transport equipment."
        },
        "masterConsignmentNumber": {
          "type": "string",
          "description": "Number of the master consignment that owns the transport equipment, when there is one.",
          "example": "MC-2026-0007"
        },
        "consignmentCount": {
          "type": "integer",
          "description": "Number of consignments with items in the transport equipment.",
          "example": 2
        },
        "currentTransportMovementNumber": {
          "type": "string",
          "description": "Number of the current transport movement, when there is one.",
          "example": "PT 092S"
        },
        "totalGrossMass": {
          "type": "number",
          "description": "Total gross mass in kilograms.",
          "example": 12000
        },
        "isFumigated": {
          "type": "boolean",
          "description": "True when it is fumigated and not yet ventilated."
        },
        "isImplicit": {
          "type": "boolean",
          "description": "True when the application created it automatically from the IMDG or IATA data of a consignment and it has not been updated since; such equipment is listed only when `includeImplicit` is true."
        }
      },
      "description": "Transport equipment as listed in a search.",
      "required": [
        "transportEquipmentId",
        "consignmentCount",
        "isFumigated",
        "isImplicit"
      ]
    },
    "TransportEquipmentContentsResponse": {
      "type": "object",
      "properties": {
        "transportEquipmentContents": {
          "type": "array",
          "description": "Items loaded into the transport equipment.",
          "items": {
            "$ref": "#/definitions/TransportEquipmentContentItemResponse"
          }
        },
        "numberOfPackages": {
          "type": "integer",
          "description": "Packages loaded into the transport equipment, each counted once: the items of a mixed packing product share its packages, and the packages of an overpack count once per overpack.",
          "example": 40
        },
        "cargoGrossMass": {
          "type": "number",
          "description": "Gross mass in kilograms of those packages, without the tare mass of the transport equipment.",
          "example": 160
        }
      },
      "description": "Container for the content of the transport equipment."
    },
    "TransportEquipmentContentsResponseOK": {
      "description": "Composite response combining the content of the transport equipment with the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/TransportEquipmentContentsResponse"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "TransportEquipment": {
      "type": "object",
      "properties": {
        "workPlaceCode": {
          "type": "string",
          "description": "Code of the workplace of the transport equipment, among the workplaces in which the user can write, as in the consignment API. Required when creating or validating the transport equipment. On update it can be omitted; when given, it must be the code of the workplace of the transport equipment, because transport equipment does not change workplace.",
          "example": "WP001"
        },
        "equipmentType": {
          "allOf": [
            {
              "$ref": "#/definitions/TransportEquipmentType"
            }
          ],
          "description": "Kind of transport equipment."
        },
        "identification": {
          "type": "string",
          "description": "Identification, unique in the company: ISO 6346 container number (four letters, six digits and a check digit, validated for containers and tank containers), registration plate of a vehicle or trailer, wagon number or ULD identifier.",
          "example": "MSCU1234566",
          "maxLength": 20
        },
        "isoContainerTypeCode": {
          "type": "string",
          "description": "ISO 6346 size and type code of the container, from the ISO container type catalogue; a tank container requires a tank code.",
          "example": "22G1",
          "maxLength": 4
        },
        "sizeAndType": {
          "type": "string",
          "description": "Size and type as free text when no ISO 6346 code applies, as for vehicles and ULDs.",
          "example": "13.6 m curtain-sided trailer",
          "maxLength": 250
        },
        "loadState": {
          "allOf": [
            {
              "$ref": "#/definitions/TransportEquipmentLoadState"
            }
          ],
          "description": "Load state; `Full` when omitted."
        },
        "sealNumbers": {
          "type": "array",
          "description": "Seal numbers, printed on the manifest and on the packing certificate.",
          "example": [
            "S-1",
            "S-2"
          ],
          "items": {
            "type": "string"
          }
        },
        "tareMass": {
          "type": "number",
          "description": "Tare mass in kilograms.",
          "example": 2200
        },
        "totalGrossMass": {
          "type": "number",
          "description": "Total gross mass in kilograms (tare and cargo); it cannot be lower than the tare mass.",
          "example": 12000
        },
        "setTemperature": {
          "type": "number",
          "description": "Set temperature in degrees Celsius of a refrigerated container; only allowed when the ISO type is a reefer.",
          "example": -18
        },
        "parentTransportEquipmentId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the transport equipment that carries this one, such as the chassis of a container or the wagon of a swap body. When it is set or changed, it must be transport equipment of an account the user can read and of the chain of the workplace of this transport equipment: the workplace, the other workplaces of its company, the company and its group.",
          "example": 1190
        },
        "masterConsignmentId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the master consignment (booking) that owns the transport equipment. It may exist before any consignment is added; equipment shared by two bookings (part load) has one owner and is listed by the other booking through its consignments. When it is set or changed, the master consignment must be enabled, of a workplace of the company of the transport equipment that the user can write, and its status must allow changes; the one that is left must also allow changes.",
          "example": 97
        },
        "packingCertificate": {
          "allOf": [
            {
              "$ref": "#/definitions/PackingCertificateData"
            }
          ],
          "description": "Data of the container or vehicle packing certificate."
        },
        "fumigation": {
          "allOf": [
            {
              "$ref": "#/definitions/FumigationData"
            }
          ],
          "description": "Data of the fumigation (UN 3359)."
        },
        "coolant": {
          "allOf": [
            {
              "$ref": "#/definitions/CoolantData"
            }
          ],
          "description": "Coolant or conditioner carried."
        },
        "remarks": {
          "type": "string",
          "description": "Remarks printed with the transport equipment.",
          "example": "Residue only 250 kg - 500 kg",
          "maxLength": 1000
        }
      },
      "required": [
        "equipmentType",
        "identification"
      ],
      "description": "Transport equipment: container, tank container, vehicle, trailer, wagon, unit load device (ULD) or swap body."
    },
    "TransportEquipmentCreation": {
      "description": "Transport equipment to create or to validate (container, tank container, vehicle, trailer, wagon, unit load device or swap body): the same properties as in its update, with `workPlaceCode` required.",
      "allOf": [
        {
          "$ref": "#/definitions/TransportEquipment"
        },
        {
          "type": "object",
          "required": [
            "workPlaceCode"
          ]
        }
      ]
    },
    "TransportMovementOnBoardResponse": {
      "type": "object",
      "properties": {
        "transportMovementOnBoard": {
          "allOf": [
            {
              "$ref": "#/definitions/TransportMovementOnBoard"
            }
          ],
          "description": "Transport equipment and dangerous goods on board at the call."
        }
      },
      "description": "Container for what is on board at a call."
    },
    "TransportMovementOnBoardResponseOK": {
      "description": "Composite response combining what is on board at a call with the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/TransportMovementOnBoardResponse"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "TransportEquipmentMovement": {
      "type": "object",
      "properties": {
        "transportMovementId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the transport movement.",
          "example": 311
        },
        "transportMovementNumber": {
          "type": "string",
          "description": "Voyage, flight or journey number.",
          "example": "PT 092S"
        },
        "transportMode": {
          "allOf": [
            {
              "$ref": "#/definitions/TransportMode"
            }
          ],
          "description": "Mode of transport of the movement."
        },
        "vesselName": {
          "type": "string",
          "description": "Name of the vessel, for sea movements.",
          "example": "MSC ANNA"
        },
        "loadLocation": {
          "allOf": [
            {
              "$ref": "#/definitions/Location"
            }
          ],
          "description": "Location where the transport equipment was or will be loaded."
        },
        "departure": {
          "type": "string",
          "description": "Load date, in ISO 8601 format (UTC): the actual time of departure from the load call or, before departure, the estimated time of departure.",
          "example": "2026-11-02T10:00:00Z",
          "format": "date-time"
        },
        "dischargeLocation": {
          "allOf": [
            {
              "$ref": "#/definitions/Location"
            }
          ],
          "description": "Location where the transport equipment was or will be discharged."
        },
        "arrival": {
          "type": "string",
          "description": "Discharge date, in ISO 8601 format (UTC): the actual or estimated time of arrival at the discharge call.",
          "example": "2026-11-06T08:00:00Z",
          "format": "date-time"
        },
        "status": {
          "allOf": [
            {
              "$ref": "#/definitions/TransportMovementEquipmentStatus"
            }
          ],
          "description": "Status of the transport equipment in that movement."
        },
        "stowagePosition": {
          "type": "string",
          "description": "Stowage position (bay, row and tier), when known.",
          "example": "0310482"
        },
        "isOnDeck": {
          "type": "boolean",
          "x-nullable": true,
          "description": "True when stowed on deck, false when stowed under deck and null when unknown."
        }
      },
      "description": "Transport movement of a piece of transport equipment, showing when and where it was loaded and discharged.",
      "required": [
        "transportMovementId"
      ]
    },
    "TransportEquipmentContentItem": {
      "type": "object",
      "properties": {
        "consignmentId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the consignment.",
          "example": 48213
        },
        "consignmentItemCode": {
          "allOf": [
            {
              "$ref": "#/definitions/ConsignmentItemCode"
            }
          ],
          "description": "Code of the item in its consignment, the `consignmentItemCode` given to it when it was added. When omitted, every item of the consignment is loaded."
        },
        "numberOfPackages": {
          "type": "integer",
          "description": "Packages of the item to load into this transport equipment; all the packages of the item when omitted. The packages loaded into all the transport equipment cannot exceed the packages of the item.",
          "example": 4,
          "minimum": 1
        },
        "position": {
          "type": "string",
          "description": "Position inside the transport equipment, as free text.",
          "example": "A1",
          "maxLength": 50
        }
      },
      "required": [
        "consignmentId"
      ],
      "description": "Consignment item, or part of its packages, to load into transport equipment."
    },
    "TransportMovementEquipment": {
      "type": "object",
      "properties": {
        "transportEquipmentId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the transport equipment. On planning, it must be of a workplace of the company of the transport movement. When the equipment is updated in the movement, it must be the one in the path.",
          "example": 1207
        },
        "loadCallId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the call where the transport equipment is loaded; the first call when omitted.",
          "example": 901
        },
        "dischargeCallId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the call where the transport equipment is discharged, which must come after the load call; the last call when omitted.",
          "example": 903
        },
        "stowagePosition": {
          "type": "string",
          "description": "Stowage position, normally the bay, row and tier code supplied by the ship planner. It is never mandatory.",
          "example": "0310482",
          "maxLength": 20
        },
        "isOnDeck": {
          "type": "boolean",
          "x-nullable": true,
          "description": "True when stowed on deck, false when stowed under deck and null when unknown. It is given explicitly because the IMDG Code requires different separations on deck and under deck and the stowage position may be missing."
        },
        "sequence": {
          "type": "integer",
          "description": "Order of presentation in the manifest.",
          "example": 1
        },
        "status": {
          "allOf": [
            {
              "$ref": "#/definitions/TransportMovementEquipmentStatus"
            }
          ],
          "description": "Status to set, on update only: `Loaded` when the transport equipment has actually been loaded and `Discharged` when it has been unloaded."
        },
        "loadedOn": {
          "type": "string",
          "description": "Actual time at which the transport equipment was loaded, in ISO 8601 format (UTC). It does not change the actual time of arrival of the call.",
          "example": "2026-11-02T10:00:00Z",
          "format": "date-time"
        },
        "dischargedOn": {
          "type": "string",
          "description": "Actual time at which the transport equipment was discharged, in ISO 8601 format (UTC). It does not change the actual time of arrival of the call, which is the arrival of the means of transport.",
          "example": "2026-11-06T08:00:00Z",
          "format": "date-time"
        }
      },
      "required": [
        "transportEquipmentId"
      ],
      "description": "Transport equipment planned or loaded in a transport movement between a load call and a discharge call."
    },
    "TransportMovementResponse": {
      "description": "Envelope object carrying the transport movement data returned by the service under the transportMovementResponse property.",
      "type": "object",
      "properties": {
        "transportMovementResponse": {
          "$ref": "#/definitions/TransportMovementResponseData"
        }
      }
    },
    "TransportMovementResponseOK": {
      "description": "Composite response combining transport movement data with the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/TransportMovementResponse"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "TransportEquipmentContentItemResponse": {
      "type": "object",
      "properties": {
        "contentId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the loading of this item into the transport equipment, used to unload it.",
          "example": 5521
        },
        "consignmentId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the consignment.",
          "example": 48213
        },
        "consignmentNumber": {
          "type": "string",
          "description": "Number of the consignment.",
          "example": "445",
          "x-nullable": true
        },
        "consignmentItemCode": {
          "allOf": [
            {
              "$ref": "#/definitions/ConsignmentItemCode"
            }
          ],
          "description": "Code of the item in its consignment."
        },
        "masterConsignmentId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the master consignment of the consignment, when there is one.",
          "example": 97
        },
        "identificationNumber": {
          "type": "string",
          "description": "Identification number of the item. Identification number with its prefix: UN for UN numbers, NA for North American numbers (49 CFR only) and ID for ID 8000. Four digits, without spaces.",
          "example": "UN1263",
          "maxLength": 6,
          "pattern": "^(UN|NA|ID)[0-9]{4}$"
        },
        "properShippingName": {
          "type": "string",
          "description": "Proper shipping name, with the technical name in brackets when it is required.",
          "example": "PAINT"
        },
        "classOrDivision": {
          "type": "string",
          "description": "Class or division.",
          "example": "3"
        },
        "packingGroup": {
          "type": "string",
          "description": "Packing group `I`, `II` or `III`; empty when not applicable.",
          "example": "III"
        },
        "numberOfPackages": {
          "type": "integer",
          "description": "Packages of the item loaded into this transport equipment. The items of a mixed packing product repeat the packages and the gross mass of the mixed packing, and the items of an overpack are given per overpack: to total the load, use `numberOfPackages` and `cargoGrossMass` of the transport equipment, not the sum of the items.",
          "example": 4
        },
        "totalNumberOfPackages": {
          "type": "integer",
          "description": "Packages of the item in its consignment.",
          "example": 6
        },
        "netQuantity": {
          "type": "number",
          "description": "Net quantity loaded into this transport equipment, in `measureUnit`.",
          "example": 80
        },
        "grossQuantity": {
          "type": "number",
          "description": "Gross mass in kilograms of the packages of the item loaded into this transport equipment. The items of a mixed packing product repeat the packages and the gross mass of the mixed packing, and the items of an overpack are given per overpack: to total the load, use `numberOfPackages` and `cargoGrossMass` of the transport equipment, not the sum of the items.",
          "example": 88
        },
        "measureUnit": {
          "allOf": [
            {
              "$ref": "#/definitions/MeasureUnit"
            }
          ],
          "description": "Unit of `netQuantity`: kilograms or litres."
        },
        "marksAndNumbers": {
          "type": "string",
          "description": "Marks and numbers of the packages, printed on the IMO FAL Form 7 and on the consignment note.",
          "example": "PAINT-001/004"
        },
        "packageTypeCode": {
          "type": "string",
          "description": "Package type code of UNECE Recommendation 21 for the outer packaging, used in the electronic IMO FAL Form 7 and in the eFTI data set.",
          "example": "DR",
          "maxLength": 2
        },
        "position": {
          "type": "string",
          "description": "Position inside the transport equipment, as free text.",
          "example": "A1"
        }
      },
      "description": "Consignment item loaded into transport equipment.",
      "required": [
        "contentId",
        "consignmentId",
        "consignmentNumber",
        "numberOfPackages",
        "totalNumberOfPackages"
      ]
    },
    "TransportMovement": {
      "type": "object",
      "properties": {
        "workPlaceCode": {
          "type": "string",
          "description": "Code of the workplace of the transport movement, among the workplaces in which the user can write, as in the consignment API. Required when creating the transport movement. On update it can be omitted; when given, it must be the code of the workplace of the transport movement, because a transport movement does not change workplace.",
          "example": "WP001"
        },
        "transportMode": {
          "allOf": [
            {
              "$ref": "#/definitions/TransportMode"
            }
          ],
          "description": "Mode of transport, which decides the mandatory fields: sea requires `vesselId` and road requires `vehicleId`."
        },
        "transportMovementNumber": {
          "type": "string",
          "description": "Voyage, flight or journey number, unique in the company for the same mode and departure.",
          "example": "PT 092S",
          "maxLength": 50
        },
        "regulation": {
          "allOf": [
            {
              "$ref": "#/definitions/DangerousGoodsRegulation"
            }
          ],
          "description": "Regulation applied to the carriage. Allowed values per mode: `Adr` for road and rail, `Imdg` for sea and `Iata` for air; `Cfr49` is rejected with 400.\n\nThe checks of ADR for road (load threshold, vehicles, driver and ADR documents) apply only to road movements under `Adr`. The consignments keep the regulation of their own documentation.\n\nThe edition applied is always the current one, from the day it enters into force. Only the last result of each check is returned."
        },
        "vesselId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of a vessel; required for sea movements. When it is set or changed, it must be a vessel of an account that the user can read and of the chain of the workplace of the transport movement: the workplace, the other workplaces of its company, the company and its group.",
          "example": 12
        },
        "vesselMasterName": {
          "type": "string",
          "description": "Name of the master of the vessel for this voyage, box 18 of the IMO FAL Form 7 (name and signature); it is data of the voyage, not of the vessel.",
          "example": "J. Smith",
          "maxLength": 100
        },
        "predefinedShippingAgentCode": {
          "type": "string",
          "description": "Code of the participant that acts as shipping agent: the agent of the vessel at the port, box 19 of the IMO FAL Form 7 and contact of the electronic submission (data elements IMO0007 to IMO0012).",
          "example": "AGE001"
        },
        "aircraftType": {
          "type": "string",
          "description": "Aircraft type, for air movements.",
          "example": "A330-300",
          "maxLength": 20
        },
        "aircraftRegistration": {
          "type": "string",
          "description": "Aircraft registration, for air movements; printed in the header of the NOTOC.",
          "example": "EC-MXV",
          "maxLength": 10
        },
        "isCargoAircraftOnly": {
          "type": "boolean",
          "description": "For air movements, true when the aircraft carries cargo only, which allows packages restricted to cargo aircraft."
        },
        "declarant": {
          "allOf": [
            {
              "$ref": "#/definitions/TransportMovementDeclarant"
            }
          ],
          "description": "Declarant of the documents issued for the movement."
        },
        "vehicleId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the tractor or rigid truck; required for road movements. When it is set or changed, it must be of an account that the user can read and of the chain of the workplace of the transport movement: the workplace, the other workplaces of its company, the company and its group.",
          "example": 34
        },
        "trailerId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the trailer or semi-trailer, for road movements. When it is set or changed, it must be of an account that the user can read and of the chain of the workplace of the transport movement: the workplace, the other workplaces of its company, the company and its group.",
          "example": 35
        },
        "predefinedDriverCode": {
          "type": "string",
          "description": "Code of an existing participant of type Driver.",
          "example": "DRI001"
        },
        "predefinedCarrierCode": {
          "type": "string",
          "description": "Code of an existing participant of type Carrier that performs the movement (shipping line, airline or haulier).",
          "example": "CAR001"
        },
        "originLocationCode": {
          "type": "string",
          "description": "Code of the location of origin among the locations of the lists of the workplace of the transport movement, of its company and of its group (UN/LOCODE or code given by the account); it is always the location of the first call. It is required on creation when `calls` is omitted, in which case it becomes the first call; in any other case, when given, it must be the location of the first call. When updating, a code equal to that of the location already saved keeps the saved location, even if another list of the chain now has a different location with the same code.",
          "example": "ESVLC",
          "maxLength": 20
        },
        "destinationLocationCode": {
          "type": "string",
          "description": "Code of the location of destination among the locations of the lists of the workplace of the transport movement, of its company and of its group (UN/LOCODE or code given by the account); it is always the location of the last call. It is required on creation when `calls` is omitted, in which case it becomes the last call; in any other case, when given, it must be the location of the last call. When updating, a code equal to that of the location already saved keeps the saved location, even if another list of the chain now has a different location with the same code.",
          "example": "DEHAM",
          "maxLength": 20
        },
        "departure": {
          "type": "string",
          "description": "Planned departure from the origin, in ISO 8601 format (UTC).",
          "example": "2026-11-02T10:00:00Z",
          "format": "date-time"
        },
        "arrival": {
          "type": "string",
          "description": "Planned arrival at the destination, in ISO 8601 format (UTC).",
          "example": "2026-11-06T08:00:00Z",
          "format": "date-time"
        },
        "calls": {
          "type": "array",
          "description": "Calls in order. When omitted on creation, the origin and the destination become calls 1 and 2. On update, when present, the list replaces the itinerary: each call is matched by `callId`, or by `sequence` when `callId` is missing; calls that are not present are deleted only when no transport equipment is loaded or discharged at them, otherwise the update is rejected with 409. When present, it must hold at least two calls; an empty list is rejected on update and, on creation, is treated as if the calls were omitted.",
          "items": {
            "$ref": "#/definitions/TransportMovementCall"
          }
        },
        "remarks": {
          "type": "string",
          "description": "Remarks on the movement.",
          "example": "Berth confirmed",
          "maxLength": 1000
        }
      },
      "required": [
        "transportMode",
        "transportMovementNumber",
        "regulation"
      ],
      "description": "Transport movement: voyage (sea), flight (air) or journey (road or rail), with its calls."
    },
    "TransportMovementCreation": {
      "description": "Transport movement to create (voyage, flight or journey, with its calls): the same properties as in its update, with `workPlaceCode` required.",
      "allOf": [
        {
          "$ref": "#/definitions/TransportMovement"
        },
        {
          "type": "object",
          "required": [
            "workPlaceCode"
          ]
        }
      ]
    },
    "TransportEquipmentType": {
      "type": "string",
      "enum": [
        "Container",
        "TankContainer",
        "Vehicle",
        "Trailer",
        "Wagon",
        "UnitLoadDevice",
        "SwapBody"
      ],
      "description": "Kind of transport equipment. `Container` and `TankContainer` require an ISO 6346 identification; `Vehicle` and `Trailer` use the registration plate; `UnitLoadDevice` (air) uses the ULD identifier, such as AKE12345XX. New values may be added; clients must accept unknown values."
    },
    "TransportMode": {
      "type": "string",
      "enum": [
        "Sea",
        "Rail",
        "Road",
        "Air"
      ],
      "description": "Mode of transport, with the codes of UNECE Recommendation 19: Sea = 1, Rail = 2, Road = 3 and Air = 4. New values may be added; clients must accept unknown values."
    },
    "TransportEquipmentContent": {
      "type": "object",
      "properties": {
        "contents": {
          "type": "array",
          "minItems": 1,
          "description": "Consignment items to load into the transport equipment.",
          "items": {
            "$ref": "#/definitions/TransportEquipmentContentItem"
          }
        }
      },
      "required": [
        "contents"
      ],
      "description": "Consignment items to load into the transport equipment. An item may be split between several pieces of transport equipment, but the packages loaded into all of them cannot exceed the packages of the item. The segregation inside the transport equipment is checked: conditions are returned in `warnings`, and forbidden combinations are rejected with 400."
    },
    "TransportMovementsResponse": {
      "type": "object",
      "properties": {
        "transportMovements": {
          "type": "array",
          "description": "Transport movements found on the page.",
          "items": {
            "$ref": "#/definitions/TransportMovementSummary"
          }
        }
      },
      "description": "Container for a page of transport movements."
    },
    "TransportMovementsResponseOK": {
      "description": "Composite response combining a page of transport movements with the paging data and the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/TransportMovementsResponse"
        },
        {
          "$ref": "#/definitions/PagedResult"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "TransportEquipmentResponse": {
      "description": "Envelope object carrying the transport equipment data returned by the service under the transportEquipmentResponse property.",
      "type": "object",
      "properties": {
        "transportEquipmentResponse": {
          "$ref": "#/definitions/TransportEquipmentResponseData"
        }
      }
    },
    "TransportEquipmentResponseOK": {
      "description": "Composite response combining transport equipment data with the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/TransportEquipmentResponse"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "TransportMovementDeclarant": {
      "type": "object",
      "properties": {
        "company": {
          "type": "string",
          "description": "Company that signs the documents of the movement.",
          "example": "Consolidation Services Ltd",
          "maxLength": 250
        },
        "nameAndStatusOfDeclarant": {
          "type": "string",
          "description": "Name and position of the declarant.",
          "example": "A. Carrasco, dangerous goods safety adviser",
          "maxLength": 250
        },
        "place": {
          "type": "string",
          "description": "Place of the declaration.",
          "example": "Valencia",
          "maxLength": 250
        },
        "date": {
          "type": "string",
          "description": "Date of the declaration, in ISO 8601 format.",
          "example": "2026-11-02",
          "format": "date"
        }
      },
      "description": "Declarant of the documents issued for a transport movement, according to its regulation: the consolidated ADR transport document (road movements under `Adr`), the load sheet and the preparer of the NOTOC (air movements under `Iata`)."
    },
    "TransportEquipmentLoadState": {
      "type": "string",
      "enum": [
        "Full",
        "Empty",
        "Residue"
      ],
      "description": "Load state printed on the manifest. `Full`: loaded. `Empty`: empty and clean. `Residue`: empty but uncleaned, with residue of the last contents, so it still carries dangerous goods. New values may be added; clients must accept unknown values."
    },
    "CoolantData": {
      "type": "object",
      "properties": {
        "identificationNumber": {
          "type": "string",
          "description": "Identification number of the coolant or conditioner: `UN1845` (carbon dioxide, solid, dry ice), `UN1977` (nitrogen, refrigerated liquid) or `UN1951` (argon, refrigerated liquid).",
          "example": "UN1845",
          "maxLength": 6,
          "pattern": "^(UN|NA|ID)[0-9]{4}$",
          "enum": [
            "UN1845",
            "UN1977",
            "UN1951"
          ]
        },
        "quantity": {
          "type": "number",
          "description": "Quantity of coolant in kilograms.",
          "example": 25
        }
      },
      "description": "Coolant or conditioner with a risk of asphyxiation carried in the transport equipment (IMDG 5.5.3). The equipment is marked on the outside (IMDG 5.5.3.6), the packing certificate certifies condition .8 and, for air transport, dry ice is reported in the NOTOC."
    },
    "TransportMovementEquipmentStatus": {
      "type": "string",
      "enum": [
        "Planned",
        "Loaded",
        "Discharged",
        "Cancelled"
      ],
      "description": "Status of transport equipment within a transport movement. `Planned`: assigned to the movement, not yet loaded. `Loaded`: on board. `Discharged`: unloaded at the discharge call. `Cancelled`: removed from the movement. New values may be added; clients must accept unknown values."
    },
    "PackingCertificateData": {
      "type": "object",
      "properties": {
        "company": {
          "type": "string",
          "description": "Company that signs the container or vehicle packing certificate (IMDG 5.4.2.1).",
          "example": "Consolidation Services Ltd",
          "maxLength": 250
        },
        "nameAndStatusOfDeclarant": {
          "type": "string",
          "description": "Name and status (position) of the person who signs the certificate.",
          "example": "A. Carrasco, dangerous goods safety adviser",
          "maxLength": 250
        },
        "place": {
          "type": "string",
          "description": "Place of signature.",
          "example": "Valencia",
          "maxLength": 250
        },
        "date": {
          "type": "string",
          "description": "Date of signature, in ISO 8601 format.",
          "example": "2026-11-02",
          "format": "date"
        },
        "transportDocumentNumber": {
          "type": "string",
          "description": "Transport document or booking reference printed on the standalone certificate form, such as the booking number; required when the standalone certificate is generated.",
          "example": "BK-001",
          "maxLength": 50
        }
      },
      "description": "Container or vehicle packing certificate of the transport equipment (IMDG 5.4.2), one per piece of transport equipment, covering every consignment loaded in it. The nine conditions of IMDG 5.4.2.1 are fixed text of the form; condition .8 (coolant or conditioner) is certified when a `coolant` is declared."
    },
    "TransportMovementResponseData": {
      "type": "object",
      "properties": {
        "transportMovementId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the transport movement.",
          "example": 311
        },
        "workPlaceCode": {
          "type": "string",
          "description": "Code of the workplace of the transport movement.",
          "example": "WP001"
        },
        "transportMode": {
          "allOf": [
            {
              "$ref": "#/definitions/TransportMode"
            }
          ],
          "description": "Mode of transport."
        },
        "transportMovementNumber": {
          "type": "string",
          "description": "Voyage, flight or journey number.",
          "example": "PT 092S"
        },
        "status": {
          "allOf": [
            {
              "$ref": "#/definitions/TransportMovementStatus"
            }
          ],
          "description": "Status of the movement."
        },
        "regulation": {
          "allOf": [
            {
              "$ref": "#/definitions/DangerousGoodsRegulation"
            }
          ],
          "description": "Regulation of the movement."
        },
        "vessel": {
          "allOf": [
            {
              "$ref": "#/definitions/VesselResponseData"
            }
          ],
          "description": "Vessel, for sea movements."
        },
        "vesselMasterName": {
          "type": "string",
          "description": "Name of the master for this voyage (box 18 of the IMO FAL Form 7).",
          "example": "J. Smith"
        },
        "shippingAgent": {
          "allOf": [
            {
              "$ref": "#/definitions/ParticipantResponseData"
            }
          ],
          "description": "Shipping agent at the port (box 19 of the IMO FAL Form 7). Omitted when the participant belongs to an account that the user cannot read."
        },
        "aircraftType": {
          "type": "string",
          "description": "Aircraft type, for air movements.",
          "example": "A330-300"
        },
        "aircraftRegistration": {
          "type": "string",
          "description": "Aircraft registration, printed in the header of the NOTOC.",
          "example": "EC-MXV"
        },
        "isCargoAircraftOnly": {
          "type": "boolean",
          "description": "True when the aircraft carries cargo only."
        },
        "vehicle": {
          "allOf": [
            {
              "$ref": "#/definitions/TransportMeansResponseData"
            }
          ],
          "description": "Vehicle, for road movements."
        },
        "trailer": {
          "allOf": [
            {
              "$ref": "#/definitions/TransportMeansResponseData"
            }
          ],
          "description": "Trailer, for road movements."
        },
        "driver": {
          "allOf": [
            {
              "$ref": "#/definitions/ParticipantResponseData"
            }
          ],
          "description": "Driver of the vehicle. Omitted when the participant belongs to an account that the user cannot read."
        },
        "carrier": {
          "allOf": [
            {
              "$ref": "#/definitions/ParticipantResponseData"
            }
          ],
          "description": "Carrier that performs the movement. Omitted when the participant belongs to an account that the user cannot read."
        },
        "declarant": {
          "allOf": [
            {
              "$ref": "#/definitions/TransportMovementDeclarant"
            }
          ],
          "description": "Declarant of the documents issued for the movement."
        },
        "origin": {
          "allOf": [
            {
              "$ref": "#/definitions/Location"
            }
          ],
          "description": "Location of origin, the location of the first call."
        },
        "destination": {
          "allOf": [
            {
              "$ref": "#/definitions/Location"
            }
          ],
          "description": "Location of destination, the location of the last call."
        },
        "departure": {
          "type": "string",
          "description": "Planned departure, in ISO 8601 format (UTC).",
          "example": "2026-11-02T10:00:00Z",
          "format": "date-time"
        },
        "arrival": {
          "type": "string",
          "description": "Planned arrival, in ISO 8601 format (UTC).",
          "example": "2026-11-06T08:00:00Z",
          "format": "date-time"
        },
        "calls": {
          "type": "array",
          "description": "Calls in order.",
          "items": {
            "$ref": "#/definitions/TransportMovementCallResponse"
          }
        },
        "equipment": {
          "type": "array",
          "description": "Transport equipment in the movement.",
          "items": {
            "$ref": "#/definitions/TransportMovementEquipmentResponse"
          }
        },
        "lastSegregationCheck": {
          "allOf": [
            {
              "$ref": "#/definitions/SegregationCheckResponseData"
            }
          ],
          "description": "Most recent segregation check between the transport equipment on board."
        },
        "lastLoadThresholdCalculation": {
          "allOf": [
            {
              "$ref": "#/definitions/LoadThresholdCalculationResponseData"
            }
          ],
          "description": "Most recent load threshold calculation of the whole transport unit (ADR 1.1.3.6), for road movements under `Adr`."
        },
        "remarks": {
          "type": "string",
          "description": "Remarks on the movement.",
          "example": "Berth confirmed"
        },
        "updatedOn": {
          "type": "string",
          "description": "Date and time of the last update, in ISO 8601 format (UTC).",
          "example": "2026-11-02T10:00:00Z",
          "format": "date-time"
        }
      },
      "description": "Transport movement with its calls, its transport equipment and its latest checks.",
      "required": [
        "transportMovementId"
      ]
    },
    "TransportMovementCall": {
      "type": "object",
      "properties": {
        "callId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the call, only when a transport movement is updated: it identifies the existing call, so that its transport equipment keeps its load and discharge calls. Omit it for a new call.",
          "example": 902
        },
        "sequence": {
          "type": "integer",
          "description": "Order of the call in the itinerary, starting at 1; sequences must be consecutive. It is required in the calls of a movement; when a call is added on its own it may be omitted to add the call after the last one, and when a call is updated it cannot be changed.",
          "example": 2,
          "minimum": 1
        },
        "locationCode": {
          "type": "string",
          "description": "Code of the port, airport or terminal among the locations of the lists of the workplace of the transport movement, of its company and of its group: the UN/LOCODE or the code given by the account. When updating an existing call, a code equal to that of the location already saved keeps the saved location, even if another list of the chain now has a different location with the same code.",
          "example": "NLRTM",
          "maxLength": 20
        },
        "portCallReference": {
          "type": "string",
          "description": "Port call reference assigned by the port (data element IMO0153 of the IMO Compendium), required to submit the dangerous goods manifest to the maritime single window.",
          "example": "NLRTM26-001234",
          "maxLength": 30
        },
        "predefinedShippingAgentCode": {
          "type": "string",
          "description": "Code of the participant that acts as shipping agent at this call, box 19 of the IMO FAL Form 7; the shipping agent of the movement when omitted. In responses, it is omitted when the participant belongs to an account that the user cannot read.",
          "example": "AGE001"
        },
        "eta": {
          "type": "string",
          "description": "Estimated time of arrival, in ISO 8601 format (UTC). It cannot be earlier than the estimated time of departure from the previous call.",
          "example": "2026-11-02T10:00:00Z",
          "format": "date-time"
        },
        "etd": {
          "type": "string",
          "description": "Estimated time of departure, in ISO 8601 format (UTC). It cannot be earlier than the estimated time of arrival at the same call.",
          "example": "2026-11-02T18:00:00Z",
          "format": "date-time"
        },
        "ata": {
          "type": "string",
          "description": "Actual time of arrival, in ISO 8601 format (UTC).",
          "example": "2026-11-02T10:00:00Z",
          "format": "date-time"
        },
        "atd": {
          "type": "string",
          "description": "Actual time of departure, in ISO 8601 format (UTC).",
          "example": "2026-11-02T18:00:00Z",
          "format": "date-time"
        },
        "dangerousGoodsApplicationCutoff": {
          "type": "string",
          "description": "Deadline for the dangerous goods applications of this call, in ISO 8601 format (UTC). When omitted, it is calculated as 96 hours before the estimated time of arrival and recalculated when that time changes.",
          "example": "2026-10-29T10:00:00Z",
          "format": "date-time"
        },
        "finalDocumentationCutoff": {
          "type": "string",
          "description": "Deadline for the final documentation of this call, in ISO 8601 format (UTC). When omitted, it is calculated as 72 hours before the estimated time of arrival and recalculated when that time changes.",
          "example": "2026-10-30T10:00:00Z",
          "format": "date-time"
        },
        "isTranshipment": {
          "type": "boolean",
          "description": "True when the call is a transhipment port."
        },
        "remarks": {
          "type": "string",
          "description": "Remarks on the call.",
          "example": "Berth 12",
          "maxLength": 500
        }
      },
      "required": [
        "locationCode"
      ],
      "description": "Call of a transport movement at a port, airport or terminal, with its schedule and cut-off times, which belong to the call and not to the movement."
    },
    "TransportEquipmentResponseData": {
      "type": "object",
      "properties": {
        "transportEquipmentId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the transport equipment.",
          "example": 1207
        },
        "workPlaceCode": {
          "type": "string",
          "description": "Code of the workplace of the transport equipment.",
          "example": "WP001"
        },
        "equipmentType": {
          "allOf": [
            {
              "$ref": "#/definitions/TransportEquipmentType"
            }
          ],
          "description": "Kind of transport equipment."
        },
        "identification": {
          "type": "string",
          "description": "Identification: container number, registration plate or ULD identifier.",
          "example": "MSCU1234566"
        },
        "isoContainerTypeCode": {
          "type": "string",
          "description": "ISO 6346 size and type code of the container.",
          "example": "22G1"
        },
        "sizeAndType": {
          "type": "string",
          "description": "Size and type as free text.",
          "example": "13.6 m curtain-sided trailer"
        },
        "loadState": {
          "allOf": [
            {
              "$ref": "#/definitions/TransportEquipmentLoadState"
            }
          ],
          "description": "Load state of the transport equipment."
        },
        "sealNumbers": {
          "type": "array",
          "description": "Seal numbers of the transport equipment.",
          "example": [
            "S-1",
            "S-2"
          ],
          "items": {
            "type": "string"
          }
        },
        "tareMass": {
          "type": "number",
          "description": "Tare mass in kilograms.",
          "example": 2200
        },
        "totalGrossMass": {
          "type": "number",
          "description": "Total gross mass in kilograms.",
          "example": 12000
        },
        "setTemperature": {
          "type": "number",
          "description": "Set temperature in degrees Celsius.",
          "example": -18
        },
        "parentTransportEquipmentId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the transport equipment that carries this one.",
          "example": 1190
        },
        "masterConsignmentId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the master consignment that owns the transport equipment.",
          "example": 97
        },
        "masterConsignmentNumber": {
          "type": "string",
          "description": "Number of that master consignment.",
          "example": "MC-2026-0007"
        },
        "packingCertificate": {
          "allOf": [
            {
              "$ref": "#/definitions/PackingCertificateData"
            }
          ],
          "description": "Data of the container or vehicle packing certificate."
        },
        "fumigation": {
          "allOf": [
            {
              "$ref": "#/definitions/FumigationData"
            }
          ],
          "description": "Data of the fumigation."
        },
        "coolant": {
          "allOf": [
            {
              "$ref": "#/definitions/CoolantData"
            }
          ],
          "description": "Coolant or conditioner carried."
        },
        "isImplicit": {
          "type": "boolean",
          "description": "True when the application created the transport equipment automatically from the IMDG or IATA data of a consignment and it has not been updated since; it becomes false after any update."
        },
        "numberOfPackages": {
          "type": "integer",
          "description": "Packages loaded into the transport equipment, each counted once: the items of a mixed packing product share its packages, and the packages of an overpack count once per overpack.",
          "example": 40
        },
        "cargoGrossMass": {
          "type": "number",
          "description": "Gross mass in kilograms of those packages, without the tare mass of the transport equipment.",
          "example": 160
        },
        "contents": {
          "type": "array",
          "description": "Items loaded into the transport equipment.",
          "items": {
            "$ref": "#/definitions/TransportEquipmentContentItemResponse"
          }
        },
        "movementHistory": {
          "type": "array",
          "description": "Transport movements, oldest first.",
          "items": {
            "$ref": "#/definitions/TransportEquipmentMovement"
          }
        },
        "lastSegregationCheck": {
          "allOf": [
            {
              "$ref": "#/definitions/SegregationCheckResponseData"
            }
          ],
          "description": "Most recent segregation check inside the transport equipment."
        },
        "remarks": {
          "type": "string",
          "description": "Remarks printed with the transport equipment.",
          "example": "Residue only 250 kg - 500 kg"
        },
        "updatedOn": {
          "type": "string",
          "description": "Date and time of the last update, in ISO 8601 format (UTC).",
          "example": "2026-11-02T10:00:00Z",
          "format": "date-time"
        }
      },
      "description": "Transport equipment with its content, its transport movements and its latest segregation check.",
      "required": [
        "transportEquipmentId",
        "isImplicit"
      ]
    },
    "SegregationCheckResponseData": {
      "type": "object",
      "properties": {
        "checkId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the check.",
          "example": 6014
        },
        "scope": {
          "allOf": [
            {
              "$ref": "#/definitions/SegregationScope"
            }
          ],
          "description": "Scope of the check."
        },
        "transportEquipmentId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the transport equipment evaluated, for the equipment scope.",
          "example": 1207
        },
        "transportMovementId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the transport movement evaluated, for the movement scope.",
          "example": 311
        },
        "callId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the call whose on-board situation was evaluated, for the movement scope.",
          "example": 902
        },
        "regulation": {
          "allOf": [
            {
              "$ref": "#/definitions/DangerousGoodsRegulation"
            }
          ],
          "description": "Regulation whose segregation rules were applied: for the movement scope, the regulation of the transport movement; for the equipment scope, the main regulation of the check, `Imdg`, `Adr` or `Iata`. ADR mixed loading also applies to transport equipment under `Imdg` that travels by road under ADR, and its findings name ADR in `ruleReference`."
        },
        "regulationEdition": {
          "type": "string",
          "description": "Edition of the regulation applied by the application, such as IMDG 42-24 or ADR 2025.",
          "example": "IMDG 42-24"
        },
        "evaluatedOn": {
          "type": "string",
          "description": "Date and time of the check, in ISO 8601 format (UTC).",
          "example": "2026-11-02T10:00:00Z",
          "format": "date-time"
        },
        "verdict": {
          "allOf": [
            {
              "$ref": "#/definitions/SegregationVerdict"
            }
          ],
          "description": "Overall verdict: the most severe verdict of the findings, or `Allowed` when there are none."
        },
        "findings": {
          "type": "array",
          "description": "Pairs that are incompatible or allowed under conditions; empty when the verdict is `Allowed`.",
          "items": {
            "$ref": "#/definitions/SegregationFinding"
          }
        },
        "inputHash": {
          "type": "string",
          "description": "SHA-256, in hexadecimal, of the data evaluated by the check; it changes whenever any of them changes.",
          "example": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"
        },
        "isObsolete": {
          "type": "boolean",
          "description": "True when, after the check, the content, the stowage of the transport equipment on board (transport movement only), whether transport equipment without consignments under ADR is planned or loaded in a road transport movement under `Adr` (transport equipment only) or the dangerous goods data that the segregation rules evaluate changed; the approval, the loading and the documents require a new check.\n\nA new edition of the regulation does not make the check obsolete, but the approval of the master consignment and the packing certificate are refused when the rules in force give a more restrictive result than the check, which must then be repeated."
        }
      },
      "description": "Result of a segregation check. The most recent check of a piece of transport equipment or of a call is the current one, and it must not be obsolete. A successful response is always a complete evaluation under the regulation given in `regulation` and under the other regulations that also apply to the transport equipment, such as ADR mixed loading for transport equipment with consignments under IMDG that travels by road under ADR.\n\nThe request is rejected with 400 when the rules cannot be applied:\n\n- Transport movements by air or rail.\n- Pieces of transport equipment whose consignments are all under 49 CFR and that are not planned or loaded in a road transport movement under `Adr`. Such pieces of transport equipment do not need a check to approve their master consignment.\n\nTransport equipment on board whose stowage position is unknown gives `AllowedWithConditions` with that condition.",
      "required": [
        "checkId",
        "scope",
        "regulation",
        "evaluatedOn",
        "verdict",
        "isObsolete"
      ]
    },
    "TransportMovementCallResponse": {
      "allOf": [
        {
          "$ref": "#/definitions/TransportMovementCall"
        },
        {
          "type": "object",
          "properties": {
            "callId": {
              "type": "integer",
              "format": "int64",
              "description": "Identifier of the call.",
              "example": 902
            },
            "location": {
              "allOf": [
                {
                  "$ref": "#/definitions/Location"
                }
              ],
              "description": "Location of the call."
            },
            "loadedEquipmentCount": {
              "type": "integer",
              "description": "Number of pieces of transport equipment loaded at this call.",
              "example": 1
            },
            "dischargedEquipmentCount": {
              "type": "integer",
              "description": "Number of pieces of transport equipment discharged at this call.",
              "example": 0
            },
            "onBoardEquipmentCount": {
              "type": "integer",
              "description": "Number of pieces of transport equipment on board when the means of transport departs from this call.",
              "example": 1
            }
          }
        }
      ],
      "description": "Call of a transport movement with its location and the number of pieces of transport equipment loaded, discharged and on board."
    },
    "FumigationData": {
      "type": "object",
      "properties": {
        "fumigatedOn": {
          "type": "string",
          "description": "Date and time of the fumigation, in ISO 8601 format (UTC). When it is set and `ventilatedOn` is empty, the transport equipment is a fumigated cargo transport unit (UN 3359) and the manifest and its documents carry the statement of IMDG 5.5.2.4.1.",
          "example": "2026-11-02T10:00:00Z",
          "format": "date-time"
        },
        "fumigantName": {
          "type": "string",
          "description": "Name of the fumigant.",
          "example": "Phosphine",
          "maxLength": 100
        },
        "fumigantQuantity": {
          "type": "number",
          "description": "Quantity of fumigant used, in `fumigantMeasureUnit`.",
          "example": 2.5
        },
        "fumigantMeasureUnit": {
          "type": "string",
          "description": "Unit of the quantity of fumigant, as a code of UNECE Recommendation 20.",
          "example": "KGM",
          "maxLength": 3
        },
        "ventilatedOn": {
          "type": "string",
          "description": "Date and time at which the transport equipment was completely ventilated, in ISO 8601 format (UTC). Ventilated transport equipment no longer needs the fumigation document (IMDG 5.5.2.4.4).",
          "example": "2026-11-02T10:00:00Z",
          "format": "date-time"
        }
      },
      "description": "Data of fumigated transport equipment (IMDG 5.5.2). A fumigation date without a ventilation date requires the name and quantity of the fumigant."
    },
    "TransportMovementOnBoard": {
      "type": "object",
      "properties": {
        "callId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the call evaluated.",
          "example": 902
        },
        "location": {
          "allOf": [
            {
              "$ref": "#/definitions/Location"
            }
          ],
          "description": "Location of the call."
        },
        "manifestVariant": {
          "allOf": [
            {
              "$ref": "#/definitions/ManifestVariant"
            }
          ],
          "description": "Manifest selection applied."
        },
        "vesselName": {
          "type": "string",
          "description": "Name of the vessel, for sea movements.",
          "example": "MSC ANNA"
        },
        "vesselMasterName": {
          "type": "string",
          "description": "Name of the master of the vessel for the voyage.",
          "example": "J. Smith"
        },
        "remainingLocations": {
          "type": "array",
          "description": "Locations of the calls after this one, in order: the route printed on the manifest.",
          "items": {
            "$ref": "#/definitions/Location"
          }
        },
        "equipment": {
          "type": "array",
          "description": "Transport equipment selected, in order of presentation.",
          "items": {
            "$ref": "#/definitions/TransportMovementOnBoardEquipment"
          }
        }
      },
      "description": "Consolidated view of what is on board at a call: everything that stays on board when departing, including the transport equipment loaded at previous calls.",
      "required": [
        "callId"
      ]
    },
    "TransportMovementStatus": {
      "type": "string",
      "enum": [
        "Planned",
        "InProgress",
        "Completed",
        "Cancelled"
      ],
      "description": "Status of the transport movement. `Planned`: not departed. `InProgress`: departed from the first call. `Completed`: arrived at the last call. `Cancelled`: cancelled. New values may be added; clients must accept unknown values."
    },
    "TransportMovementSummary": {
      "type": "object",
      "properties": {
        "transportMovementId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the transport movement.",
          "example": 311
        },
        "transportMode": {
          "allOf": [
            {
              "$ref": "#/definitions/TransportMode"
            }
          ],
          "description": "Mode of transport."
        },
        "transportMovementNumber": {
          "type": "string",
          "description": "Voyage, flight or journey number.",
          "example": "PT 092S"
        },
        "regulation": {
          "allOf": [
            {
              "$ref": "#/definitions/DangerousGoodsRegulation"
            }
          ],
          "description": "Regulation of the transport movement."
        },
        "status": {
          "allOf": [
            {
              "$ref": "#/definitions/TransportMovementStatus"
            }
          ],
          "description": "Status of the movement."
        },
        "vesselName": {
          "type": "string",
          "description": "Name of the vessel, for sea movements.",
          "example": "MSC ANNA"
        },
        "vehicleRegistration": {
          "type": "string",
          "description": "Registration plate of the vehicle, for road movements.",
          "example": "1234 KLM"
        },
        "originLocationCode": {
          "type": "string",
          "description": "Code of the location of origin (UN/LOCODE or code given by the account).",
          "example": "ESVLC"
        },
        "destinationLocationCode": {
          "type": "string",
          "description": "Code of the location of destination (UN/LOCODE or code given by the account).",
          "example": "DEHAM"
        },
        "departure": {
          "type": "string",
          "description": "Planned departure, in ISO 8601 format (UTC).",
          "example": "2026-11-02T10:00:00Z",
          "format": "date-time"
        },
        "arrival": {
          "type": "string",
          "description": "Planned arrival, in ISO 8601 format (UTC).",
          "example": "2026-11-06T08:00:00Z",
          "format": "date-time"
        },
        "callCount": {
          "type": "integer",
          "description": "Number of calls.",
          "example": 3
        },
        "equipmentCount": {
          "type": "integer",
          "description": "Number of pieces of transport equipment in the movement.",
          "example": 1
        }
      },
      "description": "Transport movement as listed in a search.",
      "required": [
        "transportMovementId",
        "callCount",
        "equipmentCount"
      ]
    },
    "TransportMovementEquipmentResponse": {
      "type": "object",
      "properties": {
        "loadedOn": {
          "type": "string",
          "description": "Actual time at which the transport equipment was loaded, in ISO 8601 format (UTC).",
          "example": "2026-11-02T10:00:00Z",
          "format": "date-time"
        },
        "dischargedOn": {
          "type": "string",
          "description": "Actual time at which the transport equipment was discharged, in ISO 8601 format (UTC).",
          "example": "2026-11-06T08:00:00Z",
          "format": "date-time"
        },
        "transportEquipmentId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the transport equipment.",
          "example": 1207
        },
        "identification": {
          "type": "string",
          "description": "Identification of the transport equipment: container number, registration plate or ULD identifier.",
          "example": "MSCU1234566"
        },
        "equipmentType": {
          "allOf": [
            {
              "$ref": "#/definitions/TransportEquipmentType"
            }
          ],
          "description": "Kind of transport equipment."
        },
        "isoContainerTypeCode": {
          "type": "string",
          "description": "ISO 6346 size and type code of the container.",
          "example": "22G1"
        },
        "loadState": {
          "allOf": [
            {
              "$ref": "#/definitions/TransportEquipmentLoadState"
            }
          ],
          "description": "Load state of the transport equipment."
        },
        "status": {
          "allOf": [
            {
              "$ref": "#/definitions/TransportMovementEquipmentStatus"
            }
          ],
          "description": "Status of the transport equipment in the movement."
        },
        "loadCallId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the load call.",
          "example": 901
        },
        "loadLocationCode": {
          "type": "string",
          "description": "Code of the location of the load call (UN/LOCODE or code given by the account).",
          "example": "ESVLC"
        },
        "dischargeCallId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the discharge call.",
          "example": 903
        },
        "dischargeLocationCode": {
          "type": "string",
          "description": "Code of the location of the discharge call (UN/LOCODE or code given by the account).",
          "example": "DEHAM"
        },
        "stowagePosition": {
          "type": "string",
          "description": "Stowage position, normally the bay, row and tier code.",
          "example": "0310482"
        },
        "isOnDeck": {
          "type": "boolean",
          "x-nullable": true,
          "description": "True when stowed on deck, false when stowed under deck and null when unknown."
        },
        "sequence": {
          "type": "integer",
          "description": "Order of presentation in the manifest.",
          "example": 1
        },
        "masterConsignmentNumbers": {
          "type": "array",
          "description": "Numbers of the master consignments (bookings) with content in the transport equipment; more than one means a part load.",
          "example": [
            "MC-2026-0007"
          ],
          "items": {
            "type": "string"
          }
        },
        "fumigation": {
          "allOf": [
            {
              "$ref": "#/definitions/FumigationData"
            }
          ],
          "description": "Data of the fumigation, when the transport equipment is fumigated."
        },
        "coolant": {
          "allOf": [
            {
              "$ref": "#/definitions/CoolantData"
            }
          ],
          "description": "Coolant or conditioner carried, when there is one."
        }
      },
      "description": "Transport equipment in a transport movement, with its load and discharge calls.",
      "required": [
        "transportEquipmentId"
      ]
    },
    "LoadThresholdCalculationResponseData": {
      "type": "object",
      "properties": {
        "calculationId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the calculation.",
          "example": 733
        },
        "transportMovementId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the transport movement evaluated.",
          "example": 311
        },
        "transportEquipmentId": {
          "type": "integer",
          "format": "int64",
          "x-nullable": true,
          "description": "Identifier of the transport equipment evaluated; null when the whole transport unit (vehicle and trailer) was evaluated.",
          "example": 1207
        },
        "regulation": {
          "allOf": [
            {
              "$ref": "#/definitions/DangerousGoodsRegulation"
            }
          ],
          "description": "Regulation whose threshold was applied."
        },
        "regulationEdition": {
          "type": "string",
          "description": "Edition of the regulation applied by the application.",
          "example": "ADR 2025"
        },
        "evaluatedOn": {
          "type": "string",
          "description": "Date and time of the calculation, in ISO 8601 format (UTC).",
          "example": "2026-11-02T10:00:00Z",
          "format": "date-time"
        },
        "inputHash": {
          "type": "string",
          "description": "SHA-256, in hexadecimal, of the data evaluated by the calculation; it changes whenever any of them changes.",
          "example": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"
        },
        "isObsolete": {
          "type": "boolean",
          "description": "True when the content, the calls or the edition of the regulation applied to the movement changed after the calculation; the approval and the documents require a new calculation."
        },
        "adrData": {
          "allOf": [
            {
              "$ref": "#/definitions/LoadThresholdCalculationAdrData"
            }
          ],
          "description": "Calculation of ADR 1.1.3.6, for road movements under `Adr`."
        }
      },
      "description": "Result of the load threshold calculation of a transport movement. For road movements under `Adr` it is the calculation of ADR 1.1.3.6, in `adrData`.",
      "required": [
        "calculationId",
        "transportMovementId",
        "regulation",
        "evaluatedOn",
        "isObsolete"
      ]
    },
    "LoadThresholdCalculationAdrData": {
      "type": "object",
      "properties": {
        "totalPoints": {
          "type": "number",
          "description": "Weighted total of ADR 1.1.3.6.4: the quantities of transport category 1 multiplied by 50, those of category 1 listed in note a by 20, those of category 2 by 3 and those of category 3 by 1. The load is exempt when the total does not exceed 1 000.",
          "example": 120
        },
        "isExempt": {
          "type": "boolean",
          "description": "True when `totalPoints` does not exceed 1 000 and there are no goods of transport category 0."
        },
        "hasTransportCategory0": {
          "type": "boolean",
          "description": "True when goods of transport category 0 are present, which rules out the exemption whatever the quantity."
        },
        "categories": {
          "type": "array",
          "description": "Breakdown by transport category, with the figures that the transport document must show under ADR 5.4.1.1.1 (f), note 1.",
          "items": {
            "$ref": "#/definitions/LoadThresholdAdrCategoryShare"
          }
        },
        "thresholdCrossedByConsignmentId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the consignment with which the threshold is exceeded, in loading order.",
          "example": 48213
        },
        "consignments": {
          "type": "array",
          "description": "Breakdown by consignment.",
          "items": {
            "$ref": "#/definitions/LoadThresholdAdrConsignmentShare"
          }
        },
        "limitedQuantityGrossMass": {
          "type": "number",
          "description": "Total gross mass in kilograms of the packages carried in limited quantities (ADR 3.4). For the whole transport unit, the largest of its legs.",
          "example": 950
        },
        "requiresLimitedQuantityMarking": {
          "type": "boolean",
          "description": "True when the gross mass of limited quantities exceeds 8 000 kg in a transport unit with a maximum mass above 12 t that does not already display orange plates; the transport unit must then be marked according to ADR 3.4.13 and 3.4.15. For the whole transport unit, true when any of its legs requires it."
        },
        "mostLoadedLegCallId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the call of departure of the most loaded leg, whose figures are those of this object; empty for a single piece of transport equipment or a movement without calls.",
          "example": 5021
        },
        "legs": {
          "type": "array",
          "description": "Every leg of the whole transport unit, in the order of the calls: one per call of departure, from the departure of that call to the next one. Empty for a single piece of transport equipment or a movement without calls.",
          "items": {
            "$ref": "#/definitions/LoadThresholdAdrLeg"
          }
        }
      },
      "description": "Calculation of ADR 1.1.3.6 of a road movement under `Adr`. For the whole transport unit the figures are those of its most loaded leg, except the marking of limited quantities, required when any leg requires it, and their gross mass, the largest of the legs; `legs` gives every leg. A single piece of transport equipment is evaluated as a whole.",
      "required": [
        "totalPoints",
        "isExempt",
        "hasTransportCategory0",
        "limitedQuantityGrossMass",
        "requiresLimitedQuantityMarking"
      ]
    },
    "SegregationFinding": {
      "type": "object",
      "properties": {
        "leftConsignmentId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the consignment of the first item.",
          "example": 48213
        },
        "leftConsignmentItemCode": {
          "allOf": [
            {
              "$ref": "#/definitions/ConsignmentItemCode"
            }
          ],
          "description": "Code of the first item in its consignment."
        },
        "leftTransportEquipmentId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the transport equipment of the first item, for the movement scope.",
          "example": 1207
        },
        "rightConsignmentId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the consignment of the second item.",
          "example": 48214
        },
        "rightConsignmentItemCode": {
          "allOf": [
            {
              "$ref": "#/definitions/ConsignmentItemCode"
            }
          ],
          "description": "Code of the second item in its consignment."
        },
        "rightTransportEquipmentId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the transport equipment of the second item, for the movement scope.",
          "example": 1208
        },
        "ruleReference": {
          "type": "string",
          "description": "Rule applied, starting with its regulation and paragraph, such as `IMDG 7.2.4; IMDG 7.3.4.1`, `IMDG 7.2.7.1.4 (1)` or `ADR 7.5.2.1 (b)`; the number or letter in brackets is the note of the table that applies. Between transport equipment on board, the rule of the pair is followed by the separation table applied.",
          "example": "IMDG 7.2.4; IMDG 7.3.4.1"
        },
        "requiredSeparation": {
          "allOf": [
            {
              "$ref": "#/definitions/SegregationTerm"
            }
          ],
          "description": "Separation required by the rule."
        },
        "verdict": {
          "allOf": [
            {
              "$ref": "#/definitions/SegregationVerdict"
            }
          ],
          "description": "Verdict for the pair."
        },
        "remarks": {
          "type": "string",
          "description": "Regulatory text, condition or recommended action, such as moving the item to other transport equipment, in the language of the user.",
          "example": "Keep one container space between both containers."
        }
      },
      "description": "Pair of items that are incompatible or allowed under conditions, found by a segregation check.",
      "required": [
        "leftConsignmentId",
        "rightConsignmentId",
        "requiredSeparation",
        "verdict"
      ]
    },
    "SegregationScope": {
      "type": "string",
      "enum": [
        "Equipment",
        "Movement"
      ],
      "description": "Scope of a segregation check. `Equipment`: pairs of items loaded together in one piece of transport equipment, under the segregation of the IMDG Code, ADR mixed loading, which also applies to transport equipment that travels by road under ADR, whatever the regulation of its consignments, and the segregation of packages of the IATA Dangerous Goods Regulations. `Movement`: pairs of pieces of transport equipment on board at a call, under the regulation of the transport movement. New values may be added; clients must accept unknown values."
    },
    "SegregationTerm": {
      "type": "string",
      "enum": [
        "NotRequired",
        "AwayFrom",
        "SeparatedFrom",
        "SeparatedByCompleteCompartmentOrHold",
        "SeparatedLongitudinallyByInterveningCompleteCompartmentOrHold",
        "MixedLoadingProhibited",
        "NotStowedNextTo"
      ],
      "description": "Separation required between two items or two pieces of transport equipment. `NotRequired`: no separation is required. From `AwayFrom` to `SeparatedLongitudinallyByInterveningCompleteCompartmentOrHold`: the segregation terms of the IMDG Code, from the least to the most demanding. `MixedLoadingProhibited`: ADR mixed loading; with the verdict `Forbidden` the items cannot be loaded together in the same vehicle or container, and with `AllowedWithConditions` only under the note named in `ruleReference`. `NotStowedNextTo`: segregation of packages of the IATA Dangerous Goods Regulations; with the verdict `Forbidden` the items cannot travel in the same unit load device. New values may be added; clients must accept unknown values."
    },
    "SegregationVerdict": {
      "type": "string",
      "enum": [
        "Allowed",
        "AllowedWithConditions",
        "Forbidden"
      ],
      "description": "Outcome of a segregation check or of one finding. `Allowed`: no restriction applies. `AllowedWithConditions`: allowed as long as the stated condition holds, such as one container space of separation, closed containers or the planned stowage positions. `Forbidden`: the items or the transport equipment cannot travel together. New values may be added; clients must accept unknown values."
    },
    "ManifestVariant": {
      "type": "string",
      "enum": [
        "OnBoard",
        "Arrival",
        "Discharge",
        "Load",
        "Departure"
      ],
      "description": "Selection of transport equipment that the dangerous goods manifest lists for the selected call. `OnBoard`: everything on board when the vessel departs from the call (consolidated view, IMDG 5.4.3.1). `Arrival`: transport equipment on board on arrival. `Discharge`: transport equipment discharged at the call. `Load`: transport equipment loaded at the call. `Departure`: transport equipment on board on departure, the same selection as `OnBoard`, for the copy left with the port authority. New values may be added; clients must accept unknown values."
    },
    "TransportMovementOnBoardEquipment": {
      "allOf": [
        {
          "$ref": "#/definitions/TransportMovementEquipmentResponse"
        },
        {
          "type": "object",
          "properties": {
            "contents": {
              "type": "array",
              "description": "Dangerous goods lines of the transport equipment.",
              "items": {
                "$ref": "#/definitions/TransportMovementOnBoardDangerousGoodLine"
              }
            }
          }
        }
      ],
      "description": "Transport equipment on board with its dangerous goods lines."
    },
    "LoadThresholdAdrConsignmentShare": {
      "type": "object",
      "properties": {
        "consignmentId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the consignment.",
          "example": 48213
        },
        "consignmentNumber": {
          "type": "string",
          "description": "Number of the consignment.",
          "example": "445",
          "x-nullable": true
        },
        "shipperName": {
          "type": "string",
          "description": "Name of the shipper of the consignment.",
          "example": "Pinturas Levante S.L."
        },
        "points": {
          "type": "number",
          "description": "Weighted points contributed by the consignment.",
          "example": 60
        },
        "quantityKg": {
          "type": "number",
          "description": "Quantity in kilograms contributed by the consignment.",
          "example": 40
        },
        "quantityL": {
          "type": "number",
          "description": "Quantity in litres contributed by the consignment.",
          "example": 60
        },
        "hasCrossedThreshold": {
          "type": "boolean",
          "description": "True for the consignment with which the threshold of 1 000 is exceeded, in loading order."
        },
        "isRemovableForExemption": {
          "type": "boolean",
          "description": "True when removing this consignment alone would keep the load within the threshold."
        }
      },
      "description": "Breakdown of the ADR 1.1.3.6 calculation by consignment.",
      "required": [
        "consignmentId",
        "consignmentNumber",
        "points",
        "quantityKg",
        "quantityL",
        "hasCrossedThreshold",
        "isRemovableForExemption"
      ]
    },
    "LoadThresholdAdrLeg": {
      "type": "object",
      "properties": {
        "departureCallId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the call of departure of the leg.",
          "example": 5021
        },
        "sequence": {
          "type": "integer",
          "description": "Order of the call of departure in the itinerary, 1 = first.",
          "example": 1
        },
        "locationCode": {
          "type": "string",
          "description": "Code of the location of the call of departure; empty when the call was deleted after the calculation.",
          "example": "ESVLC"
        },
        "totalPoints": {
          "type": "number",
          "description": "Weighted total of ADR 1.1.3.6.4 of the goods on board in the leg.",
          "example": 120
        },
        "isExempt": {
          "type": "boolean",
          "description": "True when the leg is exempt under ADR 1.1.3.6."
        },
        "hasTransportCategory0": {
          "type": "boolean",
          "description": "True when goods of transport category 0 are on board in the leg."
        },
        "limitedQuantityGrossMass": {
          "type": "number",
          "description": "Gross mass in kilograms of the packages carried in limited quantities in the leg.",
          "example": 950
        },
        "requiresLimitedQuantityMarking": {
          "type": "boolean",
          "description": "True when the leg requires the marking of ADR 3.4.13."
        },
        "thresholdCrossedByConsignmentId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the consignment with which the threshold is exceeded in the leg, in loading order.",
          "example": 48213
        }
      },
      "description": "One leg of the whole transport unit in the calculation of ADR 1.1.3.6: the goods on board from the departure of a call to the next one.",
      "required": [
        "departureCallId",
        "sequence",
        "totalPoints",
        "isExempt",
        "hasTransportCategory0",
        "limitedQuantityGrossMass",
        "requiresLimitedQuantityMarking"
      ]
    },
    "TransportMovementOnBoardDangerousGoodLine": {
      "type": "object",
      "properties": {
        "consignmentId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the consignment.",
          "example": 48213
        },
        "consignmentNumber": {
          "type": "string",
          "description": "Number of the consignment.",
          "example": "445",
          "x-nullable": true
        },
        "masterConsignmentNumber": {
          "type": "string",
          "description": "Master consignment or booking number, the load reference of the manifest.",
          "example": "MC-2026-0007"
        },
        "consignmentItemCode": {
          "allOf": [
            {
              "$ref": "#/definitions/ConsignmentItemCode"
            }
          ],
          "description": "Code of the item in its consignment."
        },
        "identificationNumber": {
          "type": "string",
          "description": "Identification number with its prefix: UN for UN numbers, NA for North American numbers (49 CFR only) and ID for ID 8000. Four digits, without spaces.",
          "example": "UN1263",
          "maxLength": 6,
          "pattern": "^(UN|NA|ID)[0-9]{4}$"
        },
        "properShippingName": {
          "type": "string",
          "description": "Proper shipping name, with the technical name when it is required.",
          "example": "PAINT"
        },
        "classOrDivision": {
          "type": "string",
          "description": "Class or division.",
          "example": "3"
        },
        "subsidiaryHazards": {
          "type": "array",
          "description": "Subsidiary hazards of the entry.",
          "example": [
            "6.1"
          ],
          "items": {
            "type": "string"
          }
        },
        "packingGroup": {
          "type": "string",
          "description": "Packing group; empty when not applicable.",
          "example": "III"
        },
        "stowageCategory": {
          "type": "string",
          "description": "IMDG stowage category (7.1.3): `A` to `E` for packaged goods and `01` to `05` for goods of class 1.",
          "example": "A"
        },
        "stowageProvisions": {
          "type": "array",
          "description": "IMDG stowage codes (SW) of the entry.",
          "example": [
            "SW1"
          ],
          "items": {
            "type": "string"
          }
        },
        "handlingProvisions": {
          "type": "array",
          "description": "IMDG handling codes (H) of the entry.",
          "example": [
            "H1"
          ],
          "items": {
            "type": "string"
          }
        },
        "segregationProvisions": {
          "type": "array",
          "description": "IMDG segregation codes (SG) of the entry.",
          "example": [
            "SG35"
          ],
          "items": {
            "type": "string"
          }
        },
        "marksAndNumbers": {
          "type": "string",
          "description": "Marks and numbers of the packages (box 6 of the IMO FAL Form 7).",
          "example": "PAINT-001/004"
        },
        "numberOfPackages": {
          "type": "integer",
          "description": "Number of packages in this transport equipment. The items of a mixed packing product repeat the packages and the gross mass of the mixed packing, and the items of an overpack are given per overpack: to total the load, use `numberOfPackages` and `cargoGrossMass` of the transport equipment, not the sum of the items.",
          "example": 4
        },
        "packageTypeCode": {
          "type": "string",
          "description": "Package type code of UNECE Recommendation 21.",
          "example": "DR",
          "maxLength": 2
        },
        "netQuantity": {
          "type": "number",
          "description": "Net quantity in `measureUnit`.",
          "example": 80
        },
        "grossQuantity": {
          "type": "number",
          "description": "Gross mass in kilograms. The items of a mixed packing product repeat the packages and the gross mass of the mixed packing, and the items of an overpack are given per overpack: to total the load, use `numberOfPackages` and `cargoGrossMass` of the transport equipment, not the sum of the items.",
          "example": 88
        },
        "capacity": {
          "type": "number",
          "description": "Capacity in litres, for liquids and tanks.",
          "example": 80
        },
        "netQuantityExplosive": {
          "type": "number",
          "description": "Net explosive quantity in kilograms, for goods of class 1.",
          "example": 12.5
        },
        "measureUnit": {
          "allOf": [
            {
              "$ref": "#/definitions/MeasureUnit"
            }
          ],
          "description": "Unit of the net quantity."
        },
        "flashPoint": {
          "type": "number",
          "description": "Flash-point in degrees Celsius, closed-cup, when applicable (Class 3 and flammable liquids of other classes).",
          "example": 23
        },
        "emergencyScheduleFire": {
          "type": "string",
          "description": "EmS fire schedule of the entry.",
          "example": "F-E"
        },
        "emergencyScheduleSpillage": {
          "type": "string",
          "description": "EmS spillage schedule of the entry.",
          "example": "S-E"
        },
        "isMarinePollutant": {
          "type": "boolean",
          "description": "True when the entry is a marine pollutant; the manifest prints `P`."
        },
        "isLimitedQuantity": {
          "type": "boolean",
          "description": "True when carried as a limited quantity."
        },
        "emergencyResponseGuideCode": {
          "type": "string",
          "description": "ICAO emergency response drill code of the dangerous good for air transport (column M of table 4.2 of the IATA DGR).",
          "example": "3L"
        },
        "packageHomologationCode": {
          "type": "string",
          "description": "Code of the outer packaging, from its UN specification marking; null when the packaging has no homologation.",
          "example": "1A1"
        }
      },
      "description": "Dangerous goods line of transport equipment on board, as printed on the manifest.",
      "required": [
        "consignmentId",
        "consignmentNumber",
        "numberOfPackages",
        "isMarinePollutant",
        "isLimitedQuantity"
      ]
    },
    "LoadThresholdAdrCategoryShare": {
      "type": "object",
      "properties": {
        "transportCategory": {
          "allOf": [
            {
              "$ref": "#/definitions/AdrTransportCategory"
            }
          ],
          "description": "Transport category of the entry."
        },
        "multiplier": {
          "type": "integer",
          "x-nullable": true,
          "description": "Multiplying factor of ADR 1.1.3.6.4 applied to the category: 50, 20, 3 or 1; null for categories 0 and 4.",
          "example": 3
        },
        "quantityKg": {
          "type": "number",
          "description": "Net mass in kilograms of the goods of the category (solids, liquefied gases, refrigerated liquefied gases, dissolved gases and articles).",
          "example": 40
        },
        "quantityL": {
          "type": "number",
          "description": "Volume in litres of the goods of the category (liquids, and the water capacity of compressed gases, adsorbed gases and chemicals under pressure).",
          "example": 60
        },
        "points": {
          "type": "number",
          "description": "Quantity multiplied by the factor; the sum of all the entries is `totalPoints`.",
          "example": 120
        }
      },
      "description": "Breakdown of the ADR 1.1.3.6 calculation by transport category, one entry per category, including category 1 of note a with factor 20.",
      "required": [
        "transportCategory",
        "quantityKg",
        "quantityL",
        "points"
      ]
    },
    "AdrTransportCategory": {
      "type": "string",
      "enum": [
        "0",
        "1",
        "1a",
        "2",
        "3",
        "4"
      ],
      "description": "Transport category of ADR 1.1.3.6.3. `0`: exemption not allowed. `1`: multiplier 50. `1a`: substances of transport category 1 listed in note a of ADR 1.1.3.6.3 (UN 0081, 0082, 0084, 0241, 0331, 0332, 0482, 1005 and 1017), multiplier 20. `2`: multiplier 3. `3`: multiplier 1. `4`: unlimited, not counted. New values may be added; clients must accept unknown values."
    },
    "SegregationCheckResponse": {
      "description": "Envelope object carrying the segregation check data returned by the service under the segregationCheckResponse property.",
      "type": "object",
      "properties": {
        "segregationCheckResponse": {
          "$ref": "#/definitions/SegregationCheckResponseData"
        }
      }
    },
    "SegregationCheckResponseOK": {
      "description": "Composite response combining segregation check data with the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/SegregationCheckResponse"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "LoadThresholdCalculationResponse": {
      "description": "Envelope object carrying the load threshold calculation data returned by the service under the loadThresholdCalculationResponse property.",
      "type": "object",
      "properties": {
        "loadThresholdCalculationResponse": {
          "$ref": "#/definitions/LoadThresholdCalculationResponseData"
        }
      }
    },
    "LoadThresholdCalculationResponseOK": {
      "description": "Composite response combining load threshold calculation data with the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/LoadThresholdCalculationResponse"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "LoadThresholdCalculation": {
      "type": "object",
      "properties": {
        "transportEquipmentId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of a single piece of transport equipment of the movement to evaluate as a whole; when omitted, the whole transport unit (vehicle and trailer) is evaluated leg by leg.",
          "example": 1207
        }
      },
      "description": "Optional parameters of the load threshold calculation."
    },
    "SegregationCheck": {
      "type": "object",
      "properties": {
        "callId": {
          "type": "integer",
          "format": "int64",
          "description": "For the movement scope only: identifier of the call whose transport equipment on board is evaluated; the departure from the first call when omitted.",
          "example": 902
        }
      },
      "description": "Optional parameters of a segregation check."
    },
    "TransportMovementRestrictionsResponse": {
      "type": "object",
      "properties": {
        "transportMovementRestrictions": {
          "allOf": [
            {
              "$ref": "#/definitions/TransportMovementRestrictions"
            }
          ],
          "description": "Restrictions of the transport movement."
        }
      },
      "description": "Container for the restrictions of the transport movement."
    },
    "TransportMovementRestrictionsResponseOK": {
      "description": "Composite response combining the restrictions of the transport movement with the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/TransportMovementRestrictionsResponse"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "TransportMovementRestrictions": {
      "type": "object",
      "properties": {
        "transportMovementId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the transport movement evaluated.",
          "example": 311
        },
        "regulation": {
          "allOf": [
            {
              "$ref": "#/definitions/DangerousGoodsRegulation"
            }
          ],
          "description": "Regulation of the transport movement, the one whose rules were applied."
        },
        "evaluatedOn": {
          "type": "string",
          "description": "Date and time of the evaluation, in ISO 8601 format (UTC).",
          "example": "2026-11-02T10:00:00Z",
          "format": "date-time"
        },
        "isObsolete": {
          "type": "boolean",
          "description": "For road movements under `Adr`, true when there is no load threshold calculation (ADR 1.1.3.6) or when the content of the transport equipment, its calls of loading and discharge or the calls of the movement changed after it. In the other cases, true when the content, the stowage of the transport equipment or the dangerous goods data that the segregation rules evaluate changed after the last segregation check of the transport movement. In both cases the figures must be recalculated before they are relied upon."
        },
        "hasHighConsequenceDangerousGoods": {
          "type": "boolean",
          "description": "True when the load contains high consequence dangerous goods (ADR 1.10.3, IMDG 1.4.3 or IATA DGR 1.6, according to the regulation of the movement)."
        },
        "equipmentRestrictions": {
          "type": "array",
          "description": "Restrictions of every piece of transport equipment of the movement.",
          "items": {
            "$ref": "#/definitions/TransportEquipmentRestrictions"
          }
        },
        "locationRestrictions": {
          "type": "array",
          "description": "Restrictions of the locations of the route that apply to the goods on board.",
          "items": {
            "$ref": "#/definitions/TransportMovementLocationRestriction"
          }
        },
        "vesselRestrictions": {
          "type": "array",
          "description": "For sea movements only: the goods on board that the vessel does not allow, by its Document of Compliance, by the stowage category of the goods or by the limits for passenger ships.",
          "example": [
            "1.1"
          ],
          "items": {
            "type": "string"
          }
        },
        "remarks": {
          "type": "string",
          "description": "Remarks recorded by the planner in the movement.",
          "example": "Driver to call the terminal before arrival"
        },
        "adrData": {
          "allOf": [
            {
              "$ref": "#/definitions/TransportMovementRestrictionsAdrData"
            }
          ],
          "description": "Only for road movements under `Adr`: tunnel restriction code, ADR 1.1.3.6 totals, orange plates, safety equipment, ADR approval types of the vehicles and training of the driver."
        }
      },
      "description": "Restrictions of a transport movement as data: what the `TripRestrictionSheet` document prints, for warehouse and transport management systems. The data common to every regulation are at the top level; the data of ADR for road are in `adrData`.",
      "required": [
        "transportMovementId",
        "regulation",
        "evaluatedOn",
        "isObsolete",
        "hasHighConsequenceDangerousGoods"
      ]
    },
    "TransportMovementRestrictionsAdrData": {
      "type": "object",
      "properties": {
        "tunnelRestrictionCode": {
          "type": "string",
          "description": "Most restrictive tunnel restriction code of the whole load, the one that the transport document shows under ADR 5.4.1.1.1 (k).",
          "example": "D/E"
        },
        "requiredSafetyEquipment": {
          "type": "array",
          "description": "Equipment that the transport unit must carry according to ADR 8.1.5 for the classes on board (wheel chock, warning signs, eye rinsing liquid, shovel, drain seal and collecting container) and the fire-fighting equipment of ADR 8.1.4.",
          "example": [
            "Wheel chock"
          ],
          "items": {
            "type": "string"
          }
        },
        "requiresOrangePlates": {
          "type": "boolean",
          "description": "True when the load is not exempt under ADR 1.1.3.6: orange plates and equipment apply; the training required of the driver is given in `requiredDriverTraining`."
        },
        "totalPoints": {
          "type": "number",
          "description": "Total points of ADR 1.1.3.6 of the whole transport unit in its most loaded leg.",
          "example": 120
        },
        "isExempt": {
          "type": "boolean",
          "description": "True when the whole transport unit is exempt under ADR 1.1.3.6 in its most loaded leg."
        },
        "limitedQuantityGrossMass": {
          "type": "number",
          "description": "Gross mass in kilograms of the packages carried in limited quantities in the whole transport unit: the largest of its legs.",
          "example": 950
        },
        "requiresLimitedQuantityMarking": {
          "type": "boolean",
          "description": "True when the transport unit must be marked under ADR 3.4.13 in any of its legs."
        },
        "requiredVehicleApprovals": {
          "type": "array",
          "description": "ADR approval types (ADR 9.1.1.2) that the load requires of the vehicles of the transport unit, the minimum in each case: an FL vehicle may also be used where AT is required, and an EX/III vehicle where EX/II is required. A requirement of any leg of the movement applies. Empty when the load requires none.",
          "example": [
            "FL"
          ],
          "items": {
            "type": "string"
          }
        },
        "vehicleRestrictions": {
          "type": "array",
          "description": "Findings of the check of the vehicle and of the trailer against the load of each leg: the findings that reject a change of the transport movement, of its transport equipment or of their content, and the warnings for what cannot be verified. Empty when there is none.",
          "example": [
            "The carriage in tanks of UN 1203 requires an FL vehicle (ADR 7.4.1 and 7.4.2), and vehicle 1234ABC does not have that ADR approval type."
          ],
          "items": {
            "type": "string"
          }
        },
        "requiredDriverTraining": {
          "type": "array",
          "description": "Training that the ADR driver training certificate of the driver shall cover for this load (ADR 8.2.1): `Basic` (basic training), `Tanks` (specialization for carriage in tanks), `Class1` (specialization for Class 1) and `Class7` (specialization for Class 7). Empty when the load does not require the certificate.\n\nA requirement of any leg of the movement applies. The certificate recorded for the driver of the movement is checked against it in `driverRestrictions`.",
          "example": [
            "Basic",
            "Tanks"
          ],
          "items": {
            "type": "string",
            "enum": [
              "Basic",
              "Tanks",
              "Class1",
              "Class7"
            ]
          }
        },
        "driverTrainingNotes": {
          "type": "array",
          "description": "What could not be verified about the driver training certificate, such as the capacity of a tank without its degree of filling or the transport index of a package of Class 7, and the application of special provision S12. Empty when there is none.",
          "example": [
            "The capacity of the tanks of UN 1203 cannot be determined from the quantity, the density and the degree of filling: above 1 m³ the driver also requires the specialization for carriage in tanks (ADR 8.2.1.3)."
          ],
          "items": {
            "type": "string"
          }
        },
        "driverRestrictions": {
          "type": "array",
          "description": "Findings of the check of the ADR driver training certificate recorded for the driver of the movement against the load and the dates of the movement (ADR 8.2.1 and 8.2.2.8.2): an expired certificate or a missing specialization reject a change of the movement, and a driver without a recorded certificate only warns. Empty when there is no driver, the load does not require the certificate or the certificate covers it.",
          "example": [
            "The ADR driver training certificate of the driver John Smith (DRV01) does not include what the load requires: specialization for carriage in tanks (ADR 8.2.1.3)."
          ],
          "items": {
            "type": "string"
          }
        }
      },
      "description": "ADR data of the restrictions of a road movement under `Adr`: tunnel restriction code, ADR 1.1.3.6 totals, orange plates, safety equipment, ADR approval types of the vehicles and training and certificate of the driver.",
      "required": [
        "requiresOrangePlates"
      ]
    },
    "TransportMovementLocationRestriction": {
      "type": "object",
      "properties": {
        "locationCode": {
          "type": "string",
          "description": "Code of the location of the call (UN/LOCODE or code given by the account).",
          "example": "NLRTM",
          "maxLength": 20
        },
        "restrictionType": {
          "allOf": [
            {
              "$ref": "#/definitions/LocationRestrictionType"
            }
          ],
          "description": "Kind of restriction."
        },
        "classOrDivision": {
          "type": "string",
          "description": "Class or division to which the restriction applies; empty when it applies to every class.",
          "example": "3"
        },
        "identificationNumber": {
          "type": "string",
          "description": "Identification number to which the restriction applies, when it targets a single entry. Identification number with its prefix: UN for UN numbers, NA for North American numbers (49 CFR only) and ID for ID 8000. Four digits, without spaces.",
          "example": "UN1263",
          "maxLength": 6,
          "pattern": "^(UN|NA|ID)[0-9]{4}$"
        },
        "remarks": {
          "type": "string",
          "description": "Remarks recorded by the account for the restriction.",
          "example": "Permit requested 48 hours in advance"
        }
      },
      "description": "Restriction registered for a location of the route that affects the goods on board.",
      "required": [
        "restrictionType"
      ]
    },
    "TransportEquipmentRestrictions": {
      "type": "object",
      "properties": {
        "transportEquipmentId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the transport equipment (vehicle or trailer).",
          "example": 1207
        },
        "identification": {
          "type": "string",
          "description": "Registration plate or identification.",
          "example": "1234 KLM"
        },
        "hasHighConsequenceDangerousGoods": {
          "type": "boolean",
          "description": "True when the goods loaded include high consequence dangerous goods (ADR 1.10.3, IMDG 1.4.3 or IATA DGR 1.6, according to the regulation of the movement), so the security plan of that regulation applies."
        },
        "requiresTemperatureControl": {
          "type": "boolean",
          "description": "True when the goods loaded include goods stabilised by temperature control (ADR 7.1.7 or IMDG 7.3.7, according to the regulation of the movement)."
        },
        "adrData": {
          "allOf": [
            {
              "$ref": "#/definitions/TransportEquipmentRestrictionsAdrData"
            }
          ],
          "description": "Only for road movements under `Adr`: tunnel restriction code, limited quantities and ADR 1.1.3.6 exemption of the transport equipment."
        }
      },
      "description": "Restrictions derived from the goods loaded in one piece of transport equipment.",
      "required": [
        "transportEquipmentId",
        "hasHighConsequenceDangerousGoods",
        "requiresTemperatureControl"
      ]
    },
    "TransportEquipmentRestrictionsAdrData": {
      "type": "object",
      "properties": {
        "tunnelRestrictionCode": {
          "type": "string",
          "description": "Most restrictive tunnel restriction code of the goods loaded (ADR 8.6.4); empty when no goods are subject to tunnel restrictions.",
          "example": "D/E"
        },
        "limitedQuantityGrossMass": {
          "type": "number",
          "description": "Gross mass in kilograms of the packages carried in limited quantities.",
          "example": 950
        },
        "requiresLimitedQuantityMarking": {
          "type": "boolean",
          "description": "True when marking under ADR 3.4.13 is required (see `LoadThresholdCalculationAdrData`)."
        },
        "isExempt": {
          "type": "boolean",
          "description": "True when it is exempt under ADR 1.1.3.6 according to the current calculation."
        }
      },
      "description": "ADR data of the restrictions of one piece of transport equipment of a road movement under `Adr`."
    },
    "TransportEquipmentDocument": {
      "type": "object",
      "properties": {
        "documentTypes": {
          "type": "array",
          "minItems": 1,
          "description": "Documents to generate.",
          "items": {
            "$ref": "#/definitions/TransportEquipmentDocumentType"
          }
        },
        "documentFormat": {
          "allOf": [
            {
              "$ref": "#/definitions/DocumentFormat"
            }
          ],
          "description": "Output format: PDF, XLSX or DOCX."
        },
        "language": {
          "type": "string",
          "description": "ISO 639-1 code of the language of the documents: `en`, `es`, `fr`, `de`, `it`, `pt`, `nl`, `pl`, `ru`, `sv`, `no`, `cs`, `da`, `el`, `hu`, `sk`, `ro`, `fi` or `tr`; `en` when omitted.",
          "example": "en",
          "default": "en",
          "maxLength": 2
        }
      },
      "required": [
        "documentTypes",
        "documentFormat"
      ],
      "description": "Request for documents of transport equipment. The packing certificate is issued only when every check before the certificate is met:\n\n- The transport equipment has content.\n- Not all the consignments loaded are under IATA: the certificate does not apply to transport equipment that only carries air consignments.\n- Every consignment loaded is valid, has no packages left to load and has its transport document available.\n- The current segregation check of the transport equipment is up to date and does not forbid the load.\n\nOtherwise the request is rejected with one error for each check that is not met."
    },
    "TransportMovementDocument": {
      "type": "object",
      "properties": {
        "documentTypes": {
          "type": "array",
          "minItems": 1,
          "description": "Documents to generate.",
          "items": {
            "$ref": "#/definitions/TransportMovementDocumentType"
          }
        },
        "documentFormat": {
          "allOf": [
            {
              "$ref": "#/definitions/DocumentFormat"
            }
          ],
          "description": "Output format: PDF, XLSX or DOCX."
        },
        "language": {
          "type": "string",
          "description": "ISO 639-1 code of the language of the documents: `en`, `es`, `fr`, `de`, `it`, `pt`, `nl`, `pl`, `ru`, `sv`, `no`, `cs`, `da`, `el`, `hu`, `sk`, `ro`, `fi` or `tr`; `en` when omitted.",
          "example": "en",
          "default": "en",
          "maxLength": 2
        },
        "callId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the call to which the document refers (manifest and segregation report between transport equipment); the first call when omitted.",
          "example": 902
        },
        "manifestVariant": {
          "allOf": [
            {
              "$ref": "#/definitions/ManifestVariant"
            }
          ],
          "description": "Manifest selection; `OnBoard` when omitted."
        }
      },
      "required": [
        "documentTypes",
        "documentFormat"
      ],
      "description": "Request for documents of a transport movement. Manifests are versioned: a new issue supersedes the previous one. The manifest requires the name of the master and the shipping agent of the movement."
    },
    "TransportEquipmentDocumentType": {
      "type": "string",
      "enum": [
        "ContainerPackingCertificate",
        "MultimodalDangerousGoodsForm",
        "UnitSegregationReport",
        "UnitCheckList",
        "ConsolidationLabel"
      ],
      "description": "Documents issued for transport equipment.\n\n- `ContainerPackingCertificate`: container or vehicle packing certificate of IMDG 5.4.2.1 covering every consignment loaded, as a standalone form (reference, identification, the nine conditions, company, declarant, place, date and signature).\n- `MultimodalDangerousGoodsForm`: IMDG 5.4.5 form with several pieces of transport equipment.\n- `UnitSegregationReport`: result of the segregation check inside the transport equipment.\n- `UnitCheckList`: pre-signature checklist.\n- `ConsolidationLabel`: labels of the transport equipment.\n\nNew values may be added; clients must accept unknown values."
    },
    "TransportMovementDocumentType": {
      "type": "string",
      "enum": [
        "DangerousGoodsManifest",
        "InterUnitSegregationReport",
        "LoadThresholdReport",
        "TripRestrictionSheet",
        "ConsolidationLoadSheet",
        "Notoc",
        "ConsolidatedTransportDocument",
        "VehicleLoadCheckList"
      ],
      "description": "Documents issued for a transport movement.\n\n- `DangerousGoodsManifest`: IMO FAL Form 7 (IMDG 5.4.3.1) for the selected call and selection, with the master (box 18) and the shipping agent (box 19).\n- `InterUnitSegregationReport`: segregation between the transport equipment on board, under the regulation of the movement.\n- `LoadThresholdReport`: report of the load threshold calculation of ADR 1.1.3.6 for road movements under `Adr`, by transport category and by consignment.\n- `TripRestrictionSheet`: road movements under `Adr`; most restrictive tunnel code, high consequence dangerous goods and restrictions of the locations and of the vessel along the route.\n- `ConsolidationLoadSheet`: load sheet.\n- `Notoc`: notification to the captain of IATA DGR 9.5.1.1 (air).\n- `ConsolidatedTransportDocument`: road movements under `Adr`; one ADR 5.4.1 transport document for the whole load of the vehicle and trailer, listing every consignment (consignor, consignee and items with the data of ADR 5.4.1.1.1) and the ADR 1.1.3.6 totals by category. It requires a current load threshold calculation; the transport document of each consignment remains available.\n- `VehicleLoadCheckList`: road movements under `Adr`; load checklist of the vehicle with the checks of every consignment loaded, in the variant that the current load threshold calculation requires. It requires a current load threshold calculation and is refused for loads in tanks or in bulk; the checklist of each consignment remains available.\n\nNew values may be added; clients must accept unknown values."
    },
    "MasterConsignmentEventsResponse": {
      "type": "object",
      "properties": {
        "masterConsignmentEvents": {
          "type": "array",
          "description": "History of the master consignment, oldest first.",
          "items": {
            "$ref": "#/definitions/MasterConsignmentEvent"
          }
        }
      },
      "description": "Container for the history of the master consignment."
    },
    "MasterConsignmentEventsResponseOK": {
      "description": "Composite response combining the history of the master consignment with the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/MasterConsignmentEventsResponse"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "MasterConsignment": {
      "type": "object",
      "properties": {
        "consolidationType": {
          "allOf": [
            {
              "$ref": "#/definitions/ConsolidationType"
            }
          ],
          "description": "Kind of consolidation, which decides the fields that apply: sea consolidations use the vessel and ports, air consolidations the master air waybill and airports, and road consolidations the vehicles. It cannot change once the master consignment has consignments or its own transport equipment."
        },
        "regulation": {
          "allOf": [
            {
              "$ref": "#/definitions/DangerousGoodsRegulation"
            }
          ],
          "description": "Regulation of the master consignment, which must be the one of its type of consolidation: `Adr` for road consolidation, `Imdg` for sea and `Iata` for air; `Cfr49` is rejected with 400. It is the regulation of the documentation of the consignments: every consignment must have the regulation of the master consignment."
        },
        "masterConsignmentNumber": {
          "type": "string",
          "description": "Number of the master consignment, unique in the company; generated from the sequence of the company when omitted.",
          "example": "MC-2026-0007",
          "maxLength": 50
        },
        "bookingNumber": {
          "type": "string",
          "description": "Booking number given by the shipping line or airline; the main search key for sea consolidations.",
          "example": "NPDL-4471209",
          "maxLength": 50
        },
        "masterDocumentNumber": {
          "type": "string",
          "description": "Master document number: the 11-digit master air waybill number (three-digit airline prefix and eight digits, the last of which is a modulus 7 check digit) or the master bill of lading number.",
          "example": "020-12345675",
          "maxLength": 50
        },
        "description": {
          "type": "string",
          "description": "Free description of the master consignment.",
          "example": "Weekly LCL to Hamburg",
          "maxLength": 250
        },
        "date": {
          "type": "string",
          "description": "Date of the master consignment, in ISO 8601 format; today when omitted.",
          "example": "2026-11-02",
          "format": "date"
        },
        "workPlaceCode": {
          "type": "string",
          "description": "Code of the workplace that issues the master consignment, as in the consignment API; on creation, a workplace in which the user can write. On update it must be the workplace of the master consignment.",
          "example": "WP001"
        },
        "originLocationCode": {
          "type": "string",
          "description": "Code of the contractual port or airport of loading (POL) in the lists of the workplace given in `workPlaceCode` (on update, of the account of the master consignment), of its company and of its group (UN/LOCODE or code given by the account). When updating, a code equal to that of the location already saved keeps the saved location, even if another list of the chain now has a different location with the same code.",
          "example": "ESVLC",
          "maxLength": 20
        },
        "destinationLocationCode": {
          "type": "string",
          "description": "Code of the contractual port or airport of discharge (POD) in the lists of the workplace given in `workPlaceCode` (on update, of the account of the master consignment), of its company and of its group (UN/LOCODE or code given by the account). When updating, a code equal to that of the location already saved keeps the saved location, even if another list of the chain now has a different location with the same code.",
          "example": "DEHAM",
          "maxLength": 20
        },
        "finalDestinationLocationCode": {
          "type": "string",
          "description": "Code of the final place of delivery (FPOD) in the lists of the workplace given in `workPlaceCode` (on update, of the account of the master consignment), of its company and of its group, when it differs from the destination, such as an inland terminal. When updating, a code equal to that of the location already saved keeps the saved location, even if another list of the chain now has a different location with the same code.",
          "example": "DEDUI",
          "maxLength": 20
        },
        "nominatedTransportMovementId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the transport movement (vessel and voyage, flight or journey) nominated for the booking. It must be of a workplace of the company of the master consignment. The vessel and the route are checked when transport equipment is placed on that transport movement, not when consignments are added.",
          "example": 311
        },
        "isCargoAircraftOnly": {
          "type": "boolean",
          "x-nullable": true,
          "description": "For air consolidations only: true when the goods are restricted to cargo aircraft (IATA DGR packing instructions for cargo aircraft only); null for sea and road."
        },
        "parties": {
          "type": "array",
          "description": "Parties of the master consignment. The Consolidator is mandatory; the others are optional.",
          "items": {
            "$ref": "#/definitions/MasterConsignmentParty"
          }
        },
        "references": {
          "type": "array",
          "description": "References of the master consignment.",
          "items": {
            "$ref": "#/definitions/MasterConsignmentReference"
          }
        },
        "consignmentIds": {
          "type": "array",
          "description": "Identifiers of existing consignments of the account to add on creation, with the same rules as when consignments are added later.",
          "example": [
            48213
          ],
          "items": {
            "type": "integer",
            "format": "int64"
          }
        },
        "remarks": {
          "type": "string",
          "description": "Free remarks, such as information on a part load.",
          "example": "Part load shared with booking NPDL-4471210",
          "maxLength": 1000
        }
      },
      "required": [
        "consolidationType",
        "regulation",
        "workPlaceCode"
      ],
      "description": "Master consignment (booking, sea or air consolidation, road consolidation): the contractual consolidation of consignments under one master document. It has no content of its own: its content is its consignments."
    },
    "MasterConsignmentConsignments": {
      "type": "object",
      "properties": {
        "consignmentIds": {
          "type": "array",
          "minItems": 1,
          "description": "Identifiers of existing consignments of the account, or of the client accounts of its consultancy, to add.",
          "example": [
            48213,
            48214
          ],
          "items": {
            "type": "integer",
            "format": "int64"
          }
        }
      },
      "required": [
        "consignmentIds"
      ],
      "description": "Consignments to add to a master consignment. A consignment can belong to one master consignment only and must have the regulation of the master consignment. Air consolidations cannot mix paper and electronic shipper declarations."
    },
    "MasterConsignmentEvent": {
      "type": "object",
      "properties": {
        "eventId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the entry.",
          "example": 20118
        },
        "eventType": {
          "allOf": [
            {
              "$ref": "#/definitions/MasterConsignmentEventType"
            }
          ],
          "description": "Kind of entry."
        },
        "fromStatus": {
          "allOf": [
            {
              "$ref": "#/definitions/MasterConsignmentStatus"
            }
          ],
          "description": "Previous status, when the entry is a status transition."
        },
        "toStatus": {
          "allOf": [
            {
              "$ref": "#/definitions/MasterConsignmentStatus"
            }
          ],
          "description": "New status, when the entry is a status transition."
        },
        "occurredOn": {
          "type": "string",
          "description": "Date and time of the entry, in ISO 8601 format (UTC).",
          "example": "2026-11-02T10:00:00Z",
          "format": "date-time"
        },
        "performedBy": {
          "type": "string",
          "description": "Login of the user who produced the entry.",
          "example": "planner@example.com"
        },
        "consignmentId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the related consignment, when the entry concerns one.",
          "example": 48213
        },
        "transportEquipmentId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the related transport equipment, when the entry concerns one.",
          "example": 1207
        },
        "remarks": {
          "type": "string",
          "description": "Reason, information requested or comment.",
          "example": "Please provide the safety data sheet of item 2"
        },
        "dataSnapshotId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the data snapshot of the master consignment taken at `Submitted`, `PreApproved` and `FinalDocumentationSubmitted`; the final documentation is compared with the snapshot taken at `PreApproved`. Absent once the snapshot has been deleted at the end of its storage period.",
          "example": 3312
        }
      },
      "description": "Entry of the history of a master consignment. Entries are never modified.",
      "required": [
        "eventId",
        "eventType",
        "occurredOn"
      ]
    },
    "MasterConsignmentResponse": {
      "description": "Envelope object carrying the master consignment data returned by the service under the masterConsignmentResponse property.",
      "type": "object",
      "properties": {
        "masterConsignmentResponse": {
          "$ref": "#/definitions/MasterConsignmentResponseData"
        }
      }
    },
    "MasterConsignmentResponseOK": {
      "description": "Composite response combining master consignment data with the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/MasterConsignmentResponse"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "ConsolidationType": {
      "type": "string",
      "enum": [
        "Road",
        "SeaLcl",
        "SeaFcl",
        "Air"
      ],
      "description": "Kind of consolidation. `Road`: several consignments in one road vehicle or trailer. `SeaLcl`: several consignments consolidated in one container (less than container load). `SeaFcl`: full container load booking with one or more containers of a single shipper. `Air`: master air waybill consolidating house consignments. New values may be added; clients must accept unknown values."
    },
    "MasterConsignmentParty": {
      "type": "object",
      "properties": {
        "participantType": {
          "allOf": [
            {
              "$ref": "#/definitions/ParticipantType"
            }
          ],
          "description": "Role of the party in the master consignment: `Shipper`, `Consignee`, `Carrier`, `Consolidator`, `NotifyParty`, `FreightForwarder` or `ShippingAgent`; any other type is rejected with 400."
        },
        "predefinedParticipantCode": {
          "type": "string",
          "description": "Code of an existing participant of the account, as used in GET /participant/{participantCode}; give it or `onTheFlyParticipant`, not both.",
          "example": "CON001"
        },
        "onTheFlyParticipant": {
          "allOf": [
            {
              "$ref": "#/definitions/ParticipantOnTheFly"
            }
          ],
          "description": "Data of the participant when no predefined participant is used; the participant is created in the account with the role of the party."
        }
      },
      "required": [
        "participantType"
      ],
      "description": "Party of the master consignment. Exactly one of `predefinedParticipantCode` and `onTheFlyParticipant` is required."
    },
    "MasterConsignmentTransition": {
      "type": "object",
      "properties": {
        "remarks": {
          "type": "string",
          "description": "Reason for the transition, recorded in its event; mandatory for reject and requestInformation.",
          "example": "Missing safety data sheet",
          "maxLength": 1000
        }
      },
      "description": "Body of a workflow transition of a master consignment; send an empty object when no remarks are needed."
    },
    "MasterConsignmentDocument": {
      "type": "object",
      "properties": {
        "documentTypes": {
          "type": "array",
          "minItems": 1,
          "description": "Documents to generate; several types are merged into one document.",
          "items": {
            "$ref": "#/definitions/MasterConsignmentDocumentType"
          }
        },
        "documentFormat": {
          "allOf": [
            {
              "$ref": "#/definitions/DocumentFormat"
            }
          ],
          "description": "Output format: PDF, XLSX or DOCX."
        },
        "language": {
          "type": "string",
          "description": "ISO 639-1 code of the language of the documents: `en`, `es`, `fr`, `de`, `it`, `pt`, `nl`, `pl`, `ru`, `sv`, `no`, `cs`, `da`, `el`, `hu`, `sk`, `ro`, `fi` or `tr`; `en` when omitted.",
          "example": "en",
          "default": "en",
          "maxLength": 2
        }
      },
      "required": [
        "documentTypes",
        "documentFormat"
      ],
      "description": "Request for documents of a master consignment. Every issue is stored with its version."
    },
    "MasterConsignmentReference": {
      "type": "object",
      "properties": {
        "referenceType": {
          "allOf": [
            {
              "$ref": "#/definitions/MasterConsignmentReferenceType"
            }
          ],
          "description": "Kind of reference."
        },
        "value": {
          "type": "string",
          "description": "Value of the reference as printed on the documents.",
          "example": "DGA-445120",
          "maxLength": 100
        },
        "predefinedIssuerCode": {
          "type": "string",
          "description": "Code of the participant that issued the reference, such as the shipping line for the dangerous goods acceptance reference.",
          "example": "CAR001"
        },
        "date": {
          "type": "string",
          "description": "Date on which the reference was issued, in ISO 8601 format.",
          "example": "2026-11-02",
          "format": "date"
        }
      },
      "required": [
        "referenceType",
        "value"
      ],
      "description": "Reference of the master consignment, unique by type and value within it."
    },
    "MasterConsignmentEventType": {
      "type": "string",
      "enum": [
        "Created",
        "Submitted",
        "InformationRequested",
        "PreApproved",
        "FinalDocumentationSubmitted",
        "Approved",
        "Rejected",
        "Closed",
        "Cancelled",
        "Reopened",
        "ConsignmentAttached",
        "ConsignmentDetached",
        "EquipmentAssigned",
        "EquipmentReleased",
        "CommentAdded"
      ],
      "description": "Kind of entry of the history of a master consignment. Status transitions carry `fromStatus` and `toStatus`; `ConsignmentAttached` and `ConsignmentDetached` carry `consignmentId`; `EquipmentAssigned` and `EquipmentReleased` carry `transportEquipmentId`; `CommentAdded` records a free comment. New values may be added; clients must accept unknown values."
    },
    "MasterConsignmentStatus": {
      "type": "string",
      "enum": [
        "Draft",
        "Submitted",
        "InformationRequested",
        "PreApproved",
        "FinalDocumentationSubmitted",
        "Approved",
        "Rejected",
        "Closed",
        "Cancelled"
      ],
      "description": "Approval workflow status of the master consignment.\n\n- `Draft`: being prepared by the shipper or the consolidator.\n- `Submitted`: dangerous goods application sent to the dangerous goods department of the carrier.\n- `InformationRequested`: the department asks for more information.\n- `PreApproved`: preliminary approval; the transport equipment may be packed.\n- `FinalDocumentationSubmitted`: final documentation submitted, once the transport equipment is packed.\n- `Approved`: final approval; the cargo may be delivered to the terminal.\n- `Rejected`: rejected.\n- `Closed`: read-only after loading.\n- `Cancelled`: cancelled.\n\nNew values may be added; clients must accept unknown values."
    },
    "MasterConsignmentsResponse": {
      "type": "object",
      "properties": {
        "masterConsignments": {
          "type": "array",
          "description": "Master consignments found on the page.",
          "items": {
            "$ref": "#/definitions/MasterConsignmentSummary"
          }
        }
      },
      "description": "Container for a page of master consignments."
    },
    "MasterConsignmentsResponseOK": {
      "description": "Composite response combining a page of master consignments with the paging data and the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/MasterConsignmentsResponse"
        },
        {
          "$ref": "#/definitions/PagedResult"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "MasterConsignmentResponseData": {
      "type": "object",
      "properties": {
        "masterConsignmentId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the master consignment.",
          "example": 97
        },
        "status": {
          "allOf": [
            {
              "$ref": "#/definitions/MasterConsignmentStatus"
            }
          ],
          "description": "Current workflow status."
        },
        "consolidationType": {
          "allOf": [
            {
              "$ref": "#/definitions/ConsolidationType"
            }
          ],
          "description": "Kind of consolidation."
        },
        "regulation": {
          "allOf": [
            {
              "$ref": "#/definitions/DangerousGoodsRegulation"
            }
          ],
          "description": "Regulation of the master consignment."
        },
        "masterConsignmentNumber": {
          "type": "string",
          "description": "Number of the master consignment.",
          "example": "MC-2026-0007",
          "x-nullable": true
        },
        "bookingNumber": {
          "type": "string",
          "description": "Booking number of the carrier.",
          "example": "NPDL-4471209"
        },
        "masterDocumentNumber": {
          "type": "string",
          "description": "Master air waybill or master bill of lading number.",
          "example": "020-12345675"
        },
        "description": {
          "type": "string",
          "description": "Free description of the master consignment.",
          "example": "Weekly LCL to Hamburg"
        },
        "date": {
          "type": "string",
          "description": "Date of the master consignment, in ISO 8601 format.",
          "example": "2026-11-02",
          "format": "date"
        },
        "workPlaceCode": {
          "type": "string",
          "description": "Code of the workplace of the account that issues the master consignment.",
          "example": "WP001"
        },
        "origin": {
          "allOf": [
            {
              "$ref": "#/definitions/Location"
            }
          ],
          "description": "Contractual origin: port or airport of loading."
        },
        "destination": {
          "allOf": [
            {
              "$ref": "#/definitions/Location"
            }
          ],
          "description": "Contractual destination: port or airport of discharge."
        },
        "finalDestination": {
          "allOf": [
            {
              "$ref": "#/definitions/Location"
            }
          ],
          "description": "Final place of delivery, when it differs from the destination."
        },
        "nominatedTransportMovementId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the nominated transport movement.",
          "example": 311
        },
        "nominatedTransportMovementNumber": {
          "type": "string",
          "description": "Number of the nominated transport movement (voyage, flight or journey).",
          "example": "PT 092S"
        },
        "isCargoAircraftOnly": {
          "type": "boolean",
          "description": "For air consolidations, true when the goods are restricted to cargo aircraft."
        },
        "parties": {
          "type": "array",
          "description": "Parties of the master consignment with their data.",
          "items": {
            "$ref": "#/definitions/MasterConsignmentPartyResponse"
          },
          "x-nullable": true
        },
        "references": {
          "type": "array",
          "description": "References of the master consignment.",
          "items": {
            "$ref": "#/definitions/MasterConsignmentReference"
          },
          "x-nullable": true
        },
        "consignments": {
          "type": "array",
          "description": "House consignments of the master consignment.",
          "items": {
            "$ref": "#/definitions/HouseConsignmentSummary"
          },
          "x-nullable": true
        },
        "equipment": {
          "type": "array",
          "description": "Transport equipment owned by the master consignment and, marked with `isShared`, equipment of other bookings that carries items of its consignments.",
          "items": {
            "$ref": "#/definitions/MasterConsignmentEquipmentSummary"
          },
          "x-nullable": true
        },
        "remarks": {
          "type": "string",
          "description": "Free remarks on the master consignment.",
          "example": "Part load shared with booking NPDL-4471210"
        },
        "createdOn": {
          "type": "string",
          "description": "Date and time of creation, in ISO 8601 format (UTC).",
          "example": "2026-11-02T10:00:00Z",
          "format": "date-time"
        },
        "updatedOn": {
          "type": "string",
          "description": "Date and time of the last update, in ISO 8601 format (UTC).",
          "example": "2026-11-02T10:00:00Z",
          "format": "date-time"
        }
      },
      "description": "Master consignment with its parties, references, consignments and transport equipment.",
      "required": [
        "masterConsignmentId",
        "status",
        "consolidationType",
        "regulation",
        "masterConsignmentNumber",
        "date",
        "parties",
        "references",
        "consignments",
        "equipment"
      ]
    },
    "MasterConsignmentReferenceType": {
      "type": "string",
      "enum": [
        "ShipperReference",
        "FreightForwarderReference",
        "DangerousGoodsAcceptanceReference",
        "BillOfLading",
        "MasterAirWaybill",
        "TransportDocumentNumber",
        "Other"
      ],
      "description": "Kind of reference of a master consignment. `ShipperReference`: reference of the shipper. `FreightForwarderReference`: reference of the freight forwarder. `DangerousGoodsAcceptanceReference`: dangerous goods acceptance reference issued by the shipping line. `BillOfLading`, `MasterAirWaybill` and `TransportDocumentNumber`: numbers of transport documents. `Other`: any other reference. The booking number and the master document number are properties of the master consignment, not references. New values may be added; clients must accept unknown values."
    },
    "MasterConsignmentEquipmentSummary": {
      "type": "object",
      "properties": {
        "transportEquipmentId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the transport equipment.",
          "example": 1207
        },
        "identification": {
          "type": "string",
          "description": "Container number, registration plate or ULD identifier.",
          "example": "MSCU1234566",
          "x-nullable": true
        },
        "equipmentType": {
          "allOf": [
            {
              "$ref": "#/definitions/TransportEquipmentType"
            }
          ],
          "description": "Kind of transport equipment."
        },
        "loadState": {
          "allOf": [
            {
              "$ref": "#/definitions/TransportEquipmentLoadState"
            }
          ],
          "description": "Load state of the transport equipment."
        },
        "currentTransportMovementNumber": {
          "type": "string",
          "description": "Number of the transport movement in which it is currently planned or loaded, when there is one.",
          "example": "PT 092S"
        },
        "isShared": {
          "type": "boolean",
          "description": "True when another booking owns the transport equipment and it carries items of consignments of this master consignment (part load); false for equipment of this master consignment."
        },
        "ownerMasterConsignmentId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the master consignment (booking) that owns shared transport equipment.",
          "example": 96
        },
        "ownerMasterConsignmentNumber": {
          "type": "string",
          "description": "Number of the master consignment that owns shared transport equipment.",
          "example": "MC-2026-0006"
        }
      },
      "description": "Transport equipment owned by the master consignment, or shared with it because another booking owns it and it carries items of its consignments.",
      "required": [
        "transportEquipmentId",
        "identification",
        "equipmentType",
        "loadState",
        "isShared"
      ]
    },
    "MasterConsignmentDocumentType": {
      "type": "string",
      "enum": [
        "ConsolidationManifest",
        "ContainerList",
        "PackingList",
        "ConsolidationLoadSheet",
        "MasterDocumentData"
      ],
      "description": "Documents issued for a master consignment. `ConsolidationManifest`: manifest of the house consignments under the master document, marking the dangerous ones (IATA DGR 8.1.2.4 for air). `ContainerList`: transport equipment of the booking. `PackingList`: content of each piece of transport equipment. `ConsolidationLoadSheet`: load sheet grouped by shipper. `MasterDocumentData`: data sheet of the master air waybill or master bill of lading. New values may be added; clients must accept unknown values."
    },
    "MasterConsignmentSummary": {
      "type": "object",
      "properties": {
        "masterConsignmentId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the master consignment.",
          "example": 97
        },
        "masterConsignmentNumber": {
          "type": "string",
          "description": "Number of the master consignment.",
          "example": "MC-2026-0007",
          "x-nullable": true
        },
        "consolidationType": {
          "allOf": [
            {
              "$ref": "#/definitions/ConsolidationType"
            }
          ],
          "description": "Kind of consolidation."
        },
        "status": {
          "allOf": [
            {
              "$ref": "#/definitions/MasterConsignmentStatus"
            }
          ],
          "description": "Workflow status of the master consignment."
        },
        "regulation": {
          "allOf": [
            {
              "$ref": "#/definitions/DangerousGoodsRegulation"
            }
          ],
          "description": "Regulation of the master consignment."
        },
        "bookingNumber": {
          "type": "string",
          "description": "Booking number given by the shipping line or airline.",
          "example": "NPDL-4471209"
        },
        "masterDocumentNumber": {
          "type": "string",
          "description": "Master air waybill or master bill of lading number.",
          "example": "020-12345675"
        },
        "date": {
          "type": "string",
          "description": "Date of the master consignment, in ISO 8601 format.",
          "example": "2026-11-02",
          "format": "date"
        },
        "consolidatorName": {
          "type": "string",
          "description": "Name of the consolidator party.",
          "example": "Consolidation Services Ltd"
        },
        "consignmentCount": {
          "type": "integer",
          "description": "Number of consignments of the master consignment.",
          "example": 2
        },
        "equipmentCount": {
          "type": "integer",
          "description": "Number of pieces of transport equipment assigned.",
          "example": 3
        },
        "nominatedTransportMovementNumber": {
          "type": "string",
          "description": "Number of the nominated transport movement, when there is one.",
          "example": "PT 092S"
        }
      },
      "description": "Master consignment as listed in a search.",
      "required": [
        "masterConsignmentId",
        "masterConsignmentNumber",
        "consolidationType",
        "status",
        "regulation",
        "date",
        "consignmentCount",
        "equipmentCount"
      ]
    },
    "MasterConsignmentPartyResponse": {
      "type": "object",
      "properties": {
        "participantType": {
          "allOf": [
            {
              "$ref": "#/definitions/ParticipantType"
            }
          ],
          "description": "Role of the party."
        },
        "predefinedParticipantCode": {
          "type": "string",
          "description": "Code of the participant in the account.",
          "example": "CON001"
        },
        "participant": {
          "allOf": [
            {
              "$ref": "#/definitions/ParticipantResponseData"
            }
          ],
          "description": "Data of the participant: name, address, tax code and contact."
        }
      },
      "description": "Party of a master consignment with its data.",
      "required": [
        "participantType"
      ]
    },
    "HouseConsignmentSummary": {
      "type": "object",
      "properties": {
        "requesterAccountCode": {
          "type": "string",
          "description": "Code of the client account that owns the consignment when it was added through a consolidation request; empty for consignments of the consolidator account.",
          "example": "WP001"
        },
        "consolidationRequestId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the consolidation request through which the consignment was added, when there is one.",
          "example": 88
        },
        "consignmentId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the consignment.",
          "example": 48213
        },
        "consignmentNumber": {
          "type": "string",
          "description": "Number of the consignment, from the sequence of the account.",
          "example": "445",
          "x-nullable": true
        },
        "regulation": {
          "allOf": [
            {
              "$ref": "#/definitions/DangerousGoodsRegulation"
            }
          ],
          "description": "Regulation of the consignment."
        },
        "date": {
          "type": "string",
          "description": "Issue date of the consignment, in ISO 8601 format.",
          "example": "2026-11-02",
          "format": "date"
        },
        "shipperName": {
          "type": "string",
          "description": "Name of the shipper (consignor) of the consignment.",
          "example": "Pinturas Levante S.L."
        },
        "consigneeName": {
          "type": "string",
          "description": "Name of the first consignee of the consignment.",
          "example": "Farben Nord GmbH"
        },
        "isValid": {
          "type": "boolean",
          "description": "Regulatory validity of the consignment according to the checks of the application; invalid consignments cannot appear in the manifests."
        },
        "hasElectronicDeclaration": {
          "type": "boolean",
          "x-nullable": true,
          "description": "For air only: true when the shipper declaration is electronic (IATA XSDG), false when it is on paper and null when unknown. An air consolidation cannot mix both."
        },
        "houseDocumentNumber": {
          "type": "string",
          "description": "House air waybill or house bill of lading number of the consignment, when there is one.",
          "example": "HWB-2026-0031"
        },
        "equipmentIdentifications": {
          "type": "array",
          "description": "Identifications of the transport equipment in which the consignment is loaded, fully or partially.",
          "example": [
            "MSCU1234566"
          ],
          "items": {
            "type": "string"
          },
          "x-nullable": true
        }
      },
      "description": "Consignment of a master consignment, as listed in the master consignment.",
      "required": [
        "consignmentId",
        "consignmentNumber",
        "regulation",
        "isValid",
        "equipmentIdentifications"
      ]
    },
    "ConsignmentNoteAttachment": {
      "type": "object",
      "properties": {
        "attachmentType": {
          "allOf": [
            {
              "$ref": "#/definitions/ConsignmentNoteAttachmentType"
            }
          ],
          "description": "Kind of attachment."
        },
        "fileName": {
          "type": "string",
          "description": "Name of the file shown to the driver and the consignee. When omitted, the application generates one.",
          "example": "delivery-note.pdf",
          "maxLength": 200
        },
        "contentType": {
          "type": "string",
          "description": "MIME type of the content; when given, it must match the type detected in the content.",
          "example": "application/pdf",
          "maxLength": 60
        },
        "base64EncodedContent": {
          "type": "string",
          "description": "Content of the file, base 64 encoded; not needed for `TransportDocument`, which the application generates. Maximum 6 MB once decoded; only PDF, JPEG and PNG content is accepted, and anything else is rejected with 400."
        },
        "isCarriedWithNote": {
          "type": "boolean",
          "description": "True to attach the file to the electronic note so that the driver carries it; true when omitted.",
          "default": true
        }
      },
      "required": [
        "attachmentType"
      ],
      "description": "Attachment of a consignment note."
    },
    "ConsignmentNoteAttachmentType": {
      "type": "string",
      "enum": [
        "TransportDocument",
        "DeliveryNote",
        "Invoice",
        "Certificate",
        "Deca",
        "Other"
      ],
      "description": "Kind of attachment.\n\n- `TransportDocument`: transport document of the regulation of the consignment (ADR 5.4.1 for ADR) generated by the application and attached to the electronic note, so that the driver carries it in the same application.\n- `DeliveryNote` and `Invoice`: commercial documents.\n- `Certificate`: cleaning or tank certificates.\n- `Deca`: Spain only; Spanish electronic administrative control document generated by the application, with a file name that always includes the number of the note and the version.\n- `Other`: any other document.\n\nNew values may be added; clients must accept unknown values."
    },
    "ConsignmentNoteCoverageResponse": {
      "type": "object",
      "properties": {
        "consignmentNoteCoverage": {
          "allOf": [
            {
              "$ref": "#/definitions/ConsignmentNoteCoverage"
            }
          ],
          "description": "Coverage of the route."
        }
      },
      "description": "Container for the coverage of the route by the eCMR Protocol."
    },
    "ConsignmentNoteCoverageResponseOK": {
      "description": "Composite response combining the coverage of the route by the eCMR Protocol with the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/ConsignmentNoteCoverageResponse"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "ConsignmentNoteDocument": {
      "type": "object",
      "properties": {
        "documentType": {
          "allOf": [
            {
              "$ref": "#/definitions/ConsignmentNoteDocumentType"
            }
          ],
          "description": "Document to return."
        },
        "language": {
          "type": "string",
          "description": "ISO 639-1 code of the language of the documents that the application generates (`DraftPdf` and `TransportDocument`); the language of the note when omitted.",
          "example": "en",
          "maxLength": 2
        }
      },
      "required": [
        "documentType"
      ],
      "description": "Request for a document of a consignment note. `SignedPdf` is available once the delivery has been notified, and later requests return the same document."
    },
    "ConsignmentNoteSharing": {
      "type": "object",
      "properties": {
        "contactTypes": {
          "type": "array",
          "description": "Kinds of contacts of the note to send it to; every contact with `receivesSignedCopy` true when omitted.",
          "items": {
            "$ref": "#/definitions/ConsignmentNoteContactType"
          }
        },
        "emails": {
          "type": "array",
          "description": "Additional email addresses; every address must be valid, and at most 10 addresses receive the note by email, the contacts of the note included.",
          "example": [
            "logistics@example.com"
          ],
          "maxItems": 10,
          "items": {
            "type": "string",
            "format": "email"
          }
        },
        "phones": {
          "type": "array",
          "description": "Additional mobile phones in international format (SMS or messaging).",
          "example": [
            "+34 600 555 666"
          ],
          "items": {
            "type": "string"
          }
        },
        "message": {
          "type": "string",
          "description": "Optional message included in the notification.",
          "example": "Signed copy of your delivery",
          "maxLength": 500
        },
        "includeSignedPdf": {
          "type": "boolean",
          "description": "True to attach or link the signed PDF; false to send only the tracking link. True when omitted.",
          "default": true
        }
      },
      "description": "Optional distribution of the note to its contacts and to additional recipients."
    },
    "ConsignmentNoteCancellation": {
      "description": "Reason of the cancellation of a consignment note; every property is optional.",
      "type": "object",
      "properties": {
        "remarks": {
          "type": "string",
          "description": "Reason of the cancellation, recorded with the `Cancelled` event and sent with the cancellation of the electronic note.",
          "example": "Load held at customs",
          "maxLength": 1000
        }
      }
    },
    "ConsignmentNoteChange": {
      "type": "object",
      "properties": {
        "changeType": {
          "allOf": [
            {
              "$ref": "#/definitions/ConsignmentNoteChangeType"
            }
          ],
          "description": "Kind of change."
        },
        "carrierSequence": {
          "type": "integer",
          "description": "Sequence of the carrier affected by `PlateChange`, `DriverChange` or `CarrierTransfer`; the contractual carrier when omitted.",
          "example": 1,
          "minimum": 1
        },
        "vehicleRegistration": {
          "type": "string",
          "description": "New registration plate of the vehicle, for `PlateChange`.",
          "example": "5555 KKK",
          "maxLength": 20
        },
        "vehicleRegistrationCountryCode": {
          "type": "string",
          "description": "ISO 3166-1 alpha-2 code of the country of the new vehicle plate.",
          "example": "ES",
          "maxLength": 2
        },
        "trailerRegistration": {
          "type": "string",
          "description": "New registration plate of the trailer, for `PlateChange`.",
          "example": "R-9999-BBC",
          "maxLength": 20
        },
        "trailerRegistrationCountryCode": {
          "type": "string",
          "description": "ISO 3166-1 alpha-2 code of the country of the new trailer plate.",
          "example": "ES",
          "maxLength": 2
        },
        "predefinedDriverCode": {
          "type": "string",
          "description": "Code of the new Driver participant, for `DriverChange`.",
          "example": "DRI002"
        },
        "driverName": {
          "type": "string",
          "description": "Name of the new driver when the driver is not a participant.",
          "example": "Luis Ortega",
          "maxLength": 100
        },
        "driverPhone": {
          "type": "string",
          "description": "Mobile phone of the new driver in international format.",
          "example": "+34 600 222 333",
          "maxLength": 50
        },
        "predefinedCarrierCode": {
          "type": "string",
          "description": "Code of the successive Carrier participant that takes over, for `CarrierTransfer`; a new carrier of type `Successive` is added to the note.",
          "example": "CAR002"
        },
        "predefinedConsigneeCode": {
          "type": "string",
          "description": "Code of the new Consignee participant, for `Reconsignment`.",
          "example": "CON002"
        },
        "delivery": {
          "allOf": [
            {
              "$ref": "#/definitions/ConsignmentNotePlace"
            }
          ],
          "description": "New place of delivery, for `Reconsignment`."
        },
        "remarks": {
          "type": "string",
          "description": "Reason for the change or text of the observation, shown in the events of the note.",
          "example": "Vehicle breakdown",
          "maxLength": 1000
        },
        "occurredOn": {
          "type": "string",
          "description": "Date and time of the change, in ISO 8601 format (UTC); the current time when omitted.",
          "example": "2026-11-02T10:00:00Z",
          "format": "date-time"
        }
      },
      "required": [
        "changeType"
      ],
      "description": "Change recorded after issue. The application updates the affected data of the note and records the change as an event. When the change is applied, an `Accepted` event that refers to it with `relatedEventId` is recorded; when it cannot be applied, an `Error` event that refers to it is recorded and the note is not modified. Only the `Accepted` or `Error` event is notified by webhook."
    },
    "ConsignmentNote": {
      "type": "object",
      "properties": {
        "consignmentId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the consignment to which the note belongs; it cannot be changed, so on update it must be the consignment of the note.",
          "example": 48213
        },
        "clientReference": {
          "type": "string",
          "description": "Identifier of the note in the system of the API client (TMS or ERP); unique in the account and searchable.",
          "example": "TMS-889201",
          "maxLength": 100
        },
        "transportEquipmentId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the transport equipment (container, swap body or trailer) carried in this leg; its identification and seals are printed on the note (box 18).",
          "example": 1207
        },
        "sealNumbers": {
          "type": "array",
          "description": "Seal numbers at loading, checked at unloading; the seals of the transport equipment or of the consignment when omitted.",
          "example": [
            "S-1"
          ],
          "items": {
            "type": "string"
          }
        },
        "predefinedConsigneeCode": {
          "type": "string",
          "description": "Code of the Consignee participant (CMR article 6.1 (e); box 2). There is one note per consignment and consignee; the first consignee of the consignment when omitted.",
          "example": "CON001"
        },
        "consignmentNoteType": {
          "allOf": [
            {
              "$ref": "#/definitions/ConsignmentNoteType"
            }
          ],
          "description": "International CMR or national note; derived from the countries of taking over and delivery when omitted."
        },
        "language": {
          "type": "string",
          "description": "ISO 639-1 code of the main language of the printed note; the documents of the note are bilingual with the criterion of the ADR transport document: the main language and the ADR official language configured for the user (English, French or German), unless it is the same as the main language, in which case they are printed in one language only. The language configured for the account when omitted.",
          "example": "es",
          "maxLength": 2
        },
        "issuePlace": {
          "type": "string",
          "description": "Place where the note is made out (CMR article 6.1 (a); box 21).",
          "example": "Valencia",
          "maxLength": 100
        },
        "issueDate": {
          "type": "string",
          "description": "Date on which the note is made out (CMR article 6.1 (a)), in ISO 8601 format; today when omitted.",
          "example": "2026-11-02",
          "format": "date"
        },
        "takingOver": {
          "allOf": [
            {
              "$ref": "#/definitions/ConsignmentNotePlace"
            }
          ],
          "description": "Place and date of taking over of the goods (CMR article 6.1 (d); box 4); `printedText` is mandatory."
        },
        "delivery": {
          "allOf": [
            {
              "$ref": "#/definitions/ConsignmentNotePlace"
            }
          ],
          "description": "Place designated for delivery (CMR article 6.1 (d); box 3). Without a participant the address of the consignee is used; `scheduledOn` is the planned delivery date."
        },
        "carriers": {
          "type": "array",
          "description": "Carriers of the note. A `Contractual` carrier is mandatory for CMR notes. When omitted on creation, the carriers are taken from the consignment.",
          "items": {
            "$ref": "#/definitions/ConsignmentNoteCarrier"
          }
        },
        "lines": {
          "type": "array",
          "description": "Goods lines. On creation, one line is generated for each dangerous goods item of the consignment for the consignee, and lines without dangerous goods may be added. On update, the list replaces the current lines.",
          "items": {
            "$ref": "#/definitions/ConsignmentNoteLine"
          }
        },
        "references": {
          "type": "array",
          "description": "References printed on the note; taken from the references of the consignment when omitted.",
          "items": {
            "$ref": "#/definitions/ConsignmentNoteReference"
          }
        },
        "charges": {
          "type": "array",
          "description": "Charges (CMR article 6.1 (i); box 20).",
          "items": {
            "$ref": "#/definitions/ConsignmentNoteCharge"
          }
        },
        "contacts": {
          "type": "array",
          "description": "Signers at loading and delivery and notification contacts, who receive the one-time PIN, the signature link and the signed copy.",
          "items": {
            "$ref": "#/definitions/ConsignmentNoteContact"
          }
        },
        "shipperInstructions": {
          "type": "string",
          "description": "Instructions of the shipper for customs and other formalities (CMR article 6.1 (j); box 13).",
          "example": "Customs clearance at destination",
          "maxLength": 500
        },
        "attachedDocumentsText": {
          "type": "string",
          "description": "List of the documents handed to the carrier (CMR article 6.2 (g); box 5); the documents themselves are attachments.",
          "example": "Commercial invoice, safety data sheet",
          "maxLength": 500
        },
        "paymentInstruction": {
          "allOf": [
            {
              "$ref": "#/definitions/ConsignmentNotePaymentInstruction"
            }
          ],
          "description": "Instruction as to payment for carriage (box 14)."
        },
        "cashOnDeliveryAmount": {
          "type": "number",
          "description": "Cash on delivery amount (CMR article 6.2 (c); box 15), in `currency`.",
          "example": 0
        },
        "currency": {
          "type": "string",
          "description": "ISO 4217 code of the currency of every amount of the note; mandatory when any amount is given.",
          "example": "EUR",
          "maxLength": 3
        },
        "declaredValue": {
          "type": "number",
          "description": "Declared value of the goods (CMR articles 6.2 (d) and 24), in `currency`.",
          "example": 12500
        },
        "specialInterestValue": {
          "type": "number",
          "description": "Amount representing a special interest in delivery (CMR articles 6.2 (d) and 26), in `currency`.",
          "example": 0
        },
        "insuranceInstructions": {
          "type": "string",
          "description": "Instructions of the shipper regarding insurance of the goods (CMR article 6.2 (e)).",
          "example": "Insured by the shipper",
          "maxLength": 250
        },
        "agreedTimeLimit": {
          "type": "string",
          "description": "Agreed time limit within which the carriage is to be carried out (CMR article 6.2 (f)).",
          "example": "48 hours",
          "maxLength": 100
        },
        "isTranshipmentForbidden": {
          "type": "boolean",
          "description": "True when transhipment is not permitted (CMR article 6.2 (a)).",
          "default": false
        },
        "specialAgreements": {
          "type": "string",
          "description": "Special agreements between the shipper and the carrier (box 19).",
          "example": "Delivery by appointment",
          "maxLength": 500
        },
        "incoterm": {
          "type": "string",
          "description": "Incoterms 2020 rule, three letters.",
          "example": "DAP",
          "maxLength": 3
        },
        "incotermPlace": {
          "type": "string",
          "description": "Named place of the Incoterms rule.",
          "example": "Hamburg",
          "maxLength": 100
        },
        "temperatureInstructions": {
          "type": "string",
          "description": "Temperature instructions for the carrier (goods under temperature control, ADR 7.1.7, and refrigerated equipment).",
          "example": "Keep below 25 degrees Celsius",
          "maxLength": 100
        },
        "otherParticulars": {
          "type": "string",
          "description": "Other useful particulars (CMR article 6.3; box 18), such as batches or SSCC.",
          "example": "Batch 2026-117",
          "maxLength": 500
        },
        "driverInstructions": {
          "type": "string",
          "description": "Operational instructions shown to the driver and not printed on the note.",
          "example": "Call the warehouse 30 minutes before arrival",
          "maxLength": 500
        },
        "adrData": {
          "allOf": [
            {
              "$ref": "#/definitions/ConsignmentNoteAdrData"
            }
          ],
          "description": "Data of ADR of the note: the statement of ADR 5.4.1.1.1 (f), in responses, and the data that only Spain requires."
        }
      },
      "required": [
        "consignmentId"
      ],
      "description": "Consignment note: an international CMR, issued as an electronic consignment note (eCMR), or a national note. One data set is projected onto the eCMR, the national note and the ADR transport document. It can be edited while its status is `Draft`, `Validated` or `Failed`."
    },
    "ConsignmentNoteAdrData": {
      "type": "object",
      "properties": {
        "summaryText": {
          "type": "string",
          "description": "Statement of ADR 5.4.1.1.1 (f), note 1, generated by the application: total quantity and calculated value per transport category when ADR 1.1.3.6 applies; frozen at issue. Only in responses; ignored in requests.",
          "example": "Transport category 3: 80 L, calculated value 80",
          "readOnly": true
        },
        "spainData": {
          "allOf": [
            {
              "$ref": "#/definitions/ConsignmentNoteSpainData"
            }
          ],
          "description": "Data of the note that only Spain requires."
        }
      },
      "description": "Data of ADR of a consignment note, in requests and responses: the statement of ADR 5.4.1.1.1 (f), generated by the application, and the data that only Spain requires."
    },
    "ConsignmentNoteSpainData": {
      "type": "object",
      "properties": {
        "decaMode": {
          "allOf": [
            {
              "$ref": "#/definitions/ConsignmentNoteDecaMode"
            }
          ],
          "description": "How the Spanish electronic administrative control document (DeCA) is produced for national notes; `NotApplicable` when omitted. The mode is only applied where the DeCA applies (national notes with taking over and delivery in Spain), where it is mandatory: a mode other than NotApplicable on any other note, or NotApplicable on a note where the DeCA applies, is ignored and the response message carries a warning."
        }
      },
      "description": "Data of a consignment note that only Spain requires: the electronic administrative control document (DeCA) of national notes."
    },
    "ConsignmentNoteType": {
      "type": "string",
      "enum": [
        "InternationalCmr",
        "National"
      ],
      "description": "Kind of consignment note.\n\n- `InternationalCmr`: international carriage by road subject to the CMR Convention (taking over and delivery in different countries, at least one of them a contracting party); the box 20 clause applies and the note is issued as an eCMR when the account can issue it electronically.\n- `National`: domestic consignment note. Outside Spain, a national note uses the CMR form, titled as a national note and without the clause that subjects the carriage to the CMR Convention.\n\nNational notes are not available in every country: when taking over and delivery are in a country where they are not available, the note is rejected. New values may be added; clients must accept unknown values."
    },
    "ConsignmentNoteContact": {
      "type": "object",
      "properties": {
        "contactType": {
          "allOf": [
            {
              "$ref": "#/definitions/ConsignmentNoteContactType"
            }
          ],
          "description": "Role of the contact."
        },
        "name": {
          "type": "string",
          "description": "Name of the contact.",
          "example": "L. Ferrer",
          "maxLength": 100
        },
        "phone": {
          "type": "string",
          "description": "Mobile phone in international format, used to send the one-time PIN or the signature link.",
          "example": "+34 600 333 444",
          "maxLength": 50
        },
        "email": {
          "type": "string",
          "description": "Email address, an alternative channel for the PIN and the destination of the signed copy.",
          "example": "ferrer@example.com",
          "maxLength": 100,
          "format": "email"
        },
        "receivesSignedCopy": {
          "type": "boolean",
          "description": "True to send the signed PDF to this contact when the note is completed; true when omitted.",
          "default": true
        },
        "receivesEvents": {
          "type": "boolean",
          "description": "True to notify this contact of the events (arrival, signature, reservation and incident); false when omitted.",
          "default": false
        }
      },
      "required": [
        "contactType",
        "name"
      ],
      "description": "Signer or notification contact of the note; at least a phone number or an email address is required."
    },
    "ConsignmentNoteChangeType": {
      "type": "string",
      "enum": [
        "PlateChange",
        "DriverChange",
        "CarrierTransfer",
        "Reconsignment",
        "Observation"
      ],
      "description": "Change recorded after issue and sent as an event of the note. `PlateChange`: the vehicle or trailer is replaced. `DriverChange`: new driver. `CarrierTransfer`: hand-over to a successive carrier (CMR article 34). `Reconsignment`: new consignee or place of delivery under the right of disposal (CMR article 12). `Observation`: free remark or reservation of the shipper or the carrier. New values may be added; clients must accept unknown values."
    },
    "ConsignmentNotePaymentInstruction": {
      "type": "string",
      "enum": [
        "CarriagePaid",
        "CarriageForward"
      ],
      "description": "Instruction as to payment for carriage (box 14): `CarriagePaid`, paid by the shipper, or `CarriageForward`, paid by the consignee. New values may be added; clients must accept unknown values."
    },
    "ConsignmentNoteLine": {
      "type": "object",
      "properties": {
        "sequence": {
          "type": "integer",
          "description": "Print order, starting at 1 and unique within the note; the position in the list when omitted.",
          "example": 1,
          "minimum": 1
        },
        "consignmentItemCode": {
          "allOf": [
            {
              "$ref": "#/definitions/ConsignmentItemCode"
            }
          ],
          "description": "Code of the consignment item, for a dangerous goods line; omit it for a line without dangerous goods carried under the same note."
        },
        "description": {
          "type": "string",
          "description": "Nature of the goods (CMR article 6.1 (f); box 9). It is mandatory in a line without a consignment item. For a dangerous goods line, the application generates it in the order that the regulation of the consignment prescribes (ADR 5.4.1.1.1 for ADR: UN number, proper shipping name, labels, packing group and tunnel code) when it is omitted, and a value given in the request prevails; it is frozen at issue.",
          "example": "UN 1263 PAINT, 3, III, (D/E)",
          "maxLength": 500
        },
        "marksAndNumbers": {
          "type": "string",
          "description": "Marks and numbers of the packages (CMR article 6.1 (g); box 6); the marks of the consignment item when omitted.",
          "example": "PAINT-001/004",
          "maxLength": 250
        },
        "productCode": {
          "type": "string",
          "description": "Product code of the shipper or EAN of the goods; the code of the product of the item when omitted.",
          "example": "PROCOD001",
          "maxLength": 50
        },
        "numberOfPackages": {
          "type": "integer",
          "description": "Number of packages (CMR article 6.1 (g); box 7); the packages of the item when omitted, which it cannot exceed.",
          "example": 4,
          "minimum": 1
        },
        "packageTypeCode": {
          "type": "string",
          "description": "Method of packing as a code of UNECE Recommendation 21 (box 8; eFTI); taken from the packaging of the item when omitted.",
          "example": "DR",
          "maxLength": 2
        },
        "packingText": {
          "type": "string",
          "description": "Packing as free text when no code applies (pallets, bulk or container).",
          "example": "2 pallets",
          "maxLength": 100
        },
        "grossQuantity": {
          "type": "number",
          "description": "Gross weight in kilograms (CMR article 6.1 (h); box 11); the packages multiplied by the unit gross mass of the item when omitted.",
          "example": 88
        },
        "volume": {
          "type": "number",
          "description": "Volume in cubic metres (box 12); the volume of the item when omitted.",
          "example": 0.4
        },
        "hsCode": {
          "type": "string",
          "description": "Statistical number or Harmonised System code (box 10; eFTI), 6 to 10 digits.",
          "example": "3208 10",
          "maxLength": 10
        }
      },
      "description": "Goods line of the consignment note: a dangerous goods item of the consignment or a line without dangerous goods of the same shipment."
    },
    "ConsignmentNoteContactType": {
      "type": "string",
      "enum": [
        "TakingOverSigner",
        "DeliverySigner",
        "Notification"
      ],
      "description": "Role of a contact of the note. `TakingOverSigner`: person who signs at loading on behalf of the shipper. `DeliverySigner`: person who signs at delivery on behalf of the consignee. `Notification`: receives copies and notices, such as the safety adviser or the customer. Signers are identified by their mobile phone or email address (one-time PIN, link or QR code). New values may be added; clients must accept unknown values."
    },
    "ConsignmentNoteDecaMode": {
      "type": "string",
      "enum": [
        "NotApplicable",
        "SeparateDocument",
        "WithElectronicNote"
      ],
      "description": "How the Spanish electronic administrative control document (DeCA) is produced for a national note, as required by Spanish Order FOM/2861/2012, article 6.\n\n- `NotApplicable`: international CMR or carriage outside Spain.\n- `SeparateDocument`: when the note is issued, the application generates the DeCA as a separate PDF with its QR code and unique address.\n- `WithElectronicNote`: the DeCA is issued together with the electronic note, when the account can do so; when the electronic note service cannot produce it, the application generates it.\n\nA change recorded after issue produces a new version of a DeCA generated by the application. The DeCA requires an `Effective` carrier and the tax code of the contractual shipper and of the effective carrier. New values may be added; clients must accept unknown values."
    },
    "ConsignmentNoteCoverage": {
      "type": "object",
      "properties": {
        "isCovered": {
          "type": "boolean",
          "description": "True when both countries are parties to the Protocol on the date, so that the note can be issued electronically."
        },
        "takingOverCountryCode": {
          "type": "string",
          "description": "ISO 3166-1 alpha-2 code of the country of taking over.",
          "example": "ES",
          "maxLength": 2
        },
        "takingOverInForceSince": {
          "type": "string",
          "description": "Date on which the Protocol entered into force for the country of taking over, in ISO 8601 format; empty when the country is not a party.",
          "example": "2011-06-05",
          "format": "date"
        },
        "deliveryCountryCode": {
          "type": "string",
          "description": "ISO 3166-1 alpha-2 code of the country of delivery.",
          "example": "FR",
          "maxLength": 2
        },
        "deliveryInForceSince": {
          "type": "string",
          "description": "Date on which the Protocol entered into force for the country of delivery, in ISO 8601 format; empty when the country is not a party.",
          "example": "2011-06-05",
          "format": "date"
        },
        "issueMode": {
          "allOf": [
            {
              "$ref": "#/definitions/ConsignmentNoteIssueMode"
            }
          ],
          "description": "Issue mode that the application would use for the route: `Electronic` when it is covered, the user has the electronic consignment note licence and an electronic note service is configured for the account, and `Paper` otherwise."
        },
        "explanation": {
          "type": "string",
          "description": "Explanation of the coverage, suitable for display to the user.",
          "example": "Both countries are parties to the Protocol: the note can be issued electronically."
        }
      },
      "description": "Coverage of a route by the 2008 Additional Protocol to the CMR concerning the electronic consignment note. DGAssistant maintains the list of parties from the United Nations depositary; it changes several times a year.",
      "required": [
        "isCovered",
        "issueMode"
      ]
    },
    "ConsignmentNoteReference": {
      "type": "object",
      "properties": {
        "referenceType": {
          "allOf": [
            {
              "$ref": "#/definitions/ConsignmentNoteReferenceType"
            }
          ],
          "description": "Kind of reference."
        },
        "value": {
          "type": "string",
          "description": "Value of the reference, unique by type and value within the note.",
          "example": "PO-9001",
          "maxLength": 100
        }
      },
      "required": [
        "referenceType",
        "value"
      ],
      "description": "Reference printed on the consignment note."
    },
    "ConsignmentNoteResponse": {
      "description": "Envelope object carrying the consignment note data returned by the service under the consignmentNoteResponse property.",
      "type": "object",
      "properties": {
        "consignmentNoteResponse": {
          "$ref": "#/definitions/ConsignmentNoteResponseData"
        }
      }
    },
    "ConsignmentNoteResponseOK": {
      "description": "Composite response combining consignment note data with the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/ConsignmentNoteResponse"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "ConsignmentNotePaperDelivery": {
      "type": "object",
      "properties": {
        "deliveredOn": {
          "type": "string",
          "description": "Date and time of the delivery signed on paper, in ISO 8601 format (UTC); a time with an offset is accepted and converted to UTC. It cannot be earlier than the issue of the note (to the minute) nor later than the current time plus five minutes; otherwise the request is rejected with 400 naming deliveredOn.",
          "example": "2026-11-02T10:00:00Z",
          "format": "date-time"
        },
        "signerName": {
          "type": "string",
          "description": "Name of the person who signed the delivery.",
          "example": "M. Weber",
          "maxLength": 100
        },
        "remarks": {
          "type": "string",
          "description": "Reservations or remarks written on the paper note.",
          "example": "One drum damaged",
          "maxLength": 1000
        },
        "base64EncodedContent": {
          "type": "string",
          "description": "Scanned signed copy, base 64 encoded (PDF, JPEG or PNG, maximum 6 MB once decoded); stored as the signed document of the note."
        }
      },
      "required": [
        "deliveredOn"
      ],
      "description": "Delivery of a note issued on paper, recorded by the user."
    },
    "ConsignmentNoteAttachmentsResponse": {
      "type": "object",
      "properties": {
        "consignmentNoteAttachments": {
          "type": "array",
          "description": "Attachments of the note.",
          "items": {
            "$ref": "#/definitions/ConsignmentNoteAttachmentResponse"
          }
        }
      },
      "description": "Container for the attachments of the consignment note."
    },
    "ConsignmentNoteAttachmentsResponseOK": {
      "description": "Composite response combining the attachments of the consignment note with the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/ConsignmentNoteAttachmentsResponse"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "ConsignmentNotesResponse": {
      "type": "object",
      "properties": {
        "consignmentNotes": {
          "type": "array",
          "description": "Consignment notes found on the page.",
          "items": {
            "$ref": "#/definitions/ConsignmentNoteSummary"
          }
        }
      },
      "description": "Container for a page of consignment notes."
    },
    "ConsignmentNotesResponseOK": {
      "description": "Composite response combining a page of consignment notes with the paging data and the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/ConsignmentNotesResponse"
        },
        {
          "$ref": "#/definitions/PagedResult"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "ConsignmentNoteIssue": {
      "type": "object",
      "properties": {
        "signatureMethod": {
          "type": "string",
          "description": "Signature method: `SignOnGlass`, `QrCode` or `WithoutCounterparty`; the method configured for the account when omitted.",
          "example": "SignOnGlass",
          "maxLength": 30
        },
        "sendToDriver": {
          "type": "boolean",
          "description": "True to send the access code to the phone of the driver at issue, so that the driver can open the note; true when omitted.",
          "default": true
        },
        "adrData": {
          "allOf": [
            {
              "$ref": "#/definitions/ConsignmentNoteAdrData"
            }
          ],
          "description": "DeCA mode in `spainData.decaMode` to use for a national note, instead of the one of the note; the other data of the object are ignored."
        }
      },
      "description": "Optional parameters of the issue. The note is validated first; every problem is returned at once and nothing is issued when the validation fails."
    },
    "ConsignmentNoteIssueMode": {
      "type": "string",
      "enum": [
        "Electronic",
        "Paper"
      ],
      "description": "How the note is issued, as decided by the application. `Electronic`: electronic consignment note. `Paper`: the application prints a note numbered by the application, to be signed on paper, because the route is not covered by the eCMR Protocol or the account cannot issue the note electronically. New values may be added; clients must accept unknown values."
    },
    "ConsignmentNoteEventsResponse": {
      "type": "object",
      "properties": {
        "consignmentNoteEvents": {
          "type": "array",
          "description": "Events of the note, oldest first.",
          "items": {
            "$ref": "#/definitions/ConsignmentNoteEvent"
          }
        }
      },
      "description": "Container for the events of the consignment note."
    },
    "ConsignmentNoteEventsResponseOK": {
      "description": "Composite response combining the events of the consignment note with the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/ConsignmentNoteEventsResponse"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "ConsignmentNoteCharge": {
      "type": "object",
      "properties": {
        "chargeType": {
          "allOf": [
            {
              "$ref": "#/definitions/ConsignmentNoteChargeType"
            }
          ],
          "description": "Concept of the charge."
        },
        "amount": {
          "type": "number",
          "description": "Amount in the currency of the note, greater than zero.",
          "example": 850
        },
        "payer": {
          "allOf": [
            {
              "$ref": "#/definitions/ConsignmentNoteChargePayer"
            }
          ],
          "description": "Party that pays the charge."
        }
      },
      "required": [
        "chargeType",
        "amount",
        "payer"
      ],
      "description": "Charge line (CMR article 6.1 (i); box 20)."
    },
    "ConsignmentNotePlace": {
      "type": "object",
      "properties": {
        "predefinedParticipantCode": {
          "type": "string",
          "description": "Code of a participant of the account whose structured address (street, postal code, city and ISO country) is the place; use it when the place differs from the address of the shipper or the consignee, such as a warehouse or a terminal.",
          "example": "WHS001"
        },
        "printedText": {
          "type": "string",
          "description": "Text printed on the note for the place, in the form locality, country (CMR article 6.1 (d)).",
          "example": "Valencia, Spain",
          "maxLength": 250
        },
        "scheduledOn": {
          "type": "string",
          "description": "Agreed date and time at the place, in ISO 8601 format (UTC): the date of taking over (CMR article 6.1 (d)) or the planned delivery date communicated to the driver and the consignee.",
          "example": "2026-11-02T10:00:00Z",
          "format": "date-time"
        }
      },
      "description": "Place of taking over or of delivery of the goods."
    },
    "ConsignmentNoteSummary": {
      "type": "object",
      "properties": {
        "consignmentNoteId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the consignment note.",
          "example": 5120
        },
        "consignmentNoteNumber": {
          "type": "string",
          "description": "Number of the note, once assigned.",
          "example": "CP-2026-0118"
        },
        "consignmentNoteType": {
          "allOf": [
            {
              "$ref": "#/definitions/ConsignmentNoteType"
            }
          ],
          "description": "International CMR or national note."
        },
        "status": {
          "allOf": [
            {
              "$ref": "#/definitions/ConsignmentNoteStatus"
            }
          ],
          "description": "Status of the note."
        },
        "consignmentId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the consignment.",
          "example": 48213
        },
        "consignmentNumber": {
          "type": "string",
          "description": "Number of the consignment.",
          "example": "445",
          "x-nullable": true
        },
        "shipperName": {
          "type": "string",
          "description": "Name of the shipper.",
          "example": "Pinturas Levante S.L."
        },
        "consigneeName": {
          "type": "string",
          "description": "Name of the consignee.",
          "example": "Farben Nord GmbH"
        },
        "takingOverText": {
          "type": "string",
          "description": "Printed place of taking over.",
          "example": "Valencia, Spain"
        },
        "takingOverOn": {
          "type": "string",
          "description": "Date of taking over, in ISO 8601 format (UTC).",
          "example": "2026-11-02T10:00:00Z",
          "format": "date-time"
        },
        "deliveryText": {
          "type": "string",
          "description": "Printed place of delivery.",
          "example": "Hamburg, Germany"
        },
        "hasError": {
          "type": "boolean",
          "description": "True when the last issue or synchronisation failed; the details are in the issue state of the note."
        },
        "issueMode": {
          "allOf": [
            {
              "$ref": "#/definitions/ConsignmentNoteIssueMode"
            }
          ],
          "description": "Electronic note or paper."
        },
        "issuedOn": {
          "type": "string",
          "description": "Date and time of issue, in ISO 8601 format (UTC).",
          "example": "2026-11-02T10:00:00Z",
          "format": "date-time"
        }
      },
      "description": "Consignment note as listed in a search.",
      "required": [
        "consignmentNoteId",
        "consignmentNoteType",
        "status",
        "consignmentId",
        "consignmentNumber",
        "hasError",
        "issueMode"
      ]
    },
    "ConsignmentNoteReferenceType": {
      "type": "string",
      "enum": [
        "ShipperOrder",
        "CarrierTransport",
        "ConsigneeOrder",
        "Invoice",
        "DeliveryNote",
        "Booking",
        "FreightForwarderReference",
        "LoadingSiteReference",
        "DeliverySiteReference",
        "Other"
      ],
      "description": "Kind of reference printed on the note. The references of the consignment are taken when none are given: `ShipperOrder` from the reference number of the shipper, `Invoice` from the invoice number and `FreightForwarderReference` from the reference of the freight forwarder. `LoadingSiteReference` and `DeliverySiteReference` are the dock or warehouse references of the loading and delivery sites shown to the driver. New values may be added; clients must accept unknown values."
    },
    "ConsignmentNoteDocumentType": {
      "type": "string",
      "enum": [
        "DraftPdf",
        "SignedPdf",
        "Deca",
        "TransportDocument",
        "EvidenceReport"
      ],
      "description": "Documents of a consignment note.\n\n- `DraftPdf`: unsigned representation generated by the application.\n- `SignedPdf`: final signed PDF, stored with the documents of the note.\n- `Deca`: Spain only; current version of the Spanish electronic administrative control document, with its QR code and public address. A user who can only read the account of the note gets 409 while it has not been generated.\n- `TransportDocument`: transport document of the regulation of the consignment (ADR 5.4.1 for ADR), the one attached to the electronic note.\n- `EvidenceReport`: evidence report (signatures, time stamps and hash chain) for claims, available only when the account can produce it.\n\nNew values may be added; clients must accept unknown values."
    },
    "ConsignmentNoteCarrier": {
      "type": "object",
      "properties": {
        "carrierType": {
          "allOf": [
            {
              "$ref": "#/definitions/ConsignmentNoteCarrierType"
            }
          ],
          "description": "Role of the carrier."
        },
        "sequence": {
          "type": "integer",
          "description": "Order of intervention, starting at 1 and unique within the note; the position in the list when omitted.",
          "example": 1,
          "minimum": 1
        },
        "predefinedCarrierCode": {
          "type": "string",
          "description": "Code of the Carrier participant of the account, which provides the name, address and tax code.",
          "example": "CAR001"
        },
        "vehicleRegistration": {
          "type": "string",
          "description": "Registration plate of the tractor or rigid truck; the vehicle of the consignment when omitted.",
          "example": "1234 KLM",
          "maxLength": 20
        },
        "vehicleRegistrationCountryCode": {
          "type": "string",
          "description": "ISO 3166-1 alpha-2 code of the country of registration of the vehicle (eFTI and eCMR data sets).",
          "example": "ES",
          "maxLength": 2
        },
        "trailerRegistration": {
          "type": "string",
          "description": "Registration plate of the trailer or semi-trailer; the trailer of the consignment when omitted.",
          "example": "R-5678-BBC",
          "maxLength": 20
        },
        "trailerRegistrationCountryCode": {
          "type": "string",
          "description": "ISO 3166-1 alpha-2 code of the country of registration of the trailer.",
          "example": "ES",
          "maxLength": 2
        },
        "predefinedDriverCode": {
          "type": "string",
          "description": "Code of the Driver participant of the account.",
          "example": "DRI001"
        },
        "driverName": {
          "type": "string",
          "description": "Name of the driver when the driver is not a participant; the driver of the consignment when omitted.",
          "example": "Andres Carrasco",
          "maxLength": 100
        },
        "driverPhone": {
          "type": "string",
          "description": "Mobile phone of the driver in international format, used to send the access code or the PIN to the driver.",
          "example": "+34 600 111 222",
          "maxLength": 50
        },
        "remarks": {
          "type": "string",
          "description": "Reservations and observations of the carrier known at issue (CMR article 8; box 18); reservations made when signing arrive as events.",
          "example": "Two drums dented",
          "maxLength": 500
        }
      },
      "required": [
        "carrierType",
        "predefinedCarrierCode"
      ],
      "description": "Carrier of the consignment note (contractual, successive or effective) with the vehicle and driver of its leg."
    },
    "ConsignmentNoteAttachmentResponse": {
      "type": "object",
      "properties": {
        "attachmentId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the attachment.",
          "example": 771
        },
        "attachmentType": {
          "allOf": [
            {
              "$ref": "#/definitions/ConsignmentNoteAttachmentType"
            }
          ],
          "description": "Kind of attachment."
        },
        "fileName": {
          "type": "string",
          "description": "Name of the file shown to the driver and the consignee.",
          "example": "delivery-note.pdf",
          "maxLength": 200,
          "x-nullable": true
        },
        "contentType": {
          "type": "string",
          "description": "MIME type of the content.",
          "example": "application/pdf",
          "maxLength": 60
        },
        "isCarriedWithNote": {
          "type": "boolean",
          "description": "True when the file travels with the electronic note so that the driver carries it."
        },
        "documentSnapshotId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the stored document when the attachment was generated by the application. Absent once the stored document has been deleted at the end of its storage period.",
          "example": 3312
        },
        "uploadedOn": {
          "type": "string",
          "description": "Date and time at which the file was attached to the electronic note, in ISO 8601 format (UTC).",
          "example": "2026-11-02T10:00:00Z",
          "format": "date-time"
        }
      },
      "required": [
        "attachmentId",
        "attachmentType",
        "fileName",
        "isCarriedWithNote"
      ],
      "description": "Attachment of a consignment note without its content, which is downloaded with the document operation of the note."
    },
    "ConsignmentNoteCarrierType": {
      "type": "string",
      "enum": [
        "Contractual",
        "Successive",
        "Effective"
      ],
      "description": "Role of a carrier of the note. `Contractual`: carrier that contracted the carriage (CMR article 6.1 (c); box 16). `Successive`: successive carrier (CMR articles 34 and 35; box 17). `Effective`: carrier that actually performs the carriage, required by the eFTI data set. New values may be added; clients must accept unknown values."
    },
    "ConsignmentNoteEvent": {
      "type": "object",
      "properties": {
        "eventId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the event.",
          "example": 20431
        },
        "eventType": {
          "allOf": [
            {
              "$ref": "#/definitions/ConsignmentNoteEventType"
            }
          ],
          "description": "Type of event."
        },
        "occurredOn": {
          "type": "string",
          "description": "Date and time of the event according to its source, in ISO 8601 format (UTC).",
          "example": "2026-11-02T10:00:00Z",
          "format": "date-time"
        },
        "receivedOn": {
          "type": "string",
          "description": "Date and time at which the application received the event, in ISO 8601 format (UTC).",
          "example": "2026-11-02T10:00:05Z",
          "format": "date-time"
        },
        "actorRole": {
          "allOf": [
            {
              "$ref": "#/definitions/ConsignmentNoteActorRole"
            }
          ],
          "description": "Party that produced the event."
        },
        "actorName": {
          "type": "string",
          "description": "Name of the signer or author.",
          "example": "L. Ferrer"
        },
        "isOutbound": {
          "type": "boolean",
          "description": "True when the event is a change recorded in the application after issue; false when it was received from the electronic note or produced by the application itself."
        },
        "latitude": {
          "type": "number",
          "description": "Latitude of the event in decimal degrees (WGS 84), when reported.",
          "example": 39.4699
        },
        "longitude": {
          "type": "number",
          "description": "Longitude of the event in decimal degrees (WGS 84), when reported.",
          "example": -0.3763
        },
        "remarks": {
          "type": "string",
          "description": "Text of the reservation, incident or change (previous and new plate, driver, carrier, consignee or place of delivery).",
          "example": "Plate 1234 KLM replaced by 5555 KKK"
        },
        "hasDocument": {
          "type": "boolean",
          "description": "True when a document or photo was added with the event (`DocumentAdded`); it is downloaded with the event document operation."
        },
        "relatedEventId": {
          "type": "integer",
          "format": "int64",
          "description": "For `Accepted` and `Error` events that resolve a change or a cancellation recorded in the application, identifier of that event.",
          "example": 20430
        }
      },
      "description": "Event of the consignment note. Events are never modified.",
      "required": [
        "eventId",
        "eventType",
        "occurredOn",
        "receivedOn",
        "isOutbound",
        "hasDocument"
      ]
    },
    "ConsignmentNoteChargePayer": {
      "type": "string",
      "enum": [
        "Shipper",
        "Consignee"
      ],
      "description": "Party that pays a charge: the shipper or the consignee. New values may be added; clients must accept unknown values."
    },
    "ConsignmentNoteResponseData": {
      "allOf": [
        {
          "$ref": "#/definitions/ConsignmentNote"
        },
        {
          "type": "object",
          "properties": {
            "consignmentNoteId": {
              "type": "integer",
              "format": "int64",
              "description": "Identifier of the consignment note.",
              "example": 5120
            },
            "consignmentNoteNumber": {
              "type": "string",
              "description": "Number of the note, assigned by the application at issue from the sequence of the account for the year.",
              "example": "CP-2026-0118"
            },
            "status": {
              "allOf": [
                {
                  "$ref": "#/definitions/ConsignmentNoteStatus"
                }
              ],
              "description": "Status of the note."
            },
            "replacesConsignmentNoteId": {
              "type": "integer",
              "format": "int64",
              "description": "Identifier of the cancelled or failed note of the same consignment and consignee that this note replaces, when there is one.",
              "example": 5119
            },
            "consignmentNumber": {
              "type": "string",
              "description": "Number of the consignment.",
              "example": "445"
            },
            "equipmentIdentification": {
              "type": "string",
              "description": "Identification of the transport equipment carried in this leg, when `transportEquipmentId` is set.",
              "example": "MSCU1234566"
            },
            "shipper": {
              "allOf": [
                {
                  "$ref": "#/definitions/ParticipantResponseData"
                }
              ],
              "description": "Shipper (consignor) of the consignment (box 1)."
            },
            "consignee": {
              "allOf": [
                {
                  "$ref": "#/definitions/ParticipantResponseData"
                }
              ],
              "description": "Consignee of the note (box 2)."
            },
            "contractualShipper": {
              "allOf": [
                {
                  "$ref": "#/definitions/ParticipantResponseData"
                }
              ],
              "description": "Contractual shipper of the consignment, when there is one."
            },
            "takingOverParticipant": {
              "allOf": [
                {
                  "$ref": "#/definitions/ParticipantResponseData"
                }
              ],
              "description": "Participant of the place of taking over, when one was given; null otherwise."
            },
            "deliveryParticipant": {
              "allOf": [
                {
                  "$ref": "#/definitions/ParticipantResponseData"
                }
              ],
              "description": "Participant of the place of delivery, when one was given; null otherwise."
            },
            "carriers": {
              "type": "array",
              "description": "Carriers with their data.",
              "items": {
                "$ref": "#/definitions/ConsignmentNoteCarrierResponse"
              }
            },
            "lines": {
              "type": "array",
              "description": "Goods lines with their regulatory data.",
              "items": {
                "$ref": "#/definitions/ConsignmentNoteLineResponse"
              }
            },
            "attachments": {
              "type": "array",
              "description": "Attachments of the note, without their content.",
              "items": {
                "$ref": "#/definitions/ConsignmentNoteAttachmentResponse"
              }
            },
            "issueState": {
              "allOf": [
                {
                  "$ref": "#/definitions/ConsignmentNoteIssueState"
                }
              ],
              "description": "State of the issue, once the note has been issued."
            },
            "issuedOn": {
              "type": "string",
              "description": "Date and time of issue, after which the data of the note is locked, in ISO 8601 format (UTC).",
              "example": "2026-11-02T10:00:00Z",
              "format": "date-time"
            },
            "completedOn": {
              "type": "string",
              "description": "Date and time of the delivery signed by the consignee, in ISO 8601 format (UTC).",
              "example": "2026-11-04T15:30:00Z",
              "format": "date-time"
            },
            "createdOn": {
              "type": "string",
              "description": "Date and time of creation, in ISO 8601 format (UTC).",
              "example": "2026-11-02T10:00:00Z",
              "format": "date-time"
            },
            "updatedOn": {
              "type": "string",
              "description": "Date and time of the last update, in ISO 8601 format (UTC).",
              "example": "2026-11-02T10:00:00Z",
              "format": "date-time"
            }
          }
        }
      ],
      "description": "Consignment note with its parties, carriers, lines, attachments and issue state."
    },
    "ConsignmentNoteChargeType": {
      "type": "string",
      "enum": [
        "Carriage",
        "Deductions",
        "Balance",
        "Supplements",
        "AdditionalCharges",
        "CustomsDuties",
        "Other"
      ],
      "description": "Concept of a charge line (CMR article 6.1 (i); box 20 of the IRU form). New values may be added; clients must accept unknown values."
    },
    "ConsignmentNoteEventType": {
      "type": "string",
      "enum": [
        "Created",
        "Validated",
        "Issued",
        "SentToDriver",
        "ArrivedAtLoading",
        "LoadingCompleted",
        "SignedByShipper",
        "SignedByCarrier",
        "InTransit",
        "ArrivedAtDelivery",
        "Delivered",
        "Reservation",
        "Incident",
        "PlateChange",
        "DriverChange",
        "CarrierTransfer",
        "Modified",
        "Cancelled",
        "Error",
        "DecaGenerated",
        "LoadingStarted",
        "UnloadingCompleted",
        "DeclinedByCarrier",
        "DocumentAdded",
        "Reconsignment",
        "Shared",
        "Accepted"
      ],
      "description": "Type of event of a consignment note. The application produces `Created`, `Validated`, `Issued`, `DecaGenerated` (Spain only), `Accepted` and `Error`. The other events are received during the journey or, for the changes recorded after issue (`isOutbound` true), sent by the application: `PlateChange`, `DriverChange`, `CarrierTransfer`, `Reconsignment` and `Reservation`.\n\n- `Accepted`: the change or the cancellation recorded in the event given by `relatedEventId` was accepted and applied; an `Error` event that resolves one refers to it in the same way.\n- `DeclinedByCarrier`: the carrier refused the transport order.\n- `DocumentAdded`: a document or photo, such as a weight ticket or a signed paper, was added during the journey; `hasDocument` is true and the document is downloaded with the event document operation.\n- `Reconsignment`: change of consignee or place of delivery under CMR article 12.\n- `Shared`: the note was sent to its contacts.\n\nSignatures, photos and evidence are not part of the events: only the fact and its time are. New values may be added; clients must accept unknown values."
    },
    "ConsignmentNoteIssueState": {
      "type": "object",
      "properties": {
        "issueMode": {
          "allOf": [
            {
              "$ref": "#/definitions/ConsignmentNoteIssueMode"
            }
          ],
          "description": "Electronic note or paper."
        },
        "paperReason": {
          "allOf": [
            {
              "$ref": "#/definitions/ConsignmentNotePaperReason"
            }
          ],
          "description": "Reason why the note was issued on paper, when `issueMode` is `Paper`."
        },
        "syncedOn": {
          "type": "string",
          "description": "Date and time of the last synchronisation, in ISO 8601 format (UTC).",
          "example": "2026-11-02T10:00:00Z",
          "format": "date-time"
        },
        "lastErrorType": {
          "allOf": [
            {
              "$ref": "#/definitions/ConsignmentNoteErrorType"
            }
          ],
          "description": "Kind of the last failure, when there is one."
        },
        "lastError": {
          "type": "string",
          "description": "Description of the last failure of the issue or of a later operation on the electronic note, in the language of the user: a fixed text for each `lastErrorType`. Empty when no failure has been recorded since the note was issued."
        },
        "hasPendingChanges": {
          "type": "boolean",
          "description": "True when the note changed after it was last sent and the electronic note still holds the previous version."
        }
      },
      "description": "State of the issue of the consignment note.",
      "required": [
        "issueMode",
        "hasPendingChanges"
      ]
    },
    "ConsignmentNoteErrorType": {
      "type": "string",
      "enum": [
        "Validation",
        "Communication",
        "Rejected",
        "Configuration"
      ],
      "description": "Kind of the last failure of the issue or of a later operation on the electronic note. `Validation`: the data were not accepted; check the data and try again. `Communication`: temporary failure; the application retries. `Rejected`: the change or the cancellation was not accepted. `Configuration`: the configuration of the account for electronic consignment notes is not valid; contact DGAssistant. New values may be added; clients must accept unknown values."
    },
    "ConsignmentNoteLineResponse": {
      "allOf": [
        {
          "$ref": "#/definitions/ConsignmentNoteLine"
        },
        {
          "type": "object",
          "properties": {
            "lineId": {
              "type": "integer",
              "format": "int64",
              "description": "Identifier of the line.",
              "example": 9811
            },
            "isDangerousGood": {
              "type": "boolean",
              "description": "True when the line comes from a consignment item; the driver is asked to confirm the ADR description of those lines."
            },
            "identificationNumber": {
              "type": "string",
              "description": "Identification number of a dangerous goods line. Identification number with its prefix: UN for UN numbers, NA for North American numbers (49 CFR only) and ID for ID 8000. Four digits, without spaces.",
              "example": "UN1263",
              "maxLength": 6,
              "pattern": "^(UN|NA|ID)[0-9]{4}$"
            },
            "classOrDivision": {
              "type": "string",
              "description": "Class or division of a dangerous goods line.",
              "example": "3"
            },
            "packingGroup": {
              "type": "string",
              "description": "Packing group of a dangerous goods line.",
              "example": "III"
            },
            "adrData": {
              "allOf": [
                {
                  "$ref": "#/definitions/ConsignmentNoteLineAdrData"
                }
              ],
              "description": "Data of ADR of a dangerous goods line; empty when the line has none."
            }
          }
        }
      ],
      "description": "Goods line of the consignment note with the regulatory data taken from the consignment item."
    },
    "ConsignmentNoteLineAdrData": {
      "type": "object",
      "properties": {
        "dangerousGoodsText": {
          "type": "string",
          "description": "Additional ADR statements of the line (environmentally hazardous, waste, limited quantities or exemptions), generated by the application.",
          "example": "ENVIRONMENTALLY HAZARDOUS",
          "maxLength": 500
        },
        "tunnelRestrictionCode": {
          "type": "string",
          "description": "Tunnel restriction code of the line (ADR 5.4.1.1.1 (k)).",
          "example": "D/E"
        },
        "transportCategory": {
          "allOf": [
            {
              "$ref": "#/definitions/AdrTransportCategory"
            }
          ],
          "description": "Transport category of the line (ADR 1.1.3.6)."
        }
      },
      "description": "Data of ADR of a dangerous goods line of a consignment note."
    },
    "ConsignmentNoteActorRole": {
      "type": "string",
      "enum": [
        "Shipper",
        "Carrier",
        "Consignee",
        "Driver",
        "System"
      ],
      "description": "Party that produced an event of a consignment note. `Shipper`, `Carrier`, `Consignee` and `Driver` are the parties of the carriage; `System` is the application itself. New values may be added; clients must accept unknown values."
    },
    "ConsignmentNoteStatus": {
      "type": "string",
      "enum": [
        "Draft",
        "Validated",
        "Issued",
        "InProgress",
        "Delivered",
        "Cancelled",
        "Failed"
      ],
      "description": "Status of the consignment note. `Draft`: editable. `Validated`: validation passed, not issued. `Issued`: issued; the data of the note is locked. `InProgress`: goods taken over and in transit. `Delivered`: signed by the consignee. `Cancelled`: cancelled. `Failed`: the issue or the synchronisation failed; see `lastError` in the issue state. New values may be added; clients must accept unknown values."
    },
    "ConsignmentNotePaperReason": {
      "type": "string",
      "enum": [
        "RouteNotCovered",
        "ElectronicIssueNotEnabled"
      ],
      "description": "Reason why a note is issued on paper. `RouteNotCovered`: the country of taking over or the country of delivery is not a party to the 2008 Additional Protocol to the CMR on the issue date. `ElectronicIssueNotEnabled`: the account cannot issue this kind of note electronically: the user has no electronic consignment note licence, or no electronic note service is configured for the account. New values may be added; clients must accept unknown values."
    },
    "ConsignmentNoteCarrierResponse": {
      "allOf": [
        {
          "$ref": "#/definitions/ConsignmentNoteCarrier"
        },
        {
          "type": "object",
          "properties": {
            "consignmentNoteCarrierId": {
              "type": "integer",
              "format": "int64",
              "description": "Identifier of the carrier in the note.",
              "example": 6601
            },
            "carrier": {
              "allOf": [
                {
                  "$ref": "#/definitions/ParticipantResponseData"
                }
              ],
              "description": "Data of the carrier."
            },
            "driver": {
              "allOf": [
                {
                  "$ref": "#/definitions/ParticipantResponseData"
                }
              ],
              "description": "Data of the driver, when the driver is a participant."
            }
          }
        }
      ],
      "description": "Carrier of the consignment note with its data."
    },
    "ConsolidationRequest": {
      "type": "object",
      "properties": {
        "consignmentId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the consignment to consolidate; it must belong to the account of the user.",
          "example": 48213
        },
        "clientReference": {
          "type": "string",
          "description": "Reference of the client, such as an order or delivery note number.",
          "example": "PO-9001",
          "maxLength": 50
        },
        "remarks": {
          "type": "string",
          "description": "Remarks for the consolidator, such as the requested date or delivery instructions.",
          "example": "Delivery required before 15 November",
          "maxLength": 1000
        }
      },
      "required": [
        "consignmentId"
      ],
      "description": "Request to consolidate a consignment. It is addressed to the consultancy (external safety adviser) account to which the client account belongs, which must hold the consolidation add-on. The consignment must be valid, must not belong to a master consignment and can have only one pending or accepted request."
    },
    "ConsolidationRequestAcceptance": {
      "type": "object",
      "properties": {
        "masterConsignmentId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of an existing master consignment of the consolidator account, with the same regulation and in status `Draft`, `Submitted`, `InformationRequested` or `PreApproved`.",
          "example": 97
        },
        "newMasterConsignment": {
          "allOf": [
            {
              "$ref": "#/definitions/MasterConsignment"
            }
          ],
          "description": "Master consignment to create in status `Draft` for this request, when no `masterConsignmentId` is given."
        },
        "remarks": {
          "type": "string",
          "description": "Conditions of the acceptance, shown to the client.",
          "example": "Delivery to the terminal by 10 November",
          "maxLength": 1000
        }
      },
      "description": "Acceptance of a consolidation request: exactly one of `masterConsignmentId` and `newMasterConsignment` is required. The consignment is added (`ConsignmentAttached` event with the number of the request), a data snapshot is taken and the client is notified."
    },
    "WebhookSubscriptionsResponse": {
      "type": "object",
      "properties": {
        "webhookSubscriptions": {
          "type": "array",
          "description": "Webhook subscriptions of the account.",
          "items": {
            "$ref": "#/definitions/WebhookSubscriptionResponseData"
          }
        }
      },
      "description": "Container for the webhook subscriptions of the account."
    },
    "WebhookSubscriptionsResponseOK": {
      "description": "Composite response combining the webhook subscriptions of the account with the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/WebhookSubscriptionsResponse"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "WebhookSubscriptionResponseData": {
      "type": "object",
      "properties": {
        "webhookSubscriptionId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the webhook subscription.",
          "example": 3
        },
        "url": {
          "type": "string",
          "description": "HTTPS endpoint that receives the notifications.",
          "example": "https://tms.example.com/dgassistant/webhook",
          "x-nullable": true
        },
        "eventTypes": {
          "type": "array",
          "description": "Subscribed events; every event of the account when empty.",
          "items": {
            "$ref": "#/definitions/WebhookEventType"
          },
          "x-nullable": true
        },
        "description": {
          "type": "string",
          "description": "Free description of the subscription.",
          "example": "Warehouse management system"
        },
        "isEnabled": {
          "type": "boolean",
          "description": "False after 20 consecutive failed deliveries or after the subscription is disabled; a successful test enables it again."
        },
        "failureCount": {
          "type": "integer",
          "description": "Number of consecutive failed deliveries.",
          "example": 0
        },
        "lastDeliveryOn": {
          "type": "string",
          "description": "Date and time of the last successful delivery, in ISO 8601 format (UTC).",
          "example": "2026-11-02T10:00:00Z",
          "format": "date-time"
        },
        "lastError": {
          "type": "string",
          "description": "Last error (HTTP status or exception).",
          "example": "HTTP 500"
        },
        "createdOn": {
          "type": "string",
          "description": "Date and time of creation, in ISO 8601 format (UTC).",
          "example": "2026-11-02T10:00:00Z",
          "format": "date-time"
        }
      },
      "description": "Webhook subscription of the account with its state.",
      "required": [
        "webhookSubscriptionId",
        "url",
        "eventTypes",
        "isEnabled",
        "failureCount"
      ]
    },
    "WebhookSubscription": {
      "type": "object",
      "properties": {
        "url": {
          "type": "string",
          "description": "HTTPS endpoint that receives the notifications; the body posted to it is described by the `WebhookNotification` schema.",
          "example": "https://tms.example.com/dgassistant/webhook",
          "maxLength": 500
        },
        "eventTypes": {
          "type": "array",
          "description": "Events to deliver; every event of the account when empty.",
          "items": {
            "$ref": "#/definitions/WebhookEventType"
          }
        },
        "description": {
          "type": "string",
          "description": "Free description of the subscription.",
          "example": "Warehouse management system",
          "maxLength": 100
        }
      },
      "required": [
        "url"
      ],
      "description": "Webhook subscription of the account, at most five per account. The signing secret is generated by the application and returned only once, on creation."
    },
    "ConsolidationRequestResponse": {
      "description": "Envelope object carrying the consolidation request data returned by the service under the consolidationRequestResponse property.",
      "type": "object",
      "properties": {
        "consolidationRequestResponse": {
          "$ref": "#/definitions/ConsolidationRequestResponseData"
        }
      }
    },
    "ConsolidationRequestResponseOK": {
      "description": "Composite response combining consolidation request data with the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/ConsolidationRequestResponse"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "ConsolidationRequestResponseData": {
      "type": "object",
      "properties": {
        "consolidationRequestId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the consolidation request.",
          "example": 88
        },
        "consolidationRequestNumber": {
          "type": "string",
          "description": "Number of the request.",
          "example": "PC-2026-0031",
          "x-nullable": true
        },
        "status": {
          "allOf": [
            {
              "$ref": "#/definitions/ConsolidationRequestStatus"
            }
          ],
          "description": "Status of the request."
        },
        "consignment": {
          "allOf": [
            {
              "$ref": "#/definitions/HouseConsignmentSummary"
            }
          ],
          "description": "Consignment to consolidate."
        },
        "requesterAccountCode": {
          "type": "string",
          "description": "Code of the client account.",
          "example": "WP001"
        },
        "requesterAccountName": {
          "type": "string",
          "description": "Name of the client account.",
          "example": "Pinturas Levante S.L."
        },
        "consolidatorAccountCode": {
          "type": "string",
          "description": "Code of the consolidator (consultancy) account.",
          "example": "CO001"
        },
        "consolidatorAccountName": {
          "type": "string",
          "description": "Name of the consolidator account.",
          "example": "Consolidation Services Ltd"
        },
        "clientReference": {
          "type": "string",
          "description": "Reference of the client.",
          "example": "PO-9001"
        },
        "remarks": {
          "type": "string",
          "description": "Remarks of the client.",
          "example": "Delivery required before 15 November"
        },
        "requestedOn": {
          "type": "string",
          "description": "Date and time of the request, in ISO 8601 format (UTC).",
          "example": "2026-11-02T10:00:00Z",
          "format": "date-time"
        },
        "requestedBy": {
          "type": "string",
          "description": "Login of the user who sent the request.",
          "example": "client@example.com"
        },
        "decidedOn": {
          "type": "string",
          "description": "Date and time of the decision, in ISO 8601 format (UTC).",
          "example": "2026-11-03T09:00:00Z",
          "format": "date-time"
        },
        "decidedBy": {
          "type": "string",
          "description": "Login of the consolidator user who took the decision.",
          "example": "planner@example.com"
        },
        "decisionRemarks": {
          "type": "string",
          "description": "Reason for the rejection or conditions of the acceptance.",
          "example": "Delivery to the terminal by 10 November"
        },
        "completedOn": {
          "type": "string",
          "description": "Date and time of completion, in ISO 8601 format (UTC).",
          "example": "2026-11-12T16:00:00Z",
          "format": "date-time"
        },
        "masterConsignment": {
          "allOf": [
            {
              "$ref": "#/definitions/MasterConsignmentSummary"
            }
          ],
          "description": "Master consignment to which the consignment was added, once accepted."
        },
        "nominatedTransportMovementNumber": {
          "type": "string",
          "description": "Voyage, flight or journey nominated for the master consignment, when there is one.",
          "example": "PT 092S"
        },
        "nominatedMovementDeparture": {
          "type": "string",
          "description": "Planned departure of the nominated transport movement, in ISO 8601 format (UTC).",
          "example": "2026-11-02T10:00:00Z",
          "format": "date-time"
        },
        "nominatedMovementArrival": {
          "type": "string",
          "description": "Planned arrival of the nominated transport movement, in ISO 8601 format (UTC).",
          "example": "2026-11-06T08:00:00Z",
          "format": "date-time"
        },
        "hasChangedAfterAcceptance": {
          "type": "boolean",
          "description": "True when the client changed the consignment after the acceptance, so that its content no longer matches the accepted snapshot; the consolidator must check the transport equipment and the calculations again."
        },
        "requestSnapshotId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the data snapshot of the consignment taken when the request was sent. Absent once the snapshot has been deleted at the end of its storage period.",
          "example": 3401
        },
        "acceptedSnapshotId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the data snapshot of the consignment taken at acceptance. Absent once the snapshot has been deleted at the end of its storage period.",
          "example": 3402
        }
      },
      "description": "Consolidation request with its decision and, once accepted, the data of the master consignment that the client may follow.",
      "required": [
        "consolidationRequestId",
        "consolidationRequestNumber",
        "status",
        "requestedOn",
        "hasChangedAfterAcceptance"
      ]
    },
    "WebhookDeliveriesResponse": {
      "type": "object",
      "properties": {
        "webhookDeliveries": {
          "type": "array",
          "description": "Most recent deliveries, newest first (the last 200).",
          "items": {
            "$ref": "#/definitions/WebhookDelivery"
          }
        }
      },
      "description": "Container for the recent deliveries of the webhook subscription."
    },
    "WebhookDeliveriesResponseOK": {
      "description": "Composite response combining the recent deliveries of the webhook subscription with the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/WebhookDeliveriesResponse"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "ConsolidationRequestRejection": {
      "type": "object",
      "properties": {
        "remarks": {
          "type": "string",
          "description": "Reason for the rejection, shown to the client.",
          "example": "The consignment is not ready for the cut-off",
          "maxLength": 1000
        }
      },
      "required": [
        "remarks"
      ],
      "description": "Rejection of a consolidation request."
    },
    "WebhookDelivery": {
      "type": "object",
      "properties": {
        "deliveryId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the delivery.",
          "example": 90412
        },
        "eventType": {
          "allOf": [
            {
              "$ref": "#/definitions/WebhookEventType"
            }
          ],
          "description": "Event notified by the delivery."
        },
        "subjectType": {
          "allOf": [
            {
              "$ref": "#/definitions/WebhookSubjectType"
            }
          ],
          "description": "Kind of resource to which the notification refers."
        },
        "subjectId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the resource to which the notification refers.",
          "example": 97
        },
        "status": {
          "allOf": [
            {
              "$ref": "#/definitions/WebhookDeliveryStatus"
            }
          ],
          "description": "State of the delivery."
        },
        "attemptCount": {
          "type": "integer",
          "description": "Attempts made, six at most.",
          "example": 1
        },
        "createdOn": {
          "type": "string",
          "description": "Date and time of creation, in ISO 8601 format (UTC).",
          "example": "2026-11-02T10:00:00Z",
          "format": "date-time"
        },
        "nextAttemptOn": {
          "type": "string",
          "description": "Date and time of the next attempt, while pending, in ISO 8601 format (UTC).",
          "example": "2026-11-02T10:05:00Z",
          "format": "date-time"
        },
        "deliveredOn": {
          "type": "string",
          "description": "Date and time of the successful delivery, in ISO 8601 format (UTC).",
          "example": "2026-11-02T10:00:01Z",
          "format": "date-time"
        },
        "lastHttpStatusCode": {
          "type": "integer",
          "description": "Last HTTP status code received from the endpoint.",
          "example": 200
        },
        "lastError": {
          "type": "string",
          "description": "Last error of the delivery (HTTP status or exception).",
          "example": "HTTP 500"
        }
      },
      "description": "Delivery of one notification with its attempts, kept for three months.",
      "required": [
        "deliveryId",
        "eventType",
        "subjectType",
        "subjectId",
        "status",
        "attemptCount",
        "createdOn"
      ]
    },
    "ConsolidationRequestsResponse": {
      "type": "object",
      "properties": {
        "consolidationRequests": {
          "type": "array",
          "description": "Consolidation requests found on the page.",
          "items": {
            "$ref": "#/definitions/ConsolidationRequestSummary"
          }
        }
      },
      "description": "Container for a page of consolidation requests."
    },
    "ConsolidationRequestsResponseOK": {
      "description": "Composite response combining a page of consolidation requests with the paging data and the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/ConsolidationRequestsResponse"
        },
        {
          "$ref": "#/definitions/PagedResult"
        },
        {
          "$ref": "#/definitions/ApiResponseOK"
        }
      ]
    },
    "WebhookDeliveryStatus": {
      "type": "string",
      "enum": [
        "Pending",
        "Delivered",
        "Failed",
        "Discarded"
      ],
      "description": "State of the delivery of one notification. `Pending`: waiting for the next attempt. `Delivered`: the endpoint answered with a 2xx status. `Failed`: the six attempts are exhausted. `Discarded`: the subscription was disabled or deleted before the delivery. New values may be added; clients must accept unknown values."
    },
    "WebhookSubjectType": {
      "type": "string",
      "enum": [
        "ConsolidationRequest",
        "MasterConsignment",
        "TransportMovement",
        "ConsignmentNote",
        "WebhookSubscription"
      ],
      "description": "Kind of resource to which a webhook notification refers. New values may be added; clients must accept unknown values."
    },
    "WebhookEventType": {
      "type": "string",
      "enum": [
        "ConsolidationRequestCreated",
        "ConsolidationRequestAccepted",
        "ConsolidationRequestRejected",
        "ConsolidationRequestWithdrawn",
        "MasterConsignmentStatusChanged",
        "MovementDocumentIssued",
        "ConsignmentNoteEventRecorded",
        "Ping"
      ],
      "description": "Events to which a webhook subscription can subscribe, with the accounts that each one reaches:\n\n- `ConsolidationRequestCreated` and `ConsolidationRequestWithdrawn`: the consolidator account.\n- `ConsolidationRequestAccepted` and `ConsolidationRequestRejected`: the client account.\n- `MasterConsignmentStatusChanged`: the consolidator and every client with a consignment in the master consignment.\n- `MovementDocumentIssued`: the owner account, only when a user with write access to that account generates the documents.\n- `ConsignmentNoteEventRecorded`: the owner account.\n- `Ping`: sent by the test operation.\n\nAn event that reaches an account also reaches its company, its group and its consultancy. New values may be added; clients must accept unknown values."
    },
    "WebhookSubscriptionSecret": {
      "type": "object",
      "properties": {
        "secret": {
          "type": "string",
          "description": "Signing secret in the Standard Webhooks format: `whsec_` followed by the key in base 64. It is shown only in this response; store it to verify the `webhook-signature` header (see `WebhookNotification`)."
        }
      },
      "description": "Signing secret of the new webhook subscription."
    },
    "WebhookSubscriptionAddItemResponseOK": {
      "description": "Composite success response combining the identifier and the signing secret of the new subscription with the standard success envelope.",
      "allOf": [
        {
          "$ref": "#/definitions/AddedItemId"
        },
        {
          "$ref": "#/definitions/WebhookSubscriptionSecret"
        },
        {
          "$ref": "#/definitions/ApiResponseAddItemOK"
        }
      ]
    },
    "ConsolidationRequestSummary": {
      "type": "object",
      "properties": {
        "consolidationRequestId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the consolidation request.",
          "example": 88
        },
        "consolidationRequestNumber": {
          "type": "string",
          "description": "Number of the request.",
          "example": "PC-2026-0031",
          "x-nullable": true
        },
        "status": {
          "allOf": [
            {
              "$ref": "#/definitions/ConsolidationRequestStatus"
            }
          ],
          "description": "Status of the request."
        },
        "consignmentId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the consignment to consolidate.",
          "example": 48213
        },
        "consignmentNumber": {
          "type": "string",
          "description": "Number of the consignment.",
          "example": "445",
          "x-nullable": true
        },
        "regulation": {
          "allOf": [
            {
              "$ref": "#/definitions/DangerousGoodsRegulation"
            }
          ],
          "description": "Regulation of the consignment."
        },
        "shipperName": {
          "type": "string",
          "description": "Name of the shipper of the consignment.",
          "example": "Pinturas Levante S.L."
        },
        "consigneeName": {
          "type": "string",
          "description": "Name of the first consignee of the consignment.",
          "example": "Farben Nord GmbH"
        },
        "isValid": {
          "type": "boolean",
          "description": "Regulatory validity of the consignment."
        },
        "requesterAccountCode": {
          "type": "string",
          "description": "Code of the client account.",
          "example": "WP001"
        },
        "clientReference": {
          "type": "string",
          "description": "Reference of the client.",
          "example": "PO-9001"
        },
        "requestedOn": {
          "type": "string",
          "description": "Date and time of the request, in ISO 8601 format (UTC).",
          "example": "2026-11-02T10:00:00Z",
          "format": "date-time"
        },
        "decidedOn": {
          "type": "string",
          "description": "Date and time of the decision, in ISO 8601 format (UTC).",
          "example": "2026-11-03T09:00:00Z",
          "format": "date-time"
        },
        "masterConsignmentNumber": {
          "type": "string",
          "description": "Number of the master consignment, once accepted.",
          "example": "MC-2026-0007"
        },
        "nominatedTransportMovementNumber": {
          "type": "string",
          "description": "Number of the nominated transport movement, when there is one.",
          "example": "PT 092S"
        },
        "hasChangedAfterAcceptance": {
          "type": "boolean",
          "description": "True when the client changed the consignment after the acceptance."
        }
      },
      "description": "Consolidation request as listed in a search.",
      "required": [
        "consolidationRequestId",
        "consolidationRequestNumber",
        "status",
        "consignmentId",
        "consignmentNumber",
        "regulation",
        "isValid",
        "requestedOn",
        "hasChangedAfterAcceptance"
      ]
    },
    "ConsolidationRequestStatus": {
      "type": "string",
      "enum": [
        "Requested",
        "Accepted",
        "Rejected",
        "Withdrawn",
        "Completed"
      ],
      "description": "Status of a consolidation request. `Requested`: sent by the client account and pending the decision of the consolidator. `Accepted`: the consignment was added to a master consignment of the consolidator. `Rejected`: rejected with a reason. `Withdrawn`: withdrawn by the client while it was still pending. `Completed`: the master consignment was closed or the consignment was dispatched. New values may be added; clients must accept unknown values."
    },
    "WebhookNotification": {
      "type": "object",
      "properties": {
        "deliveryId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the delivery, the same value sent in the `webhook-id` header; the repeated deliveries of a retry keep it.",
          "example": 90412
        },
        "eventType": {
          "allOf": [
            {
              "$ref": "#/definitions/WebhookEventType"
            }
          ],
          "description": "Event that produced the notification."
        },
        "occurredOn": {
          "type": "string",
          "description": "Date and time at which the event happened, in ISO 8601 format (UTC).",
          "example": "2026-11-02T10:00:00Z",
          "format": "date-time"
        },
        "accountCode": {
          "type": "string",
          "description": "Code of the subscriber account.",
          "example": "CO001"
        },
        "subjectType": {
          "allOf": [
            {
              "$ref": "#/definitions/WebhookSubjectType"
            }
          ],
          "description": "Kind of resource to which the notification refers."
        },
        "subjectId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the resource, to be used with the operation of its kind.",
          "example": 97
        },
        "subjectNumber": {
          "type": "string",
          "description": "Number of the resource (request, master consignment, movement or consignment note).",
          "example": "MC-2026-0007"
        },
        "data": {
          "type": "object",
          "description": "Summary of the resource at the time of the event; its shape depends on `subjectType`, as described for this object."
        }
      },
      "required": [
        "deliveryId",
        "eventType",
        "occurredOn",
        "subjectType",
        "subjectId"
      ],
      "description": "Body posted to the subscribed endpoint (POST, JSON), signed according to Standard Webhooks (https://www.standardwebhooks.com). It carries three headers:\n\n- `webhook-id`: identifier of the delivery, the same in every retry.\n- `webhook-timestamp`: Unix time in seconds of the attempt.\n- `webhook-signature`: `v1,` followed by the HMAC-SHA256 in base 64 of the signed text, computed with the key of the subscription.\n\nThe signed text is the value of `webhook-id`, a full stop, the value of `webhook-timestamp`, a full stop and the exact body received, without serialising the JSON again. The key is the secret of the subscription without its `whsec_` prefix, decoded from base 64. The receiver must reject timestamps more than 5 minutes away from its own clock and discard the `webhook-id` values already received; the libraries of Standard Webhooks can be used to verify the notifications.\n\nThe endpoint must answer 2xx within 10 seconds; otherwise the delivery is retried with a new `webhook-timestamp`, and the attempts are listed by GET /webhookSubscription/{webhookSubscriptionId}/delivery.\n\nThe shape of `data` depends on `subjectType`:\n\n- `ConsolidationRequest`: a `ConsolidationRequestSummary`.\n- `MasterConsignment`: a `MasterConsignmentSummary`.\n- `TransportMovement`: a `WebhookTransportMovementData`.\n- `ConsignmentNote`: a `WebhookConsignmentNoteData`.\n- `WebhookSubscription`: sent by the test operation, without `data`."
    },
    "WebhookNotificationHeader": {
      "type": "object",
      "properties": {
        "deliveryId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the delivery, the same value sent in the `webhook-id` header; the repeated deliveries of a retry keep it.",
          "example": 90412
        },
        "eventType": {
          "allOf": [
            {
              "$ref": "#/definitions/WebhookEventType"
            }
          ],
          "description": "Event that produced the notification."
        },
        "occurredOn": {
          "type": "string",
          "description": "Date and time at which the event happened, in ISO 8601 format (UTC).",
          "example": "2026-11-02T10:00:00Z",
          "format": "date-time"
        },
        "accountCode": {
          "type": "string",
          "description": "Code of the subscriber account.",
          "example": "CO001"
        },
        "subjectType": {
          "allOf": [
            {
              "$ref": "#/definitions/WebhookSubjectType"
            }
          ],
          "description": "Kind of resource to which the notification refers."
        },
        "subjectId": {
          "type": "integer",
          "format": "int64",
          "description": "Identifier of the resource, to be used with the operation of its kind.",
          "example": 97
        },
        "subjectNumber": {
          "type": "string",
          "description": "Number of the resource (request, master consignment, movement or consignment note).",
          "example": "MC-2026-0007"
        }
      },
      "required": [
        "deliveryId",
        "eventType",
        "occurredOn",
        "subjectType",
        "subjectId"
      ],
      "description": "Common part of every webhook notification: delivery, event, time, subscriber account and resource."
    },
    "WebhookTransportMovementData": {
      "allOf": [
        {
          "$ref": "#/definitions/TransportMovementSummary"
        },
        {
          "type": "object",
          "properties": {
            "documentTypes": {
              "type": "array",
              "description": "Types of the documents issued.",
              "items": {
                "$ref": "#/definitions/TransportMovementDocumentType"
              }
            }
          }
        }
      ],
      "description": "Data of a notification of a transport movement: its summary and the types of the documents issued."
    },
    "WebhookConsignmentNoteData": {
      "allOf": [
        {
          "$ref": "#/definitions/ConsignmentNoteSummary"
        },
        {
          "type": "object",
          "properties": {
            "eventId": {
              "type": "integer",
              "format": "int64",
              "description": "Identifier of the event recorded, as listed by the events operation.",
              "example": 20431
            },
            "relatedEventId": {
              "type": "integer",
              "format": "int64",
              "description": "For `Accepted` and `Error` events that resolve a change or a cancellation, identifier of that event.",
              "example": 20430
            },
            "eventType": {
              "allOf": [
                {
                  "$ref": "#/definitions/ConsignmentNoteEventType"
                }
              ],
              "description": "Type of the event recorded."
            }
          }
        }
      ],
      "description": "Data of a notification of a consignment note: its summary and the event recorded."
    },
    "WebhookConsolidationRequestNotification": {
      "allOf": [
        {
          "$ref": "#/definitions/WebhookNotificationHeader"
        },
        {
          "type": "object",
          "properties": {
            "data": {
              "allOf": [
                {
                  "$ref": "#/definitions/ConsolidationRequestSummary"
                }
              ],
              "description": "Summary of the consolidation request at the time of the event."
            }
          }
        }
      ],
      "description": "Notification of a consolidation request (`subjectType` `ConsolidationRequest`)."
    },
    "WebhookMasterConsignmentNotification": {
      "allOf": [
        {
          "$ref": "#/definitions/WebhookNotificationHeader"
        },
        {
          "type": "object",
          "properties": {
            "data": {
              "allOf": [
                {
                  "$ref": "#/definitions/MasterConsignmentSummary"
                }
              ],
              "description": "Summary of the master consignment at the time of the event."
            }
          }
        }
      ],
      "description": "Notification of a master consignment (`subjectType` `MasterConsignment`)."
    },
    "WebhookTransportMovementNotification": {
      "allOf": [
        {
          "$ref": "#/definitions/WebhookNotificationHeader"
        },
        {
          "type": "object",
          "properties": {
            "data": {
              "allOf": [
                {
                  "$ref": "#/definitions/WebhookTransportMovementData"
                }
              ],
              "description": "Summary of the transport movement and the documents issued."
            }
          }
        }
      ],
      "description": "Notification of a transport movement (`subjectType` `TransportMovement`)."
    },
    "WebhookConsignmentNoteNotification": {
      "allOf": [
        {
          "$ref": "#/definitions/WebhookNotificationHeader"
        },
        {
          "type": "object",
          "properties": {
            "data": {
              "allOf": [
                {
                  "$ref": "#/definitions/WebhookConsignmentNoteData"
                }
              ],
              "description": "Summary of the consignment note and the event recorded."
            }
          }
        }
      ],
      "description": "Notification of a consignment note (`subjectType` `ConsignmentNote`)."
    },
    "WebhookPingNotification": {
      "allOf": [
        {
          "$ref": "#/definitions/WebhookNotificationHeader"
        }
      ],
      "description": "Test notification sent by the test operation (`subjectType` `WebhookSubscription`), without `data`."
    }
  },
  "parameters": {
    "requestGuid": {
      "in": "query",
      "name": "requestGuid",
      "required": false,
      "type": "string",
      "description": "Identifier of the request, up to 36 characters, used to trace it and returned in the response.",
      "maxLength": 36
    },
    "VesselId": {
      "name": "vesselId",
      "in": "path",
      "required": true,
      "description": "Identifier of the vessel.",
      "x-example": 12,
      "type": "integer",
      "format": "int64"
    },
    "TransportMeansId": {
      "name": "transportMeansId",
      "in": "path",
      "required": true,
      "description": "Identifier of the vehicle or trailer.",
      "x-example": 34,
      "type": "integer",
      "format": "int64"
    },
    "LocationRestrictionId": {
      "name": "locationRestrictionId",
      "in": "path",
      "required": true,
      "description": "Identifier of the location restriction.",
      "x-example": 41,
      "type": "integer",
      "format": "int64"
    },
    "Page": {
      "name": "page",
      "in": "query",
      "required": false,
      "description": "Page number, starting at 1.",
      "x-example": 1,
      "type": "integer",
      "default": 1
    },
    "PageSize": {
      "name": "pageSize",
      "in": "query",
      "required": false,
      "description": "Number of items per page, between 1 and 200.",
      "x-example": 50,
      "type": "integer",
      "default": 50,
      "minimum": 1,
      "maximum": 200
    },
    "LocationCode": {
      "name": "locationCode",
      "in": "path",
      "required": true,
      "description": "Code of the location among the locations of the account: the UN/LOCODE for catalogue locations, or the code given by the account to a location of its own.",
      "x-example": "ESVLC",
      "type": "string",
      "maxLength": 20
    },
    "TransportEquipmentId": {
      "name": "transportEquipmentId",
      "in": "path",
      "required": true,
      "description": "Identifier of the transport equipment.",
      "x-example": 1207,
      "type": "integer",
      "format": "int64"
    },
    "ContentId": {
      "name": "contentId",
      "in": "path",
      "required": true,
      "description": "Identifier of the loading of an item into the transport equipment.",
      "x-example": 5521,
      "type": "integer",
      "format": "int64"
    },
    "TransportMovementId": {
      "name": "transportMovementId",
      "in": "path",
      "required": true,
      "description": "Identifier of the transport movement.",
      "x-example": 311,
      "type": "integer",
      "format": "int64"
    },
    "CallId": {
      "name": "callId",
      "in": "path",
      "required": true,
      "description": "Identifier of the call of the transport movement.",
      "x-example": 902,
      "type": "integer",
      "format": "int64"
    },
    "MasterConsignmentId": {
      "name": "masterConsignmentId",
      "in": "path",
      "required": true,
      "description": "Identifier of the master consignment, as returned in `newItemId` on creation.",
      "x-example": 97,
      "type": "integer",
      "format": "int64"
    },
    "ConsignmentIdPath": {
      "name": "consignmentId",
      "in": "path",
      "required": true,
      "description": "Identifier of the consignment.",
      "x-example": 48213,
      "type": "integer",
      "format": "int64"
    },
    "ConsignmentNoteId": {
      "name": "consignmentNoteId",
      "in": "path",
      "required": true,
      "description": "Identifier of the consignment note.",
      "x-example": 5120,
      "type": "integer",
      "format": "int64"
    },
    "EventId": {
      "name": "eventId",
      "in": "path",
      "required": true,
      "description": "Identifier of the event of the consignment note.",
      "x-example": 20431,
      "type": "integer",
      "format": "int64"
    },
    "AttachmentId": {
      "name": "attachmentId",
      "in": "path",
      "required": true,
      "description": "Identifier of the attachment of the consignment note.",
      "x-example": 771,
      "type": "integer",
      "format": "int64"
    },
    "ConsolidationRequestId": {
      "name": "consolidationRequestId",
      "in": "path",
      "required": true,
      "description": "Identifier of the consolidation request.",
      "x-example": 88,
      "type": "integer",
      "format": "int64"
    },
    "WebhookSubscriptionId": {
      "name": "webhookSubscriptionId",
      "in": "path",
      "required": true,
      "description": "Identifier of the webhook subscription of the account.",
      "x-example": 3,
      "type": "integer",
      "format": "int64"
    },
    "MixedPackingProductReference": {
      "name": "reference",
      "in": "path",
      "required": true,
      "description": "Reference of the mixed packing product in the catalogue, as given on creation.",
      "x-example": "MPREF-0001",
      "type": "string",
      "maxLength": 50
    },
    "SimpleProductReference": {
      "name": "reference",
      "in": "path",
      "required": true,
      "description": "Reference of the simple product in the catalogue, as given on creation.",
      "type": "string",
      "maxLength": 50
    },
    "ParticipantCode": {
      "name": "participantCode",
      "in": "path",
      "required": true,
      "description": "Code of the predefined participant.",
      "type": "string",
      "maxLength": 50
    },
    "DocumentToken": {
      "name": "documentToken",
      "in": "path",
      "required": true,
      "description": "Public token of the document snapshot, or of the cargo transport unit, as encoded in the QR code of the document or of the consolidation label. 32 hexadecimal characters.",
      "type": "string",
      "minLength": 32,
      "maxLength": 32
    },
    "OverpackId": {
      "name": "overpackId",
      "in": "path",
      "required": true,
      "description": "Identifier of the overpack in the consignment.",
      "type": "integer",
      "format": "int64"
    },
    "ProductId": {
      "name": "productId",
      "in": "path",
      "required": true,
      "description": "Identifier of the product in the consignment.",
      "type": "integer",
      "format": "int64"
    },
    "MixedPackingProductId": {
      "name": "mixedPackingProductId",
      "in": "path",
      "required": true,
      "description": "Identifier of the mixed packing product in the consignment.",
      "type": "integer",
      "format": "int64"
    },
    "MixedPackingProductInteractiveId": {
      "name": "mixedPackingProductInteractiveId",
      "in": "path",
      "required": true,
      "description": "Identifier of the interactive mixed packing product.",
      "type": "integer",
      "format": "int64"
    }
  },
  "responses": {
    "BadRequest": {
      "description": "Bad request: the request is not valid, for example because of missing or wrong data, or because an identifier or code in the body or in the query string does not exist.",
      "schema": {
        "$ref": "#/definitions/ApiResponseError400"
      }
    },
    "Unauthorized": {
      "description": "Unauthorized",
      "schema": {
        "$ref": "#/definitions/ApiResponseError401"
      }
    },
    "Forbidden": {
      "description": "Forbidden",
      "schema": {
        "$ref": "#/definitions/ApiResponseError403"
      }
    },
    "Conflict": {
      "description": "Conflict",
      "schema": {
        "$ref": "#/definitions/ApiResponseError409"
      }
    },
    "UnexpectedError": {
      "description": "Unexpected Error",
      "schema": {
        "$ref": "#/definitions/ApiResponseError500"
      }
    }
  }
}