{
  "openapi": "3.0.1",
  "info": {
    "title": "API Referential List",
    "description": "API specifications for API Referential List interface issued by SOGET",
    "contact": {
      "name": "SOGET",
      "url": "https://www.soget.fr/",
      "email": "hello@soget.fr"
    },
    "license": {
      "name": "Copyright © SOGET",
      "url": "https://www.soget.fr/"
    },
    "version": "1.4"
  },
  "tags": [
    {
      "name": "Actors",
      "description": "List of actor codes referenced in the S)ONE application."
    },
    {
      "name": "ContainerTypes",
      "description": "Code list from the ISO 6346 standard specifying the type of shipping containers, used in international trade and electronic shipping messages."
    },
    {
      "name": "Countries",
      "description": "Code list from the ISO 3166 standard, defining codes for the names of countries on 2 or 3 digits alpha-codes."
    },
    {
      "name": "DangerousCodes",
      "description": "Code list of dangerous goods types and classes, used in international trade and electronic shipping messages."
    },
    {
      "name": "DocumentTypes",
      "description": "Code list from Un/EDIFACT[1001] specifying the documents names used in international trade and electronic shipping messages."
    },
    {
      "name": "EventTypes",
      "description": "List of event types referenced in the S)ONE application."
    },
    {
      "name": "Locations",
      "description": "List of location codes referenced in the S)ONE application."
    },
    {
      "name": "LocationTypes",
      "description": "Code list from Un/EDIFACT[3227] specifying the location function code used in international trade and electronic shipping messages."
    },
    {
      "name": "PackagingCodes",
      "description": "Code list from UNECE/rec[21] specifying various packaging type names used in international trade and electronic shipping messages."
    },
    {
      "name": "TransportMeansTypes",
      "description": "List of transport means types referenced in the S)ONE application."
    },
    {
      "name": "TransportModes",
      "description": "Code list from UNECE/rec[19] specifying various transport modes used in international trade and electronic shipping messages."
    },
    {
      "name": "Unlocodes",
      "description": "Code list provided by UNECE for trade and transport locations."
    }
  ],
  "paths": {
    "/actors": {
      "get": {
        "tags": [
          "Actors"
        ],
        "summary": "Filter actors collection.",
        "description": "Sample request:\r\n\r\n`GET /actors?type=FB&location=FR,FRHON&offset=0&limit=5`\r\n    \r\nIf you want to search for multiple values for a given parameter, enter :\r\n\r\n`param=val1,val2`\r\n    \r\nFor example, the query shown above would return the actors that are located in either `FR` or `FRHON`.",
        "parameters": [
          {
            "name": "code",
            "in": "query",
            "description": "Actor code to search for.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "name",
            "in": "query",
            "description": "Actor name to search for.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "type",
            "in": "query",
            "description": "Actor type to search for.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "location",
            "in": "query",
            "description": "Filter by actor's location.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "desc",
            "in": "query",
            "description": "Boolean that indicates the sort order. If it is set to true, results will be sorted by descending order.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Index of the first returned result.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of results to be returned. Max value is 10.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActorItemsResponseModel"
                }
              }
            }
          },
          "400": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HttpBusinessError"
                }
              }
            }
          }
        }
      }
    },
    "/container-types": {
      "get": {
        "tags": [
          "ContainerTypes"
        ],
        "summary": "Filter container types.",
        "description": "Sample request:\r\n\r\n`GET /container-types?description=GP/AERATION PASSIVE SUPERIEURE,&limit=3`\r\n    \r\nIf you want to search for multiple values for a given parameter, enter :\r\n\r\n`param=val1,val2`\r\n    \r\nFor example, the query shown above would return container types that have a height of `8.5` or `8`, a length of `20` and being in the group `22BU`.",
        "parameters": [
          {
            "name": "code",
            "in": "query",
            "description": "Filter by container type's code.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "description",
            "in": "query",
            "description": "Filter by container's type description.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "length",
            "in": "query",
            "description": "Filter by container's type length.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "height",
            "in": "query",
            "description": "Filter by container's type height.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "group",
            "in": "query",
            "description": "Filter by container's type group.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "desc",
            "in": "query",
            "description": "Boolean that indicates the sort order. If it is set to true, results will be sorted by descending order.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Index of the first returned result.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of results to be returned. Max value is 10.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContainerTypeItemsResponseModel"
                }
              }
            }
          },
          "400": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HttpBusinessError"
                }
              }
            }
          }
        }
      }
    },
    "/countries": {
      "get": {
        "tags": [
          "Countries"
        ],
        "summary": "Filter countries.",
        "description": "Sample request:\r\n\r\n`GET /countries?code=FR&offset=0&limit=5`\r\n            \r\nor\r\n            \r\n`GET /countries?code=AD,FR&offset=0&limit=5`\r\n    \r\nIf you want to search for multiple values for a given parameter, enter :\r\n\r\n`param=val1,val2`\r\n    \r\nFor example, the query shown above would return the countries that have a code being either `AD` or `FR`.",
        "parameters": [
          {
            "name": "code",
            "in": "query",
            "description": "Country code to search for.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "name",
            "in": "query",
            "description": "Country name to search for.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "identifier",
            "in": "query",
            "description": "Country identifier to search for.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "desc",
            "in": "query",
            "description": "Boolean that indicates the sort order. If it is set to true, results will be sorted by descending order.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Index of the first returned result.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of results to be returned. Max value is 10.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CountryItemsResponseModel"
                }
              }
            }
          },
          "400": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HttpBusinessError"
                }
              }
            }
          }
        }
      }
    },
    "/dangerous-codes/{type}": {
      "get": {
        "tags": [
          "DangerousCodes"
        ],
        "summary": "Filter dangerous codes.",
        "description": "Sample request:\r\n\r\n`GET /dangerous-codes?type=IMDG&code=1.2,1.1&offset=0&limit=5`\r\n    \r\nThe possible types of dangerous code are :\r\n\r\n* `IMDG` : International Maritime Dangerous Goods codes.\r\n* `UNDG` : United Nations Dangerous Goods codes.\r\n    \r\nIf you want to search for multiple values for a given parameter, enter :\r\n\r\n`param=val1,val2`\r\n    \r\nFor example, the query shown above would return the dangerous codes that have a code of `1.2` or `1.1`.",
        "parameters": [
          {
            "name": "code",
            "in": "query",
            "description": "Search characters.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "description",
            "in": "query",
            "description": "Dangerous code description.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "type",
            "in": "path",
            "description": "Dangerous code type.",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "$ref": "#/components/schemas/DangerousCodeType"
            }
          },
          {
            "name": "desc",
            "in": "query",
            "description": "Boolean that indicates the sort order. If it is set to true, results will be sorted by descending order.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Index of the first returned result.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of results to be returned. Max value is 10.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DangerousCodeItemsResponseModel"
                }
              }
            }
          },
          "400": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HttpBusinessError"
                }
              }
            }
          }
        }
      }
    },
    "/document-types": {
      "get": {
        "tags": [
          "DocumentTypes"
        ],
        "summary": "Filter document types.",
        "description": "Sample request:\r\n\r\n`GET /document-types?code=1&offset=0&limit=4`\r\n            \r\nor\r\n            \r\n`GET /document-types?code=1,5,3,2&offset=0&limit=4`\r\n    \r\nIf you want to search for multiple values for a given parameter, enter :\r\n\r\n`param=val1,val2`\r\n    \r\nFor example, the query shown above would return the document types `1`, `2`, `3` and `5`.",
        "parameters": [
          {
            "name": "code",
            "in": "query",
            "description": "Search characters.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "name",
            "in": "query",
            "description": "Document type name.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "description",
            "in": "query",
            "description": "Document type description.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "desc",
            "in": "query",
            "description": "Boolean that indicates the sort order. If it is set to true, results will be sorted by descending order.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Index of the first returned result.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of results to be returned. Max value is 10.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DocumentTypeItemsResponseModel"
                }
              }
            }
          },
          "400": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HttpBusinessError"
                }
              }
            }
          }
        }
      }
    },
    "/event-types": {
      "get": {
        "tags": [
          "EventTypes"
        ],
        "summary": "Filter event types.",
        "description": "Sample request:\r\n\r\n`GET /event-types?code=ADREQ&offset=0&limit=10`\r\n    \r\nor\r\n    \r\n`GET /event-types?code=ADREQ,AIREQ&offset=0&limit=10`\r\n    \r\nIf you want to search for multiple values for a given parameter, enter :\r\n\r\n`param=val1,val2`\r\n    \r\nFor example, the query shown above would return the event types that have a code of `ADRES` or `AIREQ`.",
        "parameters": [
          {
            "name": "code",
            "in": "query",
            "description": "Search characters.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "name",
            "in": "query",
            "description": "Event type name.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "desc",
            "in": "query",
            "description": "Boolean that indicates the sort order. If it is set to true, results will be sorted by descending order.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Index of the first returned result.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of results to be returned. Max value is 10.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventTypeItemsResponseModel"
                }
              }
            }
          },
          "400": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HttpBusinessError"
                }
              }
            }
          }
        }
      }
    },
    "/locations": {
      "get": {
        "tags": [
          "Locations"
        ],
        "summary": "Filter locations",
        "description": "Sample request:\r\n    \r\n`GET /locations?type=164&offset=0&limit=10`\r\n    \r\nor\r\n    \r\n`GET /locations?type=164,248&offset=0&limit=10`\r\n    \r\nIf you want to search for multiple values for a given parameter, enter :\r\n\r\n`param=val1,val2`\r\n    \r\nFor example, the query shown above would return the locations that have a type of either `164` or `248`.",
        "parameters": [
          {
            "name": "code",
            "in": "query",
            "description": "Location code.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "name",
            "in": "query",
            "description": "Location name.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "type",
            "in": "query",
            "description": "Location type.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "country",
            "in": "query",
            "description": "Location country.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "parent",
            "in": "query",
            "description": "Parent location code (eg. Parent of MTDF-Terminal de France is FRLEH-Le Havre).",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "desc",
            "in": "query",
            "description": "Boolean that indicates the sort order. If it is set to true, results will be sorted by descending order.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Index of the first returned result.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of results to be returned. Max value is 10.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LocationItemsResponseModel"
                }
              }
            }
          },
          "400": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HttpBusinessError"
                }
              }
            }
          }
        }
      }
    },
    "/location-types": {
      "get": {
        "tags": [
          "LocationTypes"
        ],
        "summary": "Filter location types.",
        "description": "Sample request:\r\n    \r\n`GET /location-types?code=1&offset=0&limit=4`\r\n    \r\nor\r\n    \r\n`GET /location-types?code=14,25,26`\r\n    \r\nIf you want to search for multiple values for a given parameter, enter :\r\n\r\n`param=val1,val2`\r\n    \r\nFor example, the query shown above would return the location types that have a code of `14`, `15` or `26`.",
        "parameters": [
          {
            "name": "code",
            "in": "query",
            "description": "Search characters.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "name",
            "in": "query",
            "description": "Location type name.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "description",
            "in": "query",
            "description": "Location type description.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "desc",
            "in": "query",
            "description": "Boolean that indicates the sort order. If it is set to true, results will be sorted by descending order.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Index of the first returned result.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of results to be returned. Max value is 10.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LocationTypeItemsResponseModel"
                }
              }
            }
          },
          "400": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HttpBusinessError"
                }
              }
            }
          }
        }
      }
    },
    "/packaging-codes": {
      "get": {
        "tags": [
          "PackagingCodes"
        ],
        "summary": "Filter packaging codes.",
        "description": "Sample request:\r\n            \r\n`GET /packaging-codes?code=PK&offset=0&limit=1`\r\n            \r\nor\r\n            \r\n`GET /packaging-codes?code=PK,4A`\r\n    \r\nIf you want to search for multiple values for a given parameter, enter :\r\n\r\n`param=val1,val2`\r\n    \r\nFor example, the query shown above would return the packaging codes that have a code of either `1A` or `1C`.",
        "parameters": [
          {
            "name": "code",
            "in": "query",
            "description": "Search characters.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "description",
            "in": "query",
            "description": "Packaging code description.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "desc",
            "in": "query",
            "description": "Boolean that indicates the sort order. If it is set to true, results will be sorted by descending order.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Index of the first returned result.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of results to be returned. Max value is 10.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PackagingCodeItemsResponseModel"
                }
              }
            }
          },
          "400": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HttpBusinessError"
                }
              }
            }
          }
        }
      }
    },
    "/transport-means-types": {
      "get": {
        "tags": [
          "TransportMeansTypes"
        ],
        "summary": "Filter transport means types.",
        "description": "Sample request:\r\n\r\n`GET /transport-means-types?code=1 50&offset=0&limit=10`\r\n\r\nor\r\n\r\n`GET /transport-means-types?code=1 50,1 50 1`\r\n    \r\nIf you want to search for multiple values for a given parameter, enter :\r\n\r\n`param=val1,val2`\r\n    \r\nFor example, the query shown above would return the transport means types that have a code of either `1 50` or `1 50 1`.",
        "parameters": [
          {
            "name": "code",
            "in": "query",
            "description": "Search characters.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "name",
            "in": "query",
            "description": "Transport means type name.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "description",
            "in": "query",
            "description": "Transport means type description.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "desc",
            "in": "query",
            "description": "Boolean that indicates the sort order. If it is set to true, results will be sorted by descending order.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Index of the first returned result.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of results to be returned. Max value is 10.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransportMeansTypeItemsResponseModel"
                }
              }
            }
          },
          "400": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HttpBusinessError"
                }
              }
            }
          }
        }
      }
    },
    "/transport-modes": {
      "get": {
        "tags": [
          "TransportModes"
        ],
        "summary": "Filter transport modes.",
        "description": "Sample request:\r\n            \r\n`GET /transport-modes?code=1&offset=0&limit=4`\r\n            \r\nor\r\n            \r\n`GET /transport-modes?code=1,9,5`\r\n    \r\nIf you want to search for multiple values for a given parameter, enter :\r\n\r\n`param=val1,val2`\r\n    \r\nFor example, the query shown above would return the transport modes that have a code of `1`, `5` or `9`.",
        "parameters": [
          {
            "name": "code",
            "in": "query",
            "description": "Search characters.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "name",
            "in": "query",
            "description": "Transport mode name.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "description",
            "in": "query",
            "description": "Transport mode description.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "desc",
            "in": "query",
            "description": "Boolean that indicates the sort order. If it is set to true, results will be sorted by descending order.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Index of the first returned result.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of results to be returned. Max value is 10.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransportModeItemsResponseModel"
                }
              }
            }
          },
          "400": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HttpBusinessError"
                }
              }
            }
          }
        }
      }
    },
    "/unlocodes": {
      "get": {
        "tags": [
          "Unlocodes"
        ],
        "summary": "Filter UN/LOCODEs.",
        "description": "Sample request:\r\n            \r\n`GET /unlocodes?code=AU&offset=0&limit=10`\r\n            \r\nor\r\n            \r\n`GET /unlocodes?code=FRACO,FRAXV`\r\n    \r\nIf you want to search for multiple values for a given parameter, enter :\r\n\r\n`param=val1,val2`\r\n    \r\nFor example, the query shown above would return the UN/LOCODEs that have a code of `FRACO` or `FRAXV`.",
        "parameters": [
          {
            "name": "code",
            "in": "query",
            "description": "Search characters.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "country",
            "in": "query",
            "description": "UN/LOCODE country.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "name",
            "in": "query",
            "description": "UN/LOCODE name.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "subdivision",
            "in": "query",
            "description": "UN/LOCODE subdivision.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "coordinates",
            "in": "query",
            "description": "UN/LOCODE coordinates.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "desc",
            "in": "query",
            "description": "Boolean that indicates the sort order. If it is set to true, results will be sorted by descending order.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Index of the first returned result.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of results to be returned. Max value is 10.",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnlocodeItemsResponseModel"
                }
              }
            }
          },
          "400": {
            "description": "Unexpected error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HttpBusinessError"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Actor": {
        "type": "object",
        "properties": {
          "code": {
            "maxLength": 32,
            "minLength": 0,
            "type": "string",
            "description": "Code of actor",
            "nullable": true,
            "example": "CCGM"
          },
          "name": {
            "maxLength": 256,
            "minLength": 0,
            "type": "string",
            "description": "Name of actor",
            "nullable": true,
            "example": "CMA CGM"
          },
          "type": {
            "maxLength": 3,
            "minLength": 0,
            "type": "string",
            "description": "Type of actor",
            "nullable": true,
            "example": "FB"
          },
          "location": {
            "maxLength": 5,
            "minLength": 0,
            "type": "string",
            "description": "Location code",
            "nullable": true,
            "example": "FR"
          },
          "organization": {
            "maxLength": 256,
            "minLength": 0,
            "type": "string",
            "description": "Organization of actor",
            "nullable": true,
            "example": "CMA CGM"
          }
        },
        "additionalProperties": false,
        "description": "Actors referenced in the S)ONE application."
      },
      "ActorItemsResponseModel": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer",
            "description": "Total number of items found by the query",
            "format": "int32",
            "example": 11
          },
          "first": {
            "type": "integer",
            "description": "Index of the first returned object",
            "format": "int32",
            "example": 3
          },
          "items": {
            "type": "array",
            "description": "Items returned by the query",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Actor"
            }
          }
        },
        "additionalProperties": false,
        "description": "Generic class containing a set of items returned by a query, along with additional informations."
      },
      "ContainerType": {
        "type": "object",
        "properties": {
          "code": {
            "maxLength": 4,
            "minLength": 0,
            "type": "string",
            "description": "A 4 digit Alpha Numeric Code uniquely describing the container",
            "nullable": true,
            "example": "45G1"
          },
          "description": {
            "maxLength": 256,
            "minLength": 0,
            "type": "string",
            "description": "Description of the Container Type",
            "nullable": true,
            "example": "GP/AERATION PASSIVE SUPERIEURE"
          },
          "length": {
            "type": "number",
            "description": "External length in feet of the container\r\n<br>This field is useless.",
            "format": "double",
            "example": 40,
            "deprecated": true
          },
          "height": {
            "type": "number",
            "description": "External height of container in feet\r\n<br>This field is useless.",
            "format": "double",
            "example": 9.5,
            "deprecated": true
          },
          "group": {
            "maxLength": 4,
            "minLength": 0,
            "type": "string",
            "description": "4 Digit describing the group the codes belong to, more regularly used when sending electronic shipping messages\r\n<br>This field is useless.",
            "nullable": true,
            "example": "45GP",
            "deprecated": true
          }
        },
        "additionalProperties": false,
        "description": "The type of container is based on <a href=\"https://www.iso.org/obp/ui/#iso:std:iso:6346:ed-3:v1:fr\">ISO 6346 standard</a>."
      },
      "ContainerTypeItemsResponseModel": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer",
            "description": "Total number of items found by the query",
            "format": "int32",
            "example": 11
          },
          "first": {
            "type": "integer",
            "description": "Index of the first returned object",
            "format": "int32",
            "example": 3
          },
          "items": {
            "type": "array",
            "description": "Items returned by the query",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/ContainerType"
            }
          }
        },
        "additionalProperties": false,
        "description": "Generic class containing a set of items returned by a query, along with additional informations."
      },
      "Country": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 256,
            "minLength": 0,
            "type": "string",
            "description": "Name of country",
            "nullable": true,
            "example": "France"
          },
          "alphaCode2": {
            "maxLength": 2,
            "minLength": 0,
            "type": "string",
            "description": "Two letter code of country",
            "nullable": true,
            "example": "FR"
          },
          "alphaCode3": {
            "maxLength": 3,
            "minLength": 0,
            "type": "string",
            "description": "Three letter code of country",
            "nullable": true,
            "example": "FRA"
          },
          "identifier": {
            "type": "integer",
            "description": "Digital code of country",
            "format": "int32",
            "example": 250
          }
        },
        "additionalProperties": false,
        "description": "Countries which are based on <a href=\"https://www.iso.org/fr/iso-3166-country-codes.html\">ISO 3166 standard</a>."
      },
      "CountryItemsResponseModel": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer",
            "description": "Total number of items found by the query",
            "format": "int32",
            "example": 11
          },
          "first": {
            "type": "integer",
            "description": "Index of the first returned object",
            "format": "int32",
            "example": 3
          },
          "items": {
            "type": "array",
            "description": "Items returned by the query",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Country"
            }
          }
        },
        "additionalProperties": false,
        "description": "Generic class containing a set of items returned by a query, along with additional informations."
      },
      "DangerousCode": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/DangerousCodeType"
          },
          "code": {
            "maxLength": 11,
            "minLength": 0,
            "type": "string",
            "description": "Dangerous Code",
            "nullable": true,
            "example": "1.1"
          },
          "description": {
            "maxLength": 256,
            "minLength": 0,
            "type": "string",
            "description": "Description of Dangerous Code",
            "nullable": true,
            "example": "Substances and articles which have a mass explosion hazard"
          }
        },
        "additionalProperties": false,
        "description": "Dangerous Code which is based on <a href=\"https://unece.org/DAM/trans/danger/publi/unrec/English/toc.pdf\">Dangerous Goods List</a> of UNECE"
      },
      "DangerousCodeItemsResponseModel": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer",
            "description": "Total number of items found by the query",
            "format": "int32",
            "example": 11
          },
          "first": {
            "type": "integer",
            "description": "Index of the first returned object",
            "format": "int32",
            "example": 3
          },
          "items": {
            "type": "array",
            "description": "Items returned by the query",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/DangerousCode"
            }
          }
        },
        "additionalProperties": false,
        "description": "Generic class containing a set of items returned by a query, along with additional informations."
      },
      "DangerousCodeType": {
        "type": "string",
        "description": "",
        "enum": [
          "IMDG",
          "UNDG"
        ]
      },
      "DocumentType": {
        "type": "object",
        "properties": {
          "code": {
            "type": "integer",
            "description": "Code of the type of document",
            "format": "int32",
            "example": 705
          },
          "name": {
            "maxLength": 512,
            "minLength": 0,
            "type": "string",
            "description": "Name of the type of document",
            "nullable": true,
            "example": "Bill of lading"
          },
          "description": {
            "maxLength": 2048,
            "minLength": 0,
            "type": "string",
            "description": "Description of the type of document",
            "nullable": true,
            "example": "Negotiable document/message which evidences a contract of carriage by sea and the taking over or loading of goods by carrier, and by which carrier undertakes to deliver goods against surrender of the document  A provision in the document that goods are to be delivered to the order of a named person, or to order, or to bearer, constitutes such an undertaking"
          }
        },
        "additionalProperties": false,
        "description": "Type of document which is based on <a href=\"https://www.unece.org/trade/untdid/d00a/tred/tred1001.htm\">UN/Edifact 1001</a>."
      },
      "DocumentTypeItemsResponseModel": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer",
            "description": "Total number of items found by the query",
            "format": "int32",
            "example": 11
          },
          "first": {
            "type": "integer",
            "description": "Index of the first returned object",
            "format": "int32",
            "example": 3
          },
          "items": {
            "type": "array",
            "description": "Items returned by the query",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/DocumentType"
            }
          }
        },
        "additionalProperties": false,
        "description": "Generic class containing a set of items returned by a query, along with additional informations."
      },
      "EventType": {
        "type": "object",
        "properties": {
          "code": {
            "maxLength": 32,
            "minLength": 0,
            "type": "string",
            "description": "Code of the type of event",
            "nullable": true,
            "example": "DIR"
          },
          "name": {
            "maxLength": 128,
            "minLength": 0,
            "type": "string",
            "description": "Name of the type of event",
            "nullable": true,
            "example": "Discharged"
          }
        },
        "additionalProperties": false,
        "description": "Type of events defined in the S)ONE application."
      },
      "EventTypeItemsResponseModel": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer",
            "description": "Total number of items found by the query",
            "format": "int32",
            "example": 11
          },
          "first": {
            "type": "integer",
            "description": "Index of the first returned object",
            "format": "int32",
            "example": 3
          },
          "items": {
            "type": "array",
            "description": "Items returned by the query",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/EventType"
            }
          }
        },
        "additionalProperties": false,
        "description": "Generic class containing a set of items returned by a query, along with additional informations."
      },
      "HttpBusinessError": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "description": "Error status",
            "nullable": true,
            "example": "400"
          },
          "timestamp": {
            "type": "string",
            "description": "Error date",
            "format": "date-time",
            "example": "2022-10-18T14:53:52.239Z"
          },
          "code": {
            "type": "string",
            "description": "Error code\r\n<br>- R101 : The container size type is unfound.<br>- R102 : The country code is unfound.<br>- R103 : The document type is unfound.<br>- R104 : The location code is unfound.<br>- R105 : The location type is unfound.<br>- R106 : The packaging code is unfound.<br>- R107 : The transport mode is unfound.<br>- R108 : The transport mean type is unfound.<br>- R109 : The event type is unfound.<br>- R110 : The UN/LOCODE is unfound.<br>- R111 : The actor is unfound.<br>- R112 : The dangerous code is unfound.",
            "nullable": true,
            "example": "R001"
          },
          "message": {
            "type": "string",
            "description": "Error message",
            "nullable": true,
            "example": "Information not found."
          }
        },
        "additionalProperties": false,
        "description": "Business error management"
      },
      "Location": {
        "type": "object",
        "properties": {
          "code": {
            "maxLength": 20,
            "minLength": 0,
            "type": "string",
            "description": "Code of the location",
            "nullable": true,
            "example": "FRLEH"
          },
          "name": {
            "maxLength": 256,
            "minLength": 0,
            "type": "string",
            "description": "Name of the location",
            "nullable": true,
            "example": "Le Havre"
          },
          "type": {
            "type": "integer",
            "description": "Type of location",
            "format": "int32",
            "example": 248
          },
          "country": {
            "maxLength": 3,
            "minLength": 0,
            "type": "string",
            "description": "Three letter code of country",
            "nullable": true,
            "example": "FRA"
          },
          "parent": {
            "maxLength": 20,
            "minLength": 0,
            "type": "string",
            "description": "Code of the parent location\r\n<br> eg. Parent of MTDF (Terminal de France) is FRLEH (Le Havre) ",
            "nullable": true,
            "example": "FRLEH"
          }
        },
        "additionalProperties": false,
        "description": "Locations represented ports, airports, warehouse, berth, ... referenced in the S)ONE application."
      },
      "LocationItemsResponseModel": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer",
            "description": "Total number of items found by the query",
            "format": "int32",
            "example": 11
          },
          "first": {
            "type": "integer",
            "description": "Index of the first returned object",
            "format": "int32",
            "example": 3
          },
          "items": {
            "type": "array",
            "description": "Items returned by the query",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Location"
            }
          }
        },
        "additionalProperties": false,
        "description": "Generic class containing a set of items returned by a query, along with additional informations."
      },
      "LocationType": {
        "type": "object",
        "properties": {
          "code": {
            "type": "integer",
            "description": "Code of the type of location",
            "format": "int32",
            "example": 248
          },
          "name": {
            "maxLength": 256,
            "minLength": 0,
            "type": "string",
            "description": "Name of the type of location",
            "nullable": true,
            "example": "Place of discharge and loading"
          },
          "description": {
            "maxLength": 2048,
            "minLength": 0,
            "type": "string",
            "description": "Description of the type of location",
            "nullable": true,
            "example": "Place at which a means of transport is performing both discharge and loading operations, e.g. seaport, airport, freight terminal, rail station."
          }
        },
        "additionalProperties": false,
        "description": "Type of location which is based on <a href=\"http://www.unece.org/trade/untdid/d11a/tred/tred3227.htm\">UN/Edifact 3227</a>"
      },
      "LocationTypeItemsResponseModel": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer",
            "description": "Total number of items found by the query",
            "format": "int32",
            "example": 11
          },
          "first": {
            "type": "integer",
            "description": "Index of the first returned object",
            "format": "int32",
            "example": 3
          },
          "items": {
            "type": "array",
            "description": "Items returned by the query",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/LocationType"
            }
          }
        },
        "additionalProperties": false,
        "description": "Generic class containing a set of items returned by a query, along with additional informations."
      },
      "PackagingCode": {
        "type": "object",
        "properties": {
          "code": {
            "maxLength": 2,
            "minLength": 0,
            "type": "string",
            "description": "Code of packaging",
            "nullable": true,
            "example": "PK"
          },
          "description": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Name of packaging",
            "nullable": true,
            "example": "Package"
          }
        },
        "additionalProperties": false,
        "description": "Packaging codes which are based on :\r\n<br>ADR standards for road mode<br>RID standards for rail mode<br>IMDG/IMO standards for maritime mode<br>ADN standards for inland water mode<br>IATA/ICAO standards for air mode"
      },
      "PackagingCodeItemsResponseModel": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer",
            "description": "Total number of items found by the query",
            "format": "int32",
            "example": 11
          },
          "first": {
            "type": "integer",
            "description": "Index of the first returned object",
            "format": "int32",
            "example": 3
          },
          "items": {
            "type": "array",
            "description": "Items returned by the query",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/PackagingCode"
            }
          }
        },
        "additionalProperties": false,
        "description": "Generic class containing a set of items returned by a query, along with additional informations."
      },
      "TransportMeansType": {
        "type": "object",
        "properties": {
          "mCode": {
            "maxLength": 8,
            "minLength": 0,
            "type": "string",
            "description": "MCode is composed of the transport mode and a code value excepted for aircraft type whose Mcode is represented by IATA Code.\r\n<br>Mode : Mode of transport code as defined in Recommendation 19<br>Value : 3 character alphanumeric code value comprising characters 0 to 9 and upper case A to Z. For example, in maritime transport the code value \"50\" represents \"General cargo vessel\", whilst \"501\" is a subordinate code entry that represents \"Grain vessel\".",
            "nullable": true,
            "example": "1 50 1"
          },
          "name": {
            "maxLength": 128,
            "minLength": 0,
            "type": "string",
            "description": "Code value name.",
            "nullable": true,
            "example": "Grain vessel"
          },
          "description": {
            "maxLength": 1024,
            "minLength": 0,
            "type": "string",
            "description": "Code value description.",
            "nullable": true,
            "example": "Vessel designed to carry grain."
          }
        },
        "additionalProperties": false,
        "description": "Transport means types which are based on <a href=\"http://tfig.unece.org/contents/recommendation-28.htm\">Un/Edifact Recommendation 28</a> and <a href=\"http://www.emsa.europa.eu/work/download/5000/2118/23.html\">EMSA</a>.\r\n<br>The identification of the type of means of transport is frequently required in information exchange in trade and transport. The means of transport such as aircraft, road vehicles, railway engines, barges, and deep-sea vessels, are often identified by a registration number. Such registration numbers invariably do not contain any element that would indicate the type the means of transport to which the number relates. Therefore a separate method is required to identify the specific type of means of transport."
      },
      "TransportMeansTypeItemsResponseModel": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer",
            "description": "Total number of items found by the query",
            "format": "int32",
            "example": 11
          },
          "first": {
            "type": "integer",
            "description": "Index of the first returned object",
            "format": "int32",
            "example": 3
          },
          "items": {
            "type": "array",
            "description": "Items returned by the query",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/TransportMeansType"
            }
          }
        },
        "additionalProperties": false,
        "description": "Generic class containing a set of items returned by a query, along with additional informations."
      },
      "TransportMode": {
        "type": "object",
        "properties": {
          "code": {
            "type": "integer",
            "description": "Transport mode code",
            "format": "int32",
            "example": 1
          },
          "name": {
            "maxLength": 128,
            "minLength": 0,
            "type": "string",
            "description": "Transport mode name.",
            "nullable": true,
            "example": "Maritime transport"
          },
          "description": {
            "maxLength": 2048,
            "minLength": 0,
            "type": "string",
            "description": "Transport mode description.",
            "nullable": true,
            "example": "Transport of goods and/or persons is by sea"
          }
        },
        "additionalProperties": false,
        "description": "Transport mode which is based on <a href=\"https://www.unece.org/fileadmin/DAM/cefact/recommendations/rec19/rec19_ecetrd138.pdf\">Unece 19 recommendations</a>."
      },
      "TransportModeItemsResponseModel": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer",
            "description": "Total number of items found by the query",
            "format": "int32",
            "example": 11
          },
          "first": {
            "type": "integer",
            "description": "Index of the first returned object",
            "format": "int32",
            "example": 3
          },
          "items": {
            "type": "array",
            "description": "Items returned by the query",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/TransportMode"
            }
          }
        },
        "additionalProperties": false,
        "description": "Generic class containing a set of items returned by a query, along with additional informations."
      },
      "Unlocode": {
        "type": "object",
        "properties": {
          "code": {
            "maxLength": 5,
            "minLength": 0,
            "type": "string",
            "description": "UN/LOCODE have length of 5 - combination of Country code (length of 2) and Location code (length of 3)",
            "nullable": true,
            "example": "UGMUK"
          },
          "country": {
            "maxLength": 2,
            "minLength": 0,
            "type": "string",
            "description": "Two letters code of country",
            "nullable": true,
            "example": "UG"
          },
          "name": {
            "maxLength": 256,
            "minLength": 0,
            "type": "string",
            "description": "Description about location",
            "nullable": true,
            "example": "Mukono"
          },
          "subdivision": {
            "maxLength": 3,
            "minLength": 0,
            "type": "string",
            "description": "1-3 character alphabetic and/or numeric code for the administrative division \r\nof the country concerned(state, province, department, etc.)",
            "nullable": true,
            "example": "108"
          },
          "coordinates": {
            "maxLength": 12,
            "minLength": 0,
            "type": "string",
            "description": "Geographical coordinates (latitude/longitude)\r\n \r\nFormat: ddmmN dddmmW, ddmmS dddmmE, etc.,\r\n\r\nWhere the two last digits refer to minutes \r\nand the two or three first digits indicate the degrees.",
            "nullable": true,
            "example": "0021N 03245E"
          }
        },
        "additionalProperties": false,
        "description": "UN/LOCODE information is based on \r\n<a href=\"https://www.unece.org/fileadmin/DAM/cefact/locode/UNLOCODE_Manual.pdf\">recommendation 16 UN/LOCODE</a>."
      },
      "UnlocodeItemsResponseModel": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer",
            "description": "Total number of items found by the query",
            "format": "int32",
            "example": 11
          },
          "first": {
            "type": "integer",
            "description": "Index of the first returned object",
            "format": "int32",
            "example": 3
          },
          "items": {
            "type": "array",
            "description": "Items returned by the query",
            "nullable": true,
            "items": {
              "$ref": "#/components/schemas/Unlocode"
            }
          }
        },
        "additionalProperties": false,
        "description": "Generic class containing a set of items returned by a query, along with additional informations."
      }
    },
    "securitySchemes": {
      "bearer_token": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      },
      "api_key": {
        "type": "apiKey",
        "name": "Ocp-Apim-Subscription-Key",
        "in": "header"
      }
    }
  },
  "x-topics": [
    {
      "title": "Get Started",
      "content": "# Format\n\nSoget API platform exposes RESTful APIs. \n\nOur API uses the HTTP methods to connect to our data sources. It returns responses in JSON format in UTF-8 encoding. It uses:\n\n- ISO-8601 format for date and time,\n- JSON object or JSON array in the body of POST and PUT methods,\n- *Application/json; charset=UTF-8* in the parameter *Content-Type* of the header\n\n# Parameters\n\nParameters must be passed:\n\n- in the URL’s query string for GET and DELETE requests;\n- in the request’s body for PUT and POST requests.\n\nIf the call requires other parameters, add them as well with the appropriate values.\n\nParameters passed in the **URL** must be properly URL-encoded, using UTF-8 encoding for non-ASCII characters. Also, the plus character (*+*) is interpreted as a space (so it’s an alternative to *%20*).  Unless otherwise stated, arrays passed in the URL can be specified either:\n\n-\tas a comma-separated string; example: *attributesToRetrieve=title,description*; or\n-\tas a JSON array (which must be properly URL-encoded, of course);\n  \n> __example__: *attributesToRetrieve=%5B%22title%22,%22description%22%5D*.\n\nArrays passed in the **body** should always be regular JSON arrays.\n\n# What You Need \n\nIn order to make requests, you must have an account and update your password.\n**THEN**,\n\n1. Create an organization\n2. Create a client application\n3. Retrieve your authentication tokens : [Authentication](#topic-authentication)\n4. Subscribe to an offer\n5. Retrieve your API Key : [Authentication](#topic-authentication) \n\n# Make your first request\n\nFor the first examples, you can use your terminal, with curl, sending the request.\n\nIt returns a JSON response like this:\n```json\n{\n    \"code\": \"CCGM\",\n    \"name\": \"CMA CGM\",\n    \"type\": \"FB\",\n    \"location\": \"FR\",\n    \"organization\": \"CMA CGM\"\n}\n```"
    },
    {
      "title": "Authentication",
      "content": "Soget API use double authentication to identify the application and the customer.\nThe first authentication is performed by the OAuth2 token to identify application and the second authentication is performed by the API key to identify the customer.\n\n# OAuth2 token\n\nTo authenticate your application, you need register for the API Portal and create an application.  \n\n- Get and use client_id and client_secret to get the $ACCESS_TOKEN\n- Use the $ACCESS_TOKEN to call our API services\n\nNote that the access token url is : https://soget-api-integration.azure-api.net/soget-connect/v1/openid-connect/token.\n\n# API Key\n\nTo authenticate the customer, you need register for the API Portal and subscribe to an offer.\n\n- Get and use the $API_KEY to call our API services\n\nNote, that you should use the $API_KEY in the `Ocp-Apim-Subscription-Key` header of your request.",
      "example": "## Request an access token\n\n```\ncurl -X POST https://soget-api-integration.azure-api.net/soget-connect/v1/openid-connect/token --data-urlencode \"client_id=$YOUR_CLIENT_ID\" --data-urlencode \"client_secret=$YOUR_CLIENT_SECRET\"\n```\n\n## Request an API\n````\ncurl \\\n  -X GET https://soget-api-integration.azure-api.net \\\n  -H \"Authorization: Bearer $ACCESS_TOKEN\"\n  -H \"Ocp-Apim-Subscription-Key: $API_KEY\"\n```"
    }
  ],
  "security": [
    {
      "bearer_token": [],
      "api_key": []
    }
  ],
  "servers": [
    {
      "url": "https://soget-api-integration.azure-api.net/api-referential-list/v1"
    }
  ]
}