Kuehne+Nagel ShipmentTracking API

Find and show details of the customer's shipments, with contents reflecting the visibility configured in myKN. Search shipments, load a single shipment by unique reference, and read history records. Read-only polling; no webhook or callback is published.

OpenAPI Specification

kuehne-nagel-shipment-tracking-v2-openapi.json Raw ↑
{
  "openapi" : "3.0.1",
  "info" : {
    "title" : "ShipmentTracking",
    "description" : "Receive detailed information for one shipment per unique key (ID or tracking number),\nfind one or more shipments per other not-necessarily unique key reference (esp. customer\nreference) or filter all shipments by reference, mode of transport, stage or time frame.\n",
    "contact" : {
      "name" : "API Support",
      "url" : "https://home.kuehne-nagel.com/en/service-request-api?lead_topic=api-portal-integration"
    },
    "version" : "v2",
    "x-api-version" : "2.5.0",
    "x-api-id" : "4c199d23-391d-41d2-90fe-7224d75575cc",
    "x-api-guideline-version" : "1.11.6"
  },
  "servers" : [ {
    "url" : "https://internal.api.kuehne-nagel.com/track-trace/shipment/v2"
  } ],
  "security" : [ {
    "default" : [ ]
  }, {
    "api_key" : [ ]
  } ],
  "paths" : {
    "/shipments" : {
      "get" : {
        "tags" : [ "shipment" ],
        "description" : "Retrieve a list of shipments for the given customer reference (exact match required).",
        "operationId" : "loadShipmentsForCustomerReference",
        "parameters" : [ {
          "$ref" : "#/components/parameters/customerReferenceParameter"
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ShipmentSearchResponse"
                }
              }
            }
          },
          "default" : {
            "$ref" : "#/components/responses/default"
          }
        },
        "security" : [ {
          "default" : [ ]
        }, {
          "api_key" : [ ]
        } ],
        "x-auth-type" : "Application & Application User",
        "x-throttling-tier" : "50KPerMin"
      }
    },
    "/shipments-search" : {
      "post" : {
        "tags" : [ "shipment" ],
        "description" : "Search for shipments with optional filters. Supports pagination via the request body. Returns shipments ordered by creation date descending.",
        "operationId" : "searchShipments",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ShipmentSearchRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ShipmentSearchResponse"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad request. Possible reasons - unknown date filter type, or invalid date format (expected YYYY-MM-DD).",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Problem"
                }
              }
            }
          },
          "422" : {
            "description" : "Unprocessable entity. The request is well-formed but violates business rules. Possible reasons - date filter present but neither 'from' nor 'to' specified.",
            "content" : {
              "application/problem+json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Problem"
                }
              }
            }
          },
          "default" : {
            "$ref" : "#/components/responses/default"
          }
        },
        "security" : [ {
          "default" : [ ]
        }, {
          "api_key" : [ ]
        } ],
        "x-auth-type" : "Application & Application User",
        "x-throttling-tier" : "50KPerMin"
      }
    },
    "/shipments/{shipmentId}/history-records" : {
      "get" : {
        "tags" : [ "shipment" ],
        "description" : "Retrieve the milestone change history for a shipment, ordered by update time descending.",
        "operationId" : "loadShipmentHistory",
        "parameters" : [ {
          "name" : "shipmentId",
          "in" : "path",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "$ref" : "#/components/schemas/ShipmentId"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ShipmentHistory"
                }
              }
            }
          },
          "default" : {
            "$ref" : "#/components/responses/default"
          }
        },
        "security" : [ {
          "default" : [ ]
        }, {
          "api_key" : [ ]
        } ],
        "x-auth-type" : "Application & Application User",
        "x-throttling-tier" : "50KPerMin"
      }
    },
    "/shipments/{uniqueShipmentReference}" : {
      "get" : {
        "tags" : [ "shipment" ],
        "description" : "Retrieve a specific shipment with an unique reference like shipmentId or trackingNumber.",
        "operationId" : "loadShipmentForUniqueReference",
        "parameters" : [ {
          "$ref" : "#/components/parameters/uniqueShipmentReferenceParameter"
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/TrackingResponse"
                }
              }
            }
          },
          "default" : {
            "$ref" : "#/components/responses/default"
          }
        },
        "security" : [ {
          "default" : [ ]
        }, {
          "api_key" : [ ]
        } ],
        "x-auth-type" : "Application & Application User",
        "x-throttling-tier" : "50KPerMin"
      }
    }
  },
  "components" : {
    "schemas" : {
      "Address" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "array",
            "description" : "Names of the address",
            "example" : [ "Company abc", "Division A" ],
            "items" : {
              "type" : "string"
            }
          },
          "street" : {
            "type" : "array",
            "description" : "Street names of the address",
            "example" : [ "Mainstreet 10", "Building ABC" ],
            "items" : {
              "type" : "string"
            }
          },
          "city" : {
            "type" : "array",
            "description" : "City names of the address",
            "example" : [ "New Town", "District Old Town" ],
            "items" : {
              "type" : "string"
            }
          },
          "zipCode" : {
            "type" : "string",
            "description" : "Zip code of the address in country-specific formats",
            "example" : "21640"
          },
          "state" : {
            "$ref" : "#/components/schemas/State"
          },
          "countryCode" : {
            "type" : "string",
            "description" : "This is the country code. E.g. DE for Germany",
            "format" : "iso-3166-alpha-2",
            "example" : "DK"
          },
          "countryName" : {
            "type" : "string",
            "description" : "Country name of the address",
            "example" : "Denmark"
          },
          "postOfficeBox" : {
            "type" : "string",
            "description" : "Post office box of the address",
            "example" : "342353"
          },
          "printAddress" : {
            "type" : "array",
            "description" : "The address for printing and displaying",
            "example" : [ "Company abc", "Mainstreet 10", "21640 New Town", "Denmark" ],
            "items" : {
              "type" : "string"
            }
          }
        }
      },
      "BlueAnchorLineInformation" : {
        "type" : "object",
        "properties" : {
          "balDocumentType" : {
            "type" : "string",
            "description" : "Type of the Blue Anchor Line document",
            "example" : "BAL"
          },
          "balScacCode" : {
            "type" : "string",
            "description" : "Blue Anchor Line SCAC code",
            "example" : "BANQ"
          },
          "balBlNumbers" : {
            "type" : "array",
            "description" : "Bill of lading numbers",
            "example" : [ "EC112222222", "12222222", "112222222EC" ],
            "items" : {
              "type" : "string"
            }
          }
        }
      },
      "BusinessSolution" : {
        "type" : "object",
        "properties" : {
          "code" : {
            "type" : "string",
            "example" : "CRT"
          },
          "name" : {
            "type" : "string",
            "example" : "Aerospace Critical"
          }
        },
        "description" : "Shows the booked products"
      },
      "CargoInfo" : {
        "type" : "object",
        "properties" : {
          "chargeableWeight" : {
            "$ref" : "#/components/schemas/Weight"
          },
          "numberOfPackages" : {
            "$ref" : "#/components/schemas/NumberOfPackages"
          },
          "shipmentDescriptionOfGoods" : {
            "type" : "array",
            "description" : "Description of goods at shipment level (from cargo totals only)",
            "items" : {
              "type" : "string"
            }
          },
          "marksAndNumbers" : {
            "maxItems" : 10000,
            "type" : "array",
            "description" : "Container specific marks and numbers Deprecated: use cargoItems[].marksAndNumbers instead\n",
            "example" : [ "mark", "number" ],
            "deprecated" : true,
            "items" : {
              "type" : "string"
            }
          },
          "cargoItems" : {
            "maxItems" : 10000,
            "type" : "array",
            "description" : "Individual cargo items with dimensions and descriptions",
            "items" : {
              "$ref" : "#/components/schemas/CargoItem"
            }
          }
        }
      },
      "CargoItem" : {
        "type" : "object",
        "properties" : {
          "quantity" : {
            "$ref" : "#/components/schemas/Quantity"
          },
          "weight" : {
            "$ref" : "#/components/schemas/Weight"
          },
          "volume" : {
            "$ref" : "#/components/schemas/Volume"
          },
          "length" : {
            "$ref" : "#/components/schemas/Length"
          },
          "width" : {
            "$ref" : "#/components/schemas/Width"
          },
          "height" : {
            "$ref" : "#/components/schemas/Height"
          },
          "loadingMeters" : {
            "$ref" : "#/components/schemas/LoadingMeters"
          },
          "descriptionOfGoods" : {
            "maxItems" : 10,
            "type" : "array",
            "description" : "Description of goods for this cargo item",
            "items" : {
              "type" : "string"
            }
          },
          "marksAndNumbers" : {
            "maxItems" : 10,
            "type" : "array",
            "description" : "Marks and numbers for this cargo item",
            "items" : {
              "type" : "string"
            }
          }
        }
      },
      "Co2e" : {
        "type" : "object",
        "properties" : {
          "value" : {
            "type" : "number",
            "description" : "Emissions value.",
            "format" : "double",
            "example" : 12.48
          },
          "unit" : {
            "type" : "string",
            "description" : "Emissions unit.",
            "example" : "KG"
          }
        },
        "description" : "The CO2-equivalent Emission of the shipment"
      },
      "Container" : {
        "type" : "object",
        "properties" : {
          "containerNumber" : {
            "type" : "string",
            "description" : "The number of the container",
            "example" : "FCSP1910"
          },
          "containerSequenceNumber" : {
            "type" : "integer",
            "description" : "The current sequence number of the container, starting with 1.",
            "format" : "int64",
            "example" : 1
          },
          "containerType" : {
            "type" : "string",
            "description" : "The type of the container",
            "example" : "20GE"
          },
          "routing" : {
            "$ref" : "#/components/schemas/Routing"
          },
          "numberOfPackages" : {
            "$ref" : "#/components/schemas/NumberOfPackages"
          },
          "descriptionOfGoods" : {
            "type" : "array",
            "description" : "The description of goods of the container",
            "example" : [ "Goods", "More goods" ],
            "items" : {
              "type" : "string"
            }
          },
          "partyReferences" : {
            "type" : "array",
            "description" : "Container-related reference numbers and codes",
            "items" : {
              "$ref" : "#/components/schemas/PartyReference"
            }
          },
          "marksAndNumbers" : {
            "type" : "array",
            "description" : "Cargo specific marks and numbers",
            "example" : [ "mark", "number" ],
            "items" : {
              "type" : "string"
            }
          },
          "sealNumbers" : {
            "type" : "array",
            "description" : "Seal number of the container",
            "example" : [ "343466", "FCSP43434H" ],
            "items" : {
              "type" : "string"
            }
          },
          "volume" : {
            "$ref" : "#/components/schemas/Measurement"
          },
          "weight" : {
            "$ref" : "#/components/schemas/Measurement"
          },
          "hasDangerousGoods" : {
            "type" : "boolean",
            "description" : "Flag if the container contains dangerous goods",
            "example" : false
          },
          "isVirtual" : {
            "type" : "boolean",
            "description" : "Flag if the container is a virtual container (i.e. no physical container assigned yet)",
            "writeOnly" : true,
            "example" : false
          }
        }
      },
      "ContainerInfo" : {
        "type" : "object",
        "properties" : {
          "containers" : {
            "type" : "array",
            "description" : "The containers of the shipment",
            "items" : {
              "$ref" : "#/components/schemas/Container"
            }
          },
          "numberOfContainers" : {
            "type" : "integer",
            "description" : "The total number of containers per shipment",
            "format" : "int32",
            "example" : 3
          }
        }
      },
      "CurrentStage" : {
        "type" : "string",
        "description" : "The current stage of the shipment.\nAttention: PRE_CARRIAGE, MAIN_CARRIAGE and ON_CARRIAGE are obsolete and will be removed in the future.\n",
        "example" : "BOOKED",
        "x-extensible-enum" : [ "BOOKED", "PRE_CARRIAGE", "MAIN_CARRIAGE", "ON_CARRIAGE", "IN_TRANSIT", "COMPLETED", "CANCELLED" ]
      },
      "DateTime" : {
        "type" : "object",
        "properties" : {
          "date" : {
            "type" : "string",
            "description" : "The date",
            "example" : "2023-04-25"
          },
          "time" : {
            "type" : "string",
            "description" : "The time",
            "example" : "01:00:02"
          },
          "offset" : {
            "type" : "string",
            "description" : "The time offset to UTC",
            "example" : "+02:00"
          }
        },
        "description" : "Complex date time object which is subject to be removed with the next major version v3.\nPlease use the adjacent 'dateTime' (or 'shipmentCreationIsoDateTime') property instead.\n",
        "deprecated" : true
      },
      "EmissionInfo" : {
        "type" : "object",
        "properties" : {
          "co2e" : {
            "$ref" : "#/components/schemas/Co2e"
          }
        },
        "description" : "The CO2 Emission of the shipment"
      },
      "ExplainedDateTime" : {
        "type" : "object",
        "properties" : {
          "flexDateTime" : {
            "$ref" : "#/components/schemas/DateTime"
          },
          "dateTime" : {
            "$ref" : "#/components/schemas/IsoDateTime"
          },
          "condition" : {
            "type" : "string",
            "x-extensible-enum" : [ "PLANNED", "ACTUAL" ]
          },
          "explanation" : {
            "$ref" : "#/components/schemas/Explanation"
          }
        }
      },
      "Explanation" : {
        "type" : "object",
        "properties" : {
          "source" : {
            "type" : "string",
            "x-extensible-enum" : [ "ETD", "ETA", "STATUS", "TRODO", "TROAP", "TADDO", "TADAP" ]
          },
          "statusCode" : {
            "type" : "string",
            "description" : "The KN status code",
            "example" : "2400"
          }
        }
      },
      "FreightInfo" : {
        "type" : "object",
        "properties" : {
          "containerInfo" : {
            "$ref" : "#/components/schemas/ContainerInfo"
          },
          "cargoInfo" : {
            "$ref" : "#/components/schemas/CargoInfo"
          },
          "volume" : {
            "$ref" : "#/components/schemas/Volume"
          },
          "weight" : {
            "$ref" : "#/components/schemas/Weight"
          },
          "hasDangerousGoods" : {
            "type" : "boolean",
            "description" : "Flag if the freight contains dangerous goods",
            "example" : false
          },
          "labelPrinted" : {
            "type" : "boolean",
            "description" : "Flag which indicates whether the label is printed",
            "example" : false
          }
        }
      },
      "Incoterm" : {
        "type" : "object",
        "properties" : {
          "code" : {
            "type" : "string",
            "description" : "The code of the incoterm",
            "example" : "CFR"
          },
          "location" : {
            "type" : "string",
            "description" : "Incoterm location",
            "example" : "Amsterdam"
          }
        },
        "description" : "Provides details on shipment delivery terms."
      },
      "IsoDateTime" : {
        "pattern" : "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}(:\\d{2}(:\\d{2}(\\.\\d+)?)?)?(Z|[+-]\\d{2}:\\d{2})?)?$",
        "type" : "string",
        "description" : "Date and time in ISO 8601 format",
        "example" : "2023-04-25T01:00:02Z"
      },
      "Location" : {
        "type" : "object",
        "properties" : {
          "locationCode" : {
            "type" : "string",
            "description" : "The code of location (UN,IATA,KN or SP code)",
            "example" : "CWS"
          },
          "unLocationCode" : {
            "type" : "string",
            "description" : "The UN (United Nations) code of location if exists",
            "example" : "CWS"
          },
          "countryCode" : {
            "type" : "string",
            "description" : "The country code, e.g. DE for Germany",
            "format" : "iso-3166-alpha-2",
            "example" : "DK"
          },
          "countryName" : {
            "type" : "string",
            "description" : "The country name",
            "example" : "Denmark"
          },
          "internationalName" : {
            "type" : "string",
            "description" : "The international name",
            "example" : "Hamburg"
          },
          "freeTextLocation" : {
            "type" : "string",
            "description" : "The name of the location as a freetext input",
            "example" : "Hamburg"
          },
          "stateCode" : {
            "type" : "string",
            "description" : "The state code",
            "example" : "GA"
          },
          "zipCode" : {
            "type" : "string",
            "description" : "The zip code",
            "example" : "30014-4958"
          }
        }
      },
      "LocationMilestone" : {
        "type" : "object",
        "properties" : {
          "description" : {
            "type" : "string",
            "description" : "Description of the location milestone (not populated currently)",
            "example" : "The vehicle has arrived"
          },
          "reached" : {
            "type" : "boolean",
            "description" : "Flag if the location milestone was already reached",
            "example" : true
          },
          "locationMilestoneType" : {
            "$ref" : "#/components/schemas/LocationMilestoneType"
          },
          "achievementDateTime" : {
            "$ref" : "#/components/schemas/ExplainedDateTime"
          }
        },
        "description" : "Provides details of where the shipment is on its journey"
      },
      "LocationMilestoneType" : {
        "type" : "string",
        "description" : "The type of activity at the location",
        "example" : "CARGO_PICKED_UP",
        "x-extensible-enum" : [ "CONTAINER_GATE_OUT_EMPTY", "CONTAINER_LOADED", "CONTAINER_UNLOADED", "CARGO_PICKED_UP", "CARGO_AVAILABLE", "VEHICLE_ARRIVED", "VEHICLE_DISCHARGED", "VEHICLE_LOADED", "VEHICLE_DEPARTED", "CARGO_DELIVERED", "CARGO_AT_CARRIER", "CARGO_CHECKED_IN", "CONTAINER_GATE_IN_EMPTY", "READY_FOR_PICKUP", "GATE_IN", "GATE_OUT", "FREIGHT_COLLECTION", "IN_DELIVERY" ]
      },
      "Measurement" : {
        "type" : "object",
        "properties" : {
          "value" : {
            "type" : "number",
            "description" : "Measurement value.",
            "format" : "double",
            "example" : 12.48
          },
          "unit" : {
            "type" : "string",
            "description" : "Measurement unit.",
            "example" : "KG"
          }
        }
      },
      "ShipmentHistory" : {
        "type" : "object",
        "properties" : {
          "shipmentId" : {
            "$ref" : "#/components/schemas/ShipmentId"
          },
          "trackingNumber" : {
            "$ref" : "#/components/schemas/TrackingNumber"
          },
          "milestones" : {
            "type" : "array",
            "description" : "Chronological milestone change history, ordered by update time descending.",
            "items" : {
              "$ref" : "#/components/schemas/MilestoneHistoryEntry"
            }
          }
        }
      },
      "MilestoneHistoryEntry" : {
        "type" : "object",
        "properties" : {
          "type" : {
            "type" : "string",
            "description" : "The type of milestone that was updated.",
            "example" : "ROUTE_LOCATION_MILESTONE",
            "enum" : [ "ROUTE_LOCATION_MILESTONE", "INFORMATION_MILESTONE" ]
          },
          "key" : {
            "$ref" : "#/components/schemas/HistoryMilestoneKey"
          },
          "location" : {
            "$ref" : "#/components/schemas/HistoryLocation"
          },
          "newMilestoneDateTime" : {
            "$ref" : "#/components/schemas/ObservedMilestoneDateTime"
          },
          "oldMilestoneDateTime" : {
            "$ref" : "#/components/schemas/ObservedMilestoneDateTime"
          },
          "remarks" : {
            "type" : "string",
            "description" : "The last status remark of the update, if any.",
            "example" : "Delay due to port congestion"
          },
          "updatedAt" : {
            "type" : "string",
            "description" : "The UTC timestamp when the milestone was updated.",
            "format" : "date-time",
            "example" : "2023-04-25T01:00:02Z"
          }
        }
      },
      "HistoryMilestoneKey" : {
        "type" : "object",
        "properties" : {
          "routeLocationType" : {
            "$ref" : "#/components/schemas/RouteLocationType"
          },
          "locationMilestoneType" : {
            "$ref" : "#/components/schemas/LocationMilestoneType"
          },
          "transportInformationMilestoneType" : {
            "type" : "string",
            "example" : "BOOKING_CONFIRMATION",
            "x-extensible-enum" : [ "ADVICE_TO_BROKER_OR_CUSTOMER", "BAL_BL_AVAILABLE", "BOOKING_ACKNOWLEDGEMENT", "BOOKING_CONFIRMATION", "BOOKING_MODIFICATION", "BOOKING_SUBMISSION", "CANCELLATION", "CARGO_COMMODITY_UPDATE", "CARRIER_BOOKING_CONFIRMATION", "CARRIER_BOOKING_REJECTION", "CARRIER_BOOKING_SUBMISSION", "CUSTOMS_BILLING_INVOICE_AVAILABLE", "CUSTOMS_CLEARANCE_COMPLETE", "CUSTOMS_CLEARANCE_START", "CUSTOMS_DELIVERY_AGENT_NOTIFICATION", "CUSTOMS_DUTIES_PAYMENT", "CUSTOMS_ENTRY_TRANSMISSION", "CUSTOMS_MANIFEST_FILING_CONFIRMATION", "CUSTOMS_MANIFEST_FILING_SUBMISSION", "DELIVERY_APPOINTMENT_SUBMISSION", "DOCUMENT_UPLOAD_BY_CUSTOMER", "EXPEDITED_RAIL_SERVICE", "EXPORT_CUSTOMS_CLEARANCE_COMPLETE", "EXPORT_CUSTOMS_CLEARANCE_START", "EXPORT_SECURITY_FILING_CONFIRMATION", "FREIGHT_DOCUMENTS_HANDOVER", "HAWB_AVAILABLE", "IMPORT_CUSTOMS_CLEARANCE_START", "IMPORT_CUSTOMS_ENTRY_TRANSMISSION", "IMPORT_CUSTOMS_CLEARANCE_COMPLETE", "IMPORT_CUSTOMS_DELIVERY_AGENT_NOTIFICATION", "IMPORT_CUSTOMS_BILLING_INVOICE_AVAILABLE", "IMPORT_CUSTOMS_DUTIES_PAYMENT", "IMPORTER_SECURITY_FILING_BILL_OF_LADING_MATCH", "IMPORTER_SECURITY_FILING_CONFIRMATION", "LEGISLATION_COMPLIANCE_OK", "LEGISLATION_COMPLIANCE_REJECTED", "MAWB_AVAILABLE", "MISSING_OR_INCOMPLETE_DOCUMENT", "ORIGINAL_TRANSPORT_DOCUMENT_RECEIPT", "POD_AVAILABLE", "SERVICE_COMPLETE", "SHIPMENT_RELEASE_BY_CUSTOMER", "SHIPPING_INSTRUCTIONS_RECEIPT", "STORAGE_EXPORT", "STORAGE_IMPORT", "VGM_CLOSURE", "VGM_DATA_VERIFICATION", "VGM_MESSAGE_TO_PROVIDER", "WAITING_FOR_SHIPPING_APPROVAL" ]
          }
        },
        "description" : "Identifies the milestone that was updated.\nFor ROUTE_LOCATION_MILESTONE: routeLocationType and locationMilestoneType are populated.\nFor INFORMATION_MILESTONE: transportInformationMilestoneType is populated.\n"
      },
      "HistoryLocation" : {
        "type" : "object",
        "properties" : {
          "locationCode" : {
            "type" : "string",
            "description" : "The KN location code",
            "example" : "DEHAM"
          },
          "unLocationCode" : {
            "type" : "string",
            "description" : "The UN location code",
            "example" : "DEHAM"
          },
          "locationName" : {
            "type" : "string",
            "description" : "The international name, or free-text location name as fallback",
            "example" : "Hamburg"
          },
          "stateCode" : {
            "type" : "string",
            "description" : "The state code (only populated for countries that support state codes)",
            "example" : "GA"
          },
          "countryCode" : {
            "type" : "string",
            "description" : "The ISO 3166-1 alpha-2 country code",
            "format" : "iso-3166-alpha-2",
            "example" : "DE"
          },
          "countryName" : {
            "type" : "string",
            "description" : "The country name",
            "example" : "Germany"
          }
        },
        "description" : "The location associated with a milestone change event."
      },
      "ObservedMilestoneDateTime" : {
        "type" : "object",
        "properties" : {
          "dateTime" : {
            "$ref" : "#/components/schemas/IsoDateTime"
          },
          "condition" : {
            "type" : "string",
            "description" : "Whether this is an actual or planned date/time",
            "example" : "ACTUAL",
            "enum" : [ "ACTUAL", "PLANNED" ]
          }
        },
        "description" : "A milestone date/time with its condition (actual or planned)."
      },
      "MilestoneInfo" : {
        "type" : "object",
        "properties" : {
          "currentStage" : {
            "$ref" : "#/components/schemas/CurrentStage"
          },
          "currentMilestone" : {
            "description" : "The current (latest achieved) milestone of the shipment.",
            "oneOf" : [ {
              "$ref" : "#/components/schemas/TransportInformationMilestone"
            }, {
              "$ref" : "#/components/schemas/RouteLocationMilestone"
            } ]
          },
          "completionMilestone" : {
            "description" : "The milestone which is responsible for setting shipments stage to completed.",
            "oneOf" : [ {
              "$ref" : "#/components/schemas/TransportInformationMilestone"
            }, {
              "$ref" : "#/components/schemas/RouteLocationMilestone"
            } ]
          },
          "milestoneDates" : {
            "type" : "array",
            "description" : "List of all milestones of the shipment which have at least a planned or actual achievement datetime.",
            "items" : {
              "oneOf" : [ {
                "$ref" : "#/components/schemas/TransportInformationMilestone"
              }, {
                "$ref" : "#/components/schemas/RouteLocationMilestone"
              } ]
            }
          }
        },
        "description" : "Information about the milestones of the shipment"
      },
      "ModeOfTransport" : {
        "type" : "string",
        "description" : "The mode of transport of this shipment",
        "example" : "SEA",
        "x-extensible-enum" : [ "AIR", "SEA", "ROAD" ]
      },
      "PageInfo" : {
        "type" : "object",
        "properties" : {
          "totalElements" : {
            "type" : "integer",
            "description" : "Total number of elements across all pages",
            "format" : "int64",
            "example" : 150
          },
          "totalPages" : {
            "type" : "integer",
            "description" : "Total number of pages",
            "format" : "int32",
            "example" : 8
          },
          "currentPage" : {
            "type" : "integer",
            "description" : "Current page number (0-indexed)",
            "format" : "int32",
            "example" : 0
          },
          "size" : {
            "type" : "integer",
            "description" : "Requested page size",
            "format" : "int32",
            "example" : 20
          },
          "actualSize" : {
            "type" : "integer",
            "description" : "Actual number of elements in the current page",
            "format" : "int32",
            "example" : 20
          },
          "hasNext" : {
            "type" : "boolean",
            "description" : "Whether there is a next page",
            "example" : true
          },
          "hasPrevious" : {
            "type" : "boolean",
            "description" : "Whether there is a previous page",
            "example" : false
          }
        },
        "description" : "Pagination metadata for the response"
      },
      "PaginationRequest" : {
        "type" : "object",
        "properties" : {
          "page" : {
            "minimum" : 0,
            "type" : "integer",
            "description" : "Page number (0-indexed). Defaults to 0. Negative values are treated as 0.",
            "format" : "int32",
            "example" : 0,
            "default" : 0
          },
          "size" : {
            "minimum" : 1,
            "type" : "integer",
            "description" : "Number of elements per page. Defaults to 20. Values less than 1 are treated as the default.",
            "format" : "int32",
            "example" : 20,
            "default" : 20
          }
        },
        "description" : "Optional pagination parameters. If omitted, defaults to page 0 with size 20."
      },
      "NumberOfPackages" : {
        "type" : "integer",
        "description" : "The total number of packages",
        "format" : "int32",
        "example" : 4
      },
      "Parties" : {
        "type" : "object",
        "properties" : {
          "shipper" : {
            "$ref" : "#/components/schemas/Party"
          },
          "consignee" : {
            "$ref" : "#/components/schemas/Party"
          },
          "mainParties" : {
            "maxItems" : 20,
            "type" : "array",
            "description" : "The external customer parties of the shipment. Note: Shipper and consignee are excluded, because they have their dedicated fields.\n",
            "items" : {
              "$ref" : "#/components/schemas/Party"
            }
          },
          "internalParties" : {
            "maxItems" : 20,
            "type" : "array",
            "description" : "The inte

# --- truncated at 32 KB (61 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/kuehne-nagel/refs/heads/main/openapi/kuehne-nagel-shipment-tracking-v2-openapi.json