openapi: 3.2.0 info: title: IntermodalTransportExecution Proof of Delivery API description: 'This API enables Intermodal subcontractors who transport containers via truck, rail, and barge for Kuehne+Nagel to receive details about assigned consignments, including job details and instructions. It also allows them to provide status updates and proof of pickup/delivery on these consignments. To use this API, subcontractors must be registered and set up as an API user within our Intermodal TMS. Please discuss registration with your Kuehne+Nagel Intermodal operations point of contact.' contact: name: Global TOPS API Support url: https://home.kuehne-nagel.com/en/service-request-api?lead_topic=intermodal-transport-execution email: tops-technical@kuehne-nagel.com version: v1 x-api-id: b576b932-7583-4076-838b-32d6064a8a2d x-api-guideline-version: 1.11.7 x-api-version: 1.0.0 servers: - url: https://gateway.api.kuehne-nagel.com/transport/execution/pickup-and-delivery/sea/v1 - url: http://gateway.api.kuehne-nagel.com:8280/transport/execution/pickup-and-delivery/sea/v1 security: - default: [] tags: - name: Proof of Delivery paths: /proof-of-deliveries/{jobId}/{waypointId}: post: tags: - Proof of Delivery summary: Submit proof of delivery description: Submits proof of delivery for a specific waypoint. operationId: subcontractorpodretrieval parameters: - name: X-KN-Country-Code in: header description: Unique country identifier for a specific Kuehne+Nagel Operating Company. required: true style: simple explode: false schema: $ref: '#/components/schemas/CountryCode' - name: X-KN-Request-ID in: header description: 'UUID identifying the request which will be generated by the client. ' required: true style: simple explode: false schema: $ref: '#/components/schemas/RequestId' - name: jobId in: path description: Unique identifier of the assigned consignment job. This value can be found in consignment.job.id from the AssignedConsignment response. required: true style: simple explode: false schema: type: string example: 1525808-1690222-918 - name: waypointId in: path description: Unique identifier of the assigned consignment job waypoint. This value can be found in consignment.job.waypoint.id from the AssignedConsignment response. required: true style: simple explode: false schema: type: string example: '6606341' requestBody: content: multipart/form-data: schema: $ref: '#/components/schemas/ProofOfDeliveryRequest' required: true responses: '201': description: Proof of delivery uploaded successfully headers: X-KN-Request-ID: description: The same UUID that was originally provided by the client to identify the request. style: simple explode: false schema: $ref: '#/components/schemas/RequestId' content: application/json: schema: $ref: '#/components/schemas/ProofOfDeliveryResponse' default: description: Error occurred - see status code and problem object for more information. headers: X-KN-Request-ID: description: The same UUID that was originally provided by the client to identify the request. style: simple explode: false schema: $ref: '#/components/schemas/RequestId' content: application/problem+json: schema: $ref: '#/components/schemas/Problem' security: - default: [] x-auth-type: Application & Application User x-throttling-tier: Unlimited components: schemas: ProofOfDeliveryResponse: type: object properties: message: maxLength: 500 type: string description: Proof of delivery response message. example: Proof of delivery updated successfully Problem: required: - detail - title type: object properties: type: type: string description: A URI reference that uniquely identifies the problem type only in the context of the provided API. Opposed to the specification in RFC-7807, it is neither recommended to be dereferencable and point to a human-readable documentation nor globally unique for the problem type. format: uri-reference example: /problem/connection-error default: about:blank title: maxLength: 50 type: string description: A short summary of the problem type. Written in English and readable for engineers, usually not suited for non technical stakeholders and not localized.\n example: Service Unavailable status: minimum: 100 type: integer description: The HTTP status code generated by the origin server for this occurrence of the problem.\n format: int32 example: 503 exclusiveMaximum: 600 detail: maxLength: 500 type: string description: A human readable explanation specific to this occurrence of the problem that is helpful to locate the problem and give advice on how to proceed. Written in English and readable for engineers, usually not suited for non technical stakeholders and not localized.\n example: Connection to database timed out instance: type: string description: A URI reference that identifies the specific occurrence of the problem, e.g. by adding a fragment identifier or sub-path to the problem type. May be used to locate the root of this problem in the source code.\n format: uri-reference example: /problem/connection-error#token-info-read-timed-out CountryCode: maxLength: 5 type: string description: 'Unique country identifier for a specific Kuehne+Nagel Operating Company. ' example: DE RequestId: maxLength: 36 type: string description: 'UUID identifying the request which will be generated by the client. ' format: uuid example: 019a1641-02a3-7a08-a83b-de93c338ed0e ProofOfDeliveryRequest: required: - isPodSignedOnGlass - podSignedDateTime - senderUniqueShortName - uniqueTransportReference type: object properties: senderUniqueShortName: maxLength: 8 type: string description: Unique internal identifier of the message sender. This must be same as consignment.recipientUniqueShortName from the AssignedConsignment response. example: VRTRAN uniqueTransportReference: maxLength: 20 type: string description: A unique reference of Kuehne+Nagel's transport order. This is the same as the consignment.job.uniqueTransportReference from the AssignedConsignment response. example: 9071410039-01 isPodSignedOnGlass: type: boolean description: Indicates whether the Proof of Delivery was signed digitally on a touchscreen device. Set this to false when submitting a scanned paper document without any associated metadata. example: true podSignedDateTime: type: string description: Date and time when the Proof of Delivery was recorded, expressed in local time, formatted as YYYY-MM-DDTHH:mm:ss[+/-HH:mm]. format: date-time example: '2025-04-04T08:14:55Z' nameOfPersonSignedPod: maxLength: 50 type: string description: Name of the person who signed the Proof of Delivery. example: Ethan Hunt podSignatureImage: type: string description: 'Image of the signature captured by the person receiving or releasing the shipment during the delivery or pickup. This must be shared in case of captured via a Signed on Glass (digital signature). Must have: a size of max. 2 MB and a supported file extension: png, jpeg/jpg, bmp.' format: binary podFile: type: string description: 'Content of the proof of delivery document (preferably a PDF), provided when the POD is a physically scanned copy and not captured via a Signed on Glass (digital signature). Must have: a size of max. 5 MB and a supported file extension: pdf, png, jpeg/jpg.' format: binary podObservations: maxLength: 250 type: string description: Any observations noted by receiver during delivery or pickup. example: Container genset was not ON during delivery. securitySchemes: default: type: oauth2 flows: implicit: authorizationUrl: https://gateway.api.kuehne-nagel.com/authorize scopes: {} x-wso2-api-key-header: ApiKey