openapi: 3.0.1 info: title: Parcel DE Shipping API (Post & Parcel Germany) description: > Note: This is the specification of the DPDHL Group Parcel DE Shipping API for Post & Parcel Germany. This REST web service allows business customers to create shipping labels on demand. version: 2.1.13 servers: - url: https://api-eu.dhl.com/parcel/de/shipping/v2 description: Productive Server - url: https://api-sandbox.dhl.com/parcel/de/shipping/v2 description: Sandbox Server tags: - name: General description: Get API version info - name: Shipments and Labels description: Order and retrieve shipment labels - name: Manifests description: Manifest shipments and retrieve daily manifest lists paths: /: get: tags: - General summary: Return API version description: > Returns the current version of the API as major.minor.patch. Furthermore, it will also return more details (semantic version number, revision, environment) of the API layer. operationId: rootGet security: [] # No auth responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ServiceInformation' '401': $ref: '#/components/responses/Unauthorized' '429': $ref: '#/components/responses/TooManyRequests' '500': $ref: '#/components/responses/InternalServerError' /labels: get: tags: - Shipments and Labels summary: Download PDF document description: > Public download URL for shipment labels and documents. The URL is provided in the response of the POST /orders or GET /orders resources. The document is identified via the token query parameter. There is no additional authorization, the resource URL can be shared. Please protect the URL as needed. The call returns a PDF label. operationId: getLabel security: [] # No auth parameters: - name: token in: query description: Identifies PDF document and requested print settings for download. required: true schema: type: string responses: '200': description: Returns PDF file content: application/pdf: schema: type: string format: binary '404': $ref: '#/components/responses/Unauthorized' '429': $ref: '#/components/responses/TooManyRequests' '500': $ref: '#/components/responses/InternalServerError' /manifests: get: tags: - Manifests summary: Retrieve daily manifest document description: Return the manifest document for the specific date (abbreviated ISO8601 format YYYY-MM-DD). If no date is provided, the manifest for today will be returned. The manifest PDF document will list the shipments for your EKP, separated by billing numbers. Potentially, the document is large and response time will reflect this.
Additionally, the response contains a mapping of billing numbers to sheet numbers of the manifest and a mapping of shipment numbers to sheet numbers.
The call can be repeated as often as needed. Should a date be provided which is too old or lies within the future, HTTP 400 is returned. operationId: getManifests parameters: - name: billingNumber in: query description: Customer billingNumber number. required: false schema: type: string - name: date in: query schema: type: string - name: includeDocs in: query description: |- Legacy name **labelResponseType**. Shipping labels and further shipment documents can be: * __include__: included as base64 encoded data in the response (default) * __URL__: provided as URL reference. Default is include the base64 encoded labels. schema: type: string enum: - include - URL default: include - name: Accept-Language in: header description: Control the APIs response language via locale abbreviation. English (en-US) and german (de-DE) are supported. If not specified, the default is english. schema: type: string example: de-DE responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/SingleManifestResponse' application/problem+json: schema: $ref: '#/components/schemas/SingleManifestResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '429': $ref: '#/components/responses/TooManyRequests' '500': $ref: '#/components/responses/InternalServerError' post: tags: - Manifests summary: Mark shipments as being ready for shipping description: |- Shipments are normally ''closed out'' at a fixed time of the day (such as 6 pm, configured by EKP/account) for the date provided as shipDate in the create call.
This call allows forcing the closeout for sets of shipments earlier. This will also override the original shipDate. Afterwards, the shipment cannot be changed and the shipment labels cannot be queried anymore (however they may remain cached for limited duration). Once a shipment has been closed, then calling closeout for the same shipment will result in a warning. The same warning will also be returned if the automatic closeout happened prior to the call. It is however possible to add new shipments, they will be manifested as well and be part of the day's manifest.
Note on billing: The manifesting step has billing implications. Some products (Parcel International partially) are billed based on the shipment data available to DHL at the end of the day. All other products (including DHL Paket Standard) are billed based on production data. For more details, please contact your account representative. #### Request It's changing the status of the shipment, so parameters are provided in the body or as query parameter. * ''profile'' attribute (request body parameter) - defines the user group profile. A user group is permitted to specific billing numbers. Shipments are only closed out if they belong to a billing number that the user group profile is entitled to use. This attribute is mandatory. Please use the standard user group profile ''STANDARD_GRUPPENPROFIL'' if no dedicated user group profile is available. * ''billingNumber'' attribute (query parameter) - defines the billing number for which shipments shall be closed out. If a billing number is set, then only the shipments of that billing number are closed out. In that case no list of specific shipment numbers needs to be passed. * ''shipmentNumbers'' attribute (request body parameter) - lists the specific shipping numbers of the shipments that shall be closed out. If all shipments shall be closed, the query parameter ''all'' needs to be set to ''true''. In that case neither a billing number nor a list of shipment numbers need to be passed in the request. #### Response * Closing status for each shipment operationId: manifestsPost parameters: - name: Accept-Language in: header description: Control the APIs response language via locale abbreviation. English (en-US) and german (de-DE) are supported. If not specified, the default is english. schema: type: string example: de-DE - name: all in: query description: Specify if all applicable shipments shall be marked as being ready for shipping. schema: type: boolean default: false requestBody: description: Manifest request taking multiple input elements content: application/json: schema: $ref: '#/components/schemas/ShipmentManifestingRequest' required: true responses: '207': description: Response for manifesting request taking multiple input elements content: application/json: schema: $ref: '#/components/schemas/MultipleManifestResponse' application/problem+json: schema: $ref: '#/components/schemas/MultipleManifestResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '429': $ref: '#/components/responses/TooManyRequests' '500': $ref: '#/components/responses/InternalServerError' /orders: get: tags: - Shipments and Labels summary: Retrieve shipment documents - labels and customs documents description: |- Returns documents for existing shipment(s). The call accepts multiple shipment numbers and will provide sets of documents for those. The **format (PDF,ZPL)** and **method of delivery (URL, encoded, data)** can be selected for **all** shipments and labels in that call. You cannot chose one format and delivery method for one label and different for another label within the same call. You can also specify if you want regular labels, return labels, cod labels, or customsDoc. Any combination is possible. The call returns for each shipment number the status indicator and the selected labels and documents. If a label type (for example a cod label) does not exist for a shipment, it will not be returned. This is not an error. If you were sending multiple shipments, you will get an HTTP 207 response (multistatus) with detailed status for each shipment. Other standard HTTP response codes (200, 400, 401, 429, 500) are possible as well. Labels can be either provided as part of the response (base64 encoded for PDF, text for ZPL) or via URL link for view and download (PDF). Note that the format settings per query parameters apply to the shipping label. Retoure label paper type can be specified separately since a different printer may be used here. If requesting labels to be returned as URL for separate download, the URLs provided can be shared. operationId: getOrder parameters: - name: shipment in: query description: This parameter identifies shipments. The parameter can be used multiple times in one request to get the labels and/or documents for up to 30 shipments maximum. Only documents and label for shipments that are not yet closed can be retrieved. required: true schema: type: array items: type: string - name: Accept-Language in: header description: Control the APIs response language via locale abbreviation. English (en-US) and german (de-DE) are supported. If not specified, the default is english. schema: type: string example: de-DE - name: docFormat in: query description: '**Defines** the **printable** document format to be used for label and manifest documents.' schema: type: string enum: - ZPL2 - PDF default: PDF - name: printFormat in: query description: "**Defines** the print medium for the shipping label. The different option vary from standard papersizes DIN A4 and DIN A5 to specific label print formats.\_\n\nSpecific laser print formats using DIN A5 blanks are:\n\n* 910-300-600(-oz) (105 x 205mm)\n* 910-300-300(-oz) (105 x 148mm)\n\nSpecific laser print formats **not** using a DIN A5 blank:\n\n* 910-300-610 (105 x 208mm)\n* 100x70mm\n\nSpecific thermal print formats:\n\n* 910-300-600 (103 x 199mm)\n* 910-300-400 (103 x 150mm)\n* 100x70mm\n\nPlease use the different formats as follows. If you do not set the parameter the settings of DHL costumer portal account will be used as default." schema: type: string enum: - A4 - 910-300-600 - 910-300-610 - 910-300-700 - 910-300-700-oz - 910-300-710 - 910-300-300 - 910-300-300-oz - 910-300-400 - 910-300-410 - 100x70mm - name: retourePrintFormat in: query description: "**Defines** the print medium for the return shipping label. This parameter is only usable, if you do not use **combined printing**. The different option vary from standard papersizes DIN A4 and DIN A5 to specific label print formats.\_\n\nSpecific laser print formats using DIN A5 blanks are:\n\n* 910-300-600(-oz) (105 x 205mm)\n* 910-300-300(-oz) (105 x 148mm)\n\nSpecific laser print formats **not** using a DIN A5 blank:\n\n* 910-300-610 (105 x 208mm)\n* 100x70mm\n\nSpecific thermal print formats:\n\n* 910-300-600 (103 x 199mm)\n* 910-300-400 (103 x 150mm)\n* 100x70mm\n\nPlease use the different formats as follows. If you do not set the parameter the settings of DHL costumer portal account will be used as default." schema: type: string enum: - A4 - 910-300-600 - 910-300-610 - 910-300-700 - 910-300-700-oz - 910-300-710 - 910-300-300 - 910-300-300-oz - 910-300-400 - 910-300-410 - 100x70mm - name: includeDocs in: query description: |- Legacy name **labelResponseType**. Shipping labels and further shipment documents can be: * __include__: included as base64 encoded data in the response (default) * __URL__: provided as URL reference. Default is include the base64 encoded labels. schema: type: string enum: - include - URL default: include - name: combine in: query description: If set, label and return label for one shipment will be printed as single PDF document with possibly multiple pages. Else, those two labels come as separate documents. The option does not affect customs documents and COD labels. schema: type: boolean default: true responses: '200': description: Success response for requests with a single shipment. content: application/json: schema: $ref: '#/components/schemas/LabelDataResponse' '207': description: Response for requests taking multiple input elements content: application/json: schema: $ref: '#/components/schemas/LabelDataResponse' application/problem+json: schema: $ref: '#/components/schemas/LabelDataResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '429': $ref: '#/components/responses/TooManyRequests' '500': $ref: '#/components/responses/InternalServerError' post: tags: - Shipments and Labels summary: 'Create one or more shipments and their documents. (This is the primary call of the API.)' description: |- This request is used to create one or more shipments and return corresponding shipment tracking numbers, labels, and documentation. Up to 30 shipments can be created in a single call. #### Request The selected products and corresponding billing numbers, as well as the desired services and package details are required to create a shipment. Each shipment can have a dedicated shipper address. The example request body contains sample values for most services. #### Response The request will return shipment tracking numbers and the applicable labels for each shipment. If multiple shipments have been included, an HTTP 207 response (multistatus) is returned and holds detailed status for each shipment. Other standard HTTP response codes (401, 500, 400, 200, 429) are possible, too. Labels can be either provided as part of the response (base64 encoded for PDF, text for ZPL) or via URL link for view and download. Note that the format settings per query parameters apply to the shipping label. It may also apply to other labels included, depending on the configuration of your account. Label paper for return shipments can be specified separately since a different printer may be used here. If requesting labels to be provided as URL for separate download, the URLs can be shared. #### Validation It is recommended to validate the request first prior to shipment creation by setting the `validate` query parameter to `true`. Especially, during development and test, it is recommended to perform this validation. This functionality supports both * JSON schema validation (against this API description). During development and test, it is recommended to do this validation. JSON schema is available for local validation * Dry run against the DHL backend If this succeeds, actual shipment creation will also succeed. operationId: createOrders parameters: - name: Accept-Language in: header description: Control the APIs response language via locale abbreviation. English (en-US) and german (de-DE) are supported. If not specified, the default is english. schema: type: string example: de-DE - name: validate in: query description: |- If provided and set to `true`, the input document will be: * validated against JSON schema (/orders/ endpoint) at the API layer. In case of errors, HTTP 400 and details will be returned. * validated against the DHL backend. In that case, no state changes are happening, no data is stored, shipments neither deleted nor created, no labels being returned. The call will return a status (200, 400) for each shipment element. schema: type: boolean default: false - name: mustEncode in: query description: Legacy name **printOnlyIfCodable**. If set to *true*, labels will only be created if an address is encodable. This is only relevant for German consignee addresses. If set to false or left out, addresses, that are not encodable will be printed even though you receive a warning. schema: type: boolean default: false - name: includeDocs in: query description: |- Legacy name **labelResponseType**. Shipping labels and further shipment documents can be: * __include__: included as base64 encoded data in the response (default) * __URL__: provided as URL reference. schema: type: string enum: - include - URL default: include - name: docFormat in: query description: |- **Defines** the **printable** document format to be used for label and manifest documents. schema: type: string enum: - ZPL2 - PDF default: PDF - name: printFormat in: query description: |- **Defines** the print medium for the shipping label. The different option vary from standard paper sizes DIN A4 and DIN A5 to specific label print formats. Specific laser print formats using DIN A5 blanks are: * 910-300-600(-oz) (105 x 205mm) * 910-300-300(-oz) (105 x 148mm) Specific laser print formats **not** using a DIN A5 blank: * 910-300-610 (105 x 208mm) * 100x70mm Specific thermal print formats: * 910-300-600 (103 x 199mm) * 910-300-400 (103 x 150mm) * 100x70mm Please use the different formats as follows. If you do not set the parameter the settings of DHL costumer portal account will be used as default. schema: type: string enum: - A4 - 910-300-600 - 910-300-610 - 910-300-700 - 910-300-700-oz - 910-300-710 - 910-300-300 - 910-300-300-oz - 910-300-400 - 910-300-410 - 100x70mm - name: retourePrintFormat in: query description: |- **Defines** the print medium for the return shipping label. This parameter is only usable, if you do not use **combined printing**. The different option vary from standard paper sizes DIN A4 and DIN A5 to specific label print formats. Specific laser print formats using DIN A5 blanks are: * 910-300-600(-oz) (105 x 205mm) * 910-300-300(-oz) (105 x 148mm) Specific laser print formats **not** using a DIN A5 blank: * 910-300-610 (105 x 208mm) * 100x70mm Specific thermal print formats: * 910-300-600 (103 x 199mm) * 910-300-400 (103 x 150mm) * 100x70mm Please use the different formats as follows. If you do not set the parameter the settings of DHL costumer portal account will be used as default. schema: type: string enum: - A4 - 910-300-600 - 910-300-610 - 910-300-700 - 910-300-700-oz - 910-300-710 - 910-300-300 - 910-300-300-oz - 910-300-400 - 910-300-410 - 100x70mm - name: combine in: query description: If set, label and return label for one shipment will be printed as single PDF document with possibly multiple pages. Else, those two labels come as separate documents. The option does not affect customs documents and COD labels. schema: type: boolean default: true requestBody: description: Shipment order request. content: application/json: schema: $ref: '#/components/schemas/ShipmentOrderRequest' examples: DHLPaket: $ref: '#/components/examples/DHLPaket' DHLPaketInternational: $ref: '#/components/examples/DHLPaketInternational' DHLPaketInternationalWithCustoms: $ref: '#/components/examples/DHLPaketInternationalWithCustoms' DHLKleinpaket: $ref: '#/components/examples/DHLKleinpaket' WarenpostInternationalWithCustoms: $ref: '#/components/examples/WarenpostInternationalWithCustoms' required: true responses: '200': description: Success response for requests with a single shipment. content: application/json: schema: $ref: '#/components/schemas/LabelDataResponse' application/problem+json: schema: $ref: '#/components/schemas/LabelDataResponse' '207': description: Response for requests taking multiple input elements content: application/json: schema: $ref: '#/components/schemas/LabelDataResponse' application/problem+json: schema: $ref: '#/components/schemas/LabelDataResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '429': $ref: '#/components/responses/TooManyRequests' '500': $ref: '#/components/responses/InternalServerError' delete: tags: - Shipments and Labels summary: Delete one or more shipments description: 'Delete one or more shipments created earlier. Deletion of shipments is only possible prior to them being manifested (closed out, ''Tagesabschluss''). The call will return HTTP 200 (single shipment) or 207 on success, with individual status elements for each shipment. Individual status elements are HTTP 200, 400. 400 will be returned when shipment does not exist (or was already deleted).' operationId: ordersAccountDelete parameters: - name: Accept-Language in: header description: Control the APIs response language via locale abbreviation. English (en-US) and german (de-DE) are supported. If not specified, the default is english. schema: type: string example: de-DE - name: profile in: query required: true description: 'Defines the user group profile. A user group is permitted to specific billing numbers. Shipments are only canceled if they belong to a billing number that the user group profile is entitled to use. This attribute is mandatory. Please use the standard user group profile ''STANDARD_GRUPPENPROFIL'' if no dedicated user group profile is available.' schema: type: string example: 'STANDARD_GRUPPENPROFIL' - name: shipment required: true in: query description: Shipment number that shall be canceled. If multiple shipments shall be canceled, the parameter must be added multiple times. Up to 30 shipments can be canceled at once. schema: type: string example: '123456789' responses: '200': description: Response for requests with a single element content: application/json: schema: $ref: '#/components/schemas/LabelDataResponse' application/problem+json: schema: $ref: '#/components/schemas/LabelDataResponse' '207': description: Response for requests taking multiple input elements content: application/json: schema: $ref: '#/components/schemas/LabelDataResponse' application/problem+json: schema: $ref: '#/components/schemas/LabelDataResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '429': $ref: '#/components/responses/TooManyRequests' '500': $ref: '#/components/responses/InternalServerError' components: schemas: ServiceInformation: type: object description: Response for the API version endpoint detailing version information. properties: amp: type: object properties: name: type: string description: name of api example: pp-parcel-shipping-native env: type: string description: environment example: sandbox version: type: string description: version of api example: v2.0.4 rev: type: string description: revision example: 22 backend: type: object properties: env: type: string description: environment example: sandbox version: type: string description: version of backend example: v2.1.0 Document: type: object properties: b64: type: string description: The Base64 encoded byte stream zpl2: type: string description: The document in zpl encoding url: type: string description: URL reference to download document example: www.dhl.de/download/myobscurelink?label.png fileFormat: type: string description: format of the encoded bytes example: PDF enum: - ZPL2 - PDF printFormat: type: string description: The print format used. Customs documents and cash on delivery documents can only be returned in format A4. example: 910-300-700 enum: - A4-PT - A4 - 910-300-700 - 910-300-700-oZ/oz - 910-300-300 - 910-300-300-oz - 910-300-710 - 910-300-600/610 - 910-300-400/410 - 100x70mm description: 'Encoded document. All types of labels and documents.' RequestStatus: type: object description: General status description for the attached response or response item. required: - statusCode - title properties: title: type: string example: ok statusCode: description: The status code of the response. Usually, but not necessarliy the HTTP status code. Same as attribut "status" but deprecated. Do not use. Will be removed in the next major version. type: integer format: int32 example: 200 status: description: The status code of the response. Usually, but not necessarliy the HTTP status code. type: integer format: int32 example: 200 instance: type: string description: A URI reference that identifies the specific occurrence of the problem. detail: maxLength: 80 minLength: 0 type: string example: The Webservice call ran successfully. LabelDataResponse: type: object properties: status: $ref: '#/components/schemas/RequestStatus' items: type: array description: If the request contains a multi element array (e.g. multiple shipments), then the order of the items in the response corresponds to the order of the items in the request. For consistency, if the request contains only one item then the response contains a single element array. example: - shipmentNo: 340434310428091700 routingCode: 40327653113+99000943058020 sstatus: title: OK status: 200 label: url: https://api-dev.dhl.com/parcel/de/shipping/v1-feature-order-endpoint/labels?token=x5xzrHE7ctmqPqk33k%2BKkBwbvIfYP4elMQsBFM%2BJOdiT2bmoaXXzris%2Ftz9jBtdVFLY5cCENit0Jnd9aXuxoNEXhP9PQ8tAVdPeXD26RZ6JZqF5NCJlrihrAv1%2FAOzuDPqWJLRVaRq461BpT4bcbzChAAHVg%2FHUaQAkeIkaZ8NqfcxWEQzK1AYJWczpy6sv6 format: PDF items: $ref: '#/components/schemas/ResponseItem' ResponseItem: required: - sstatus type: object properties: shipmentNo: maxLength: 50 minLength: 0 type: string routingCode: maxLength: 35 minLength: 0 type: string description: Routing code of the consignee address returnRoutingCode: maxLength: 35 minLength: 0 type: string description: Routing code of the return address returnShipmentNo: maxLength: 50 minLength: 0 type: string sstatus: $ref: '#/components/schemas/RequestStatus' shipmentRefNo: maxLength: 50 minLength: 6 type: string label: $ref: '#/components/schemas/Document' returnLabel: $ref: '#/components/schemas/Document' customsDoc: $ref: '#/components/schemas/Document' codLabel: $ref: '#/components/schemas/Document' validationMessages: type: array description: Optional validation messages attached to the shipment. items: $ref: '#/components/schemas/ValidationMessageItem' description: Response for a single shipment containing status, numbers and labels example: - shipmentNo: 340434310428091700 routingCode: 40327653113+99000943058020 sstatus: title: OK status: 200 label: url: https://api-dev.dhl.com/parcel/de/shipping/v1-feature-order-endpoint/labels?token=x5xzrHE7ctmqPqk33k%2BKkBwbvIfYP4elMQsBFM%2BJOdiT2bmoaXXzris%2Ftz9jBtdVFLY5cCENit0Jnd9aXuxoNEXhP9PQ8tAVdPeXD26RZ6JZqF5NCJlrihrAv1%2FAOzuDPqWJLRVaRq461BpT4bcbzChAAHVg%2FHUaQAkeIkaZ8NqfcxWEQzK1AYJWczpy6sv6 format: PDF ValidationMessageItem: type: object properties: property: type: string description: The property that is affected by the validation message. example: dimension.weight validationMessage: type: string description: The validation message describing the error. example: The weight is too high validationState: type: string description: The validation state resulting from the error. example: Error description: Representation of a validation message of a shipment container containing the most important information. SingleManifestResponse: type: object properties: status: $ref: '#/components/schemas/RequestStatus' manifestDate: type: string manifest: type: array items: $ref: '#/components/schemas/Document' sheetNo: type: array items: $ref: '#/components/schemas/BillingNoToSheetNo' items: type: array items: $ref: '#/components/schemas/ShipmentNoToSheetNo' BillingNoToSheetNo: type: object properties: billingNumber: type: string sheetNo: type: string description: Mapping between billing number and sheet number ShipmentNoToSheetNo: type: object properties: shipmentNo: type: string sheetNo: type: string sstatus: $ref: '#/components/schemas/RequestStatus' description: Mapping between shipment number and sheet number MultipleManifestResponse: type: object properties: status: $ref: '#/components/schemas/RequestStatus' items: type: array items: $ref: '#/components/schemas/ShortResponseItem' description: Response of the POST /manifests endpoint containing an overall request status and detailed shipment status. ShortResponseItem: required: - sstatus type: object properties: shipmentNo: maxLength: 50 minLength: 0 type: string example: '340434310428091700' sstatus: $ref: '#/components/schemas/RequestStatus' description: Response for a single shipment element not containing labels. ShipmentManifestingRequest: required: - profile type: object properties: profile: maxLength: 35 minLength: 0 type: string shipmentNumbers: maxItems: 30 minItems: 1 type: array description: List of shipment IDs for manifesting. items: type: string billingNumber: type: string description: Customer billingNumber number. description: List of shipments which shall be manifested. BankAccount: required: - accountHolder - iban type: object properties: accountHolder: maxLength: 80 minLength: 0 type: string example: John D. Rockefeller bankName: maxLength: 80 minLength: 0 type: string example: The Iron Bank, Braavos iban: pattern: '[A-Z]{2,2}[0-9]{2,2}[a-zA-Z0-9]{1,30}' type: string example: DE02100100100006820101 bic: pattern: '[a-zA-Z0-9]{8,11}' type: string example: DEUTDEFFXXX description: Bank account data used for CoD (Cash on Delivery). Commodity: required: - itemDescription - itemValue - itemWeight - packagedQuantity type: object properties: itemDescription: maxLength: 256 minLength: 1 type: string example: T-Shirt Boys size 164 yellow description: A text that describes the commodity item. Only the first 50 characters of the description text is printed on the customs declaration form CN23. countryOfOrigin: $ref: '#/components/schemas/Country' hsCode: maxLength: 11 minLength: 6 type: string description: Harmonized System Code aka Customs tariff number. example: '61099090' packagedQuantity: type: integer description: How many items of that type are in the package format: int32 example: 1 itemValue: $ref: '#/components/schemas/Value' itemWeight: $ref: '#/components/schemas/Weight' description: |- Commodity line item (e.g. a t-shirt) for international shipments which require individual listing of goods. Each good must contain a description of the item, the amount of the item, the net weight of one single item and the value of one single item. If you ship 5 t-shirts, you need to include the weight and value of one single shirt. The correct final weight and value will be calculated automatically. The HS Code and the country of origin are optional. example: - itemDescription: T-Shirt hscode: '61099090' countryOfOrigin: DE packagedQuantity: 3 - itemDescription: Book hscode: '49019900' packagedQuantity: 1 Consignee: type: object description: Consignee address information. Either a doorstep address (contact address) including contact information or a droppoint address. One of packstation (parcel locker), or post office (postfiliale/retail shop). oneOf: - $ref: '#/components/schemas/ContactAddress' - $ref: '#/components/schemas/Locker' - $ref: '#/components/schemas/PostOffice' - $ref: '#/components/schemas/POBox' ContactAddress: required: - addressStreet - city - country - name1 type: object properties: name1: maxLength: 50 minLength: 1 type: string description: Name1. Line 1 of name information example: Blumen Krause name2: maxLength: 50 minLength: 1 type: string description: An optional, additional line of name information example: To the attention of Erna. name3: maxLength: 50 minLength: 1 type: string description: An optional, additional line of name information example: Backdrawer all the way back. dispatchingInformation: maxLength: 35 minLength: 1 type: string description: An optional, additional line of address. It is printed on the shipping label for international shipments to the following countries only BEL, CZE, NLD. It is positioned below name3 on the label. example: PO Box, bpack 24/7 addressStreet: maxLength: 50 minLength: 1 type: string description: Line 1 of the street address. This is just the street name. Can also include house number. example: Hauptstrasse addressHouse: maxLength: 10 minLength: 1 type: string description: Line 1 of the street address. This is just the house number. Can be added to street name instead. example: 1a additionalAddressInformation1: maxLength: 60 minLength: 1 type: string description: Additional information that is positioned either behind or below addressStreet on international shipment labels. Where exactly it is printed on the label depends on the country. example: 3. Etage additionalAddressInformation2: maxLength: 60 minLength: 1 type: string description: Additional information that is positioned either behind or below addressStreet on international shipment labels. It is printed on shipping labels to the following countries only AUT, CHN, DNK, GBR, HRV, LTU, PRT, ROU, RUS. Where exactly it is printed on the label depends on the country. example: Apartment 12 postalCode: maxLength: 10 minLength: 3 pattern: ^[0-9A-Za-z]+([ -]?[0-9A-Za-z]+)*$ type: string description: Mandatory for all countries but Ireland that use a postal code system. example: '53113' city: maxLength: 40 minLength: 1 type: string description: city example: Berlin state: maxLength: 20 minLength: 1 type: string description: State, province or territory. For the USA please use the official regional ISO-Codes, e.g. US-AL. example: NRW country: $ref: '#/components/schemas/Country' contactName: maxLength: 80 minLength: 3 type: string description: optional contact name. (this is not the primary name printed on label) example: Konrad Kontaktmann phone: maxLength: 20 minLength: 1 type: string description: Please note that, in accordance with Art. 4 No. 11 GDPR, you must obtain the recipient's consent to forward their phone number to Deutsche Post DHL Group. For shipments within Germany, the phone number cannot be transmitted. In some countries the provision of a telephone number and/or e-mail address is mandatory for a delivery to a droppoint. If your recipient has objected to the disclosure of their telephone number and/or e-mail address, the shipment can only be delivered in these countries using the service Premium. example: +49 170 1234567 email: maxLength: 80 minLength: 3 type: string description: "Please note that, in accordance with Art. 4 No. 11 GDPR, you must obtain the recipient's consent to forward their e-mail address to Deutsche Post DHL Group.\_For shipments within Germany, the e-mail address is used to send a DHL Parcel Notification to the recipient. The e-mail address is not mandatory for shipments within Germany. In some countries the provision of a telephone number and/or e-mail address is mandatory for a delivery to a droppoint. If your recipient has objected to the disclosure of their telephone number and/or e-mail address, the shipment can only be delivered in these countries using the service Premium." example: mustermann@example.com description: Combines name, address, contact information. The recommended way is to use the mandatory attribute addressStreet and submit the streetname and housenumber together – alternatively addressHouse + addressStreet can be used. For many international addresses there is no house number, please do not set a period or any other sign to indicate that the address does not have a housenumber. CustomsDetails: required: - exportType - postalCharges - items type: object properties: invoiceNo: maxLength: 35 minLength: 0 type: string description: Invoice number exportType: type: string description: This contains the category of goods contained in parcel. enum: - OTHER - PRESENT - COMMERCIAL_SAMPLE - DOCUMENT - RETURN_OF_GOODS - COMMERCIAL_GOODS exportDescription: maxLength: 80 minLength: 0 type: string description: Mandatory if exporttype is 'OTHER' example: Detailed description for OTHER goods. shippingConditions: type: string description: Aka 'Terms of Trade' aka 'Frankatur'. The attribute is exclusively used for the product Europaket (V54EPAK). DDU is deprecated (use DAP instead). enum: - DAP - DDP permitNo: maxLength: 30 minLength: 0 type: string description: Permit number. Very rarely needed. Mostly relevant for higher value goods. An example use case would be an item made from crocodile leather which requires dedicated license / permit identified by that number. attestationNo: maxLength: 30 minLength: 0 type: string description: Attest or certification identified by this number. Very rarely needed. An example use case would be a medical shipment referring to an attestation that a certain amount of medicine may be imported within e.g. the current quarter of the year. hasElectronicExportNotification: type: boolean description: flag confirming whether electronic record for export was made MRN: type: string maxLength: 18 example: "abcd1234567890" postalCharges: allOf: - $ref: '#/components/schemas/Value' description: Postal charges that have been charged to the recipient. The information must match the information on the invoice. Postal charges are added to the customs value which is the basis for the calculation of import duties. Since 1.1.2021 this information is mandatory according to requirements of the Universal Postal Union. The currency of the postal charges is used throughout the customs declaration form. The currency details of the individual goods items and the currency of the postal charges must match. Otherwise no shipping label will be created. officeOfOrigin: maxLength: 35 minLength: 0 type: string description: Deprecated (do not use anymore). Will appear on CN23. shipperCustomsRef: description: "Optional. The customs reference is used by customs authorities to identify economics operators an/or other persons involved. With the given reference, granted authorizations and/or relevant processes in customs clearance an/or taxation can be taken into account. Aka Zoll-Nummer or EORI-Number but dependent on destination." type: string maxLength: 35 example: "DE73282932000074" consigneeCustomsRef: description: "Optional. The customs reference is used by customs authorities to identify economics operators an/or other persons involved. With the given reference, granted authorizations and/or relevant processes in customs clearance an/or taxation can be taken into account. Aka Zoll-Nummer or EORI-Number but dependent on destination." type: string maxLength: 35 example: "GB73282932000074" items: maxItems: 99 minItems: 1 type: array description: Commodity types in that package example: - itemDescription: T-Shirt hscode: '61099090' countryOfOrigin: DE packagedQuantity: 3 - itemDescription: Book hscode: '49019900' packagedQuantity: 1 items: $ref: '#/components/schemas/Commodity' description: For international shipments, this section contains information necessary for customs about the exported goods. ExportDocument can contain one or more positions as child element. This data is also transferred as electronic declaration to customs. The custom details are mandatory depending on whether the parcel will go to a country outside the European Customs Union. For DHL Parcel International (V53WPAK) CN23 will returned as a separate document, while for Warenpost International the customs information will be printed onto the shipment label (CN22). Dimensions: required: - height - length - uom - width type: object properties: uom: type: string description: Unit of metric, applies to all dimensions contained. example: cm enum: - cm - mm height: type: integer format: int32 example: 10 length: type: integer format: int32 example: 20 width: type: integer format: int32 example: 15 description: Physical dimensions (aka 'Gurtmass') of the parcel. If you provide the dimension information, all attributes need to be provided. You cannot provide just the height, for example. If you provide length, width, and height in millimeters, they will be rounded to full cm. Locker: required: - city - lockerID - name - postNumber - postalCode type: object properties: name: maxLength: 50 minLength: 1 type: string description: Name example: Paula Packstation lockerID: maximum: 999 minimum: 100 type: integer description: Packstationnummer. Three digit number identifying the parcel locker in conjunction with city and postal code format: int32 example: 118 postNumber: pattern: ^[0-9]{6,10}$ type: string description: postNumber (Postnummer) is the official account number a private DHL Customer gets upon registration. city: maxLength: 40 minLength: 0 type: string description: City where the locker is located example: Berlin country: $ref: '#/components/schemas/Country' postalCode: maxLength: 10 minLength: 3 pattern: ^[0-9A-Za-z]+([ -]?[0-9A-Za-z]+)*$ type: string description: Only usable for German Packstation, international lockers cannot be addressed directly. If your customer wishes for international delivery to a droppoint, please use DHL Parcel International (V53WPAK) with the delivery type "Closest Droppoint". PostOffice: required: - city - name - postalCode - retailID type: object properties: name: maxLength: 50 minLength: 1 type: string description: Name example: Fritz Filialabholer retailID: maximum: 999 minimum: 401 type: integer description: Id or Number of Post office / Filiale / outlet / parcel shop format: int32 example: 518 postNumber: maxLength: 10 minLength: 3 pattern: ^[0-9]{6,10}$ type: string description: postNumber (Postnummer) is the official account number a private DHL Customer gets upon registration. To address a post office or retail outlet directly, either the post number or e-mail address of the consignee is needed. email: maxLength: 80 minLength: 3 type: string description: Email address of the consignee. To address a post office or retail outlet directly, either the post number or e-mail address of the consignee is needed. example: mustermann@example.com city: maxLength: 80 minLength: 0 type: string description: City where the retail location is example: Berlin country: $ref: '#/components/schemas/Country' postalCode: maxLength: 10 minLength: 3 pattern: ^[0-9A-Za-z]+([ -]?[0-9A-Za-z]+)*$ type: string description: Only usable for German post offices or retail outlets (Paketshops), international postOffices or retail outlets cannot be addressed directly. If your customer wishes for international delivery to a droppoint, please use DHL Parcel International (V53WPAK) with the delivery type "Closest Droppoint". POBox: required: - name1 - poBoxID - city - postalCode type: object properties: name1: maxLength: 50 minLength: 1 type: string description: Name1. Line 1 of name information example: Joe Black name2: maxLength: 50 minLength: 1 type: string description: An optional, additional line of name information example: To the attention of Mr. Black. name3: maxLength: 50 minLength: 1 type: string description: An optional, additional line of name information example: Backdrawer all the way back. poBoxID: type: integer format: int32 description: Number of P.O. Box (Postfach) email: maxLength: 80 minLength: 3 type: string description: Email address of the consignee city: maxLength: 80 minLength: 0 type: string description: City of the P.O. Box (Postfach) location example: Berlin country: $ref: '#/components/schemas/Country' postalCode: maxLength: 10 minLength: 3 pattern: ^[0-9A-Za-z]+([ -]?[0-9A-Za-z]+)*$ type: string description: Postal code of the P.O. Box (Postfach) location description: Alternative destination - P.O. Box (Postfach) Product: type: string description: |- Determines the DHL Paket product to be used. * V01PAK: DHL PAKET; * V53WPAK: DHL PAKET International; * V54EPAK: DHL Europaket; * V62WP: Warenpost (will be replaced by DHL Kleinpaket from 1.1.2025); * V62KP: DHL Kleinpaket; * V66WPI: Warenpost International example: V01PAK enum: - V01PAK - V53WPAK - V54EPAK - V62WP - V62KP - V66WPI Shipment: type: object properties: product: $ref: '#/components/schemas/Product' billingNumber: pattern: \w{10}\d{2}\w{2} type: string description: 14 digit long number that identifies the contract the shipment is booked on. Please note that in rare cases the last to characters can be letters. Digit 11 and digit 12 must correspondent to the number of the product, e.g. 333333333301tt can only be used for the product V01PAK (DHL Paket). example: 33333333330101 or 333333333362aa refNo: maxLength: 35 minLength: 8 type: string description: A reference number that the user can assign for better association purposes. It appears on shipment labels. To use the reference number for tracking purposes, it should be at least 8 characters long and unique. costCenter: maxLength: 50 type: string description: Textfield that appears on the shipment label. It cannot be used to search for the shipment. creationSoftware: type: string description: Is only to be indicated by DHL partners. shipDate: type: string description: 'Date the shipment is transferred to DHL. The shipment date can be the current date or a date up to a few days in the future. It must not be in the past. Iso format required: yyyy-mm-dd. On the shipment date the shipment will be automatically closed at your end of day closing time.' format: date shipper: description: Shipper information, including contact information and address. Alternatively, a predefined shipper reference can be used. oneOf: - $ref: '#/components/schemas/Shipper' - $ref: '#/components/schemas/ShipperReference' consignee: $ref: '#/components/schemas/Consignee' details: $ref: '#/components/schemas/ShipmentDetails' services: $ref: '#/components/schemas/VAS' customs: $ref: '#/components/schemas/CustomsDetails' description: Container for all shipments. Mixed shipment products per request are supported. Each shipment has a dedicated shipper address (or shipper reference, or both). ShipmentDetails: required: - weight type: object properties: dim: $ref: '#/components/schemas/Dimensions' weight: $ref: '#/components/schemas/Weight' description: Details for the shipment, such as dimensions, content ShipmentOrderRequest: required: - profile - shipments type: object properties: profile: maxLength: 35 minLength: 0 type: string shipments: maxItems: 30 minItems: 1 type: array description: Shipment array having details for each shipment. items: $ref: '#/components/schemas/Shipment' description: Complex request structure used to create, update, and validate shipment data. Note that most elements are part of the array of shipment items. Shipper: type: object description: Shipper information, including contact information and address. required: - addressStreet - city - country - name1 properties: name1: maxLength: 50 minLength: 1 type: string description: Name1. Line 1 of name information example: Blumen Krause name2: maxLength: 50 minLength: 1 type: string description: An optional, additional line of name information example: To the attention of Erna. name3: maxLength: 50 minLength: 1 type: string description: An optional, additional line of name information example: Backdrawer all the way back. addressStreet: maxLength: 50 minLength: 1 type: string description: Line 1 of the street address. This is just the street name. Can also include house number. example: Hauptstrasse addressHouse: maxLength: 10 minLength: 1 type: string description: Line 1 of the street address. This is just the house number. Can be added to street name instead. example: 1a postalCode: maxLength: 10 minLength: 3 pattern: ^[0-9A-Za-z]+([ -]?[0-9A-Za-z]+)*$ type: string description: Mandatory for all countries but Ireland that use a postal code system. example: '53113' city: maxLength: 40 minLength: 1 type: string description: city example: Berlin country: $ref: '#/components/schemas/Country' contactName: maxLength: 80 minLength: 3 type: string description: optional contact name. (this is not the primary name printed on label) example: Konrad Kontaktmann email: maxLength: 80 minLength: 3 type: string description: Optional contact email address of the shipper example: mustermann@example.com ShipperReference: type: object description: Contains a reference to the Shipper data configured in GKP(Geschäftskundenportal - Business Costumer Portal). Can be used instead of a detailed shipper address. The shipper reference can be used to print a company logo which is configured in GKP onto the label. required: - shipperRef properties: shipperRef: maxLength: 50 minLength: 0 type: string description: Reference string to the shipper data configured in GKP(Geschäftskundenportal - Business Costumer Portal). VAS: type: object properties: preferredNeighbour: maxLength: 100 minLength: 0 type: string description: Preferred neighbour. Can be specified as text. example: Please ring at Meier next door preferredLocation: maxLength: 100 minLength: 0 type: string description: Preferred location. Can be specified as text. example: Please leave in carport visualCheckOfAge: pattern: A16|A18 type: string description: if used it will trigger checking the age of recipient example: A18 enum: - A16 - A18 namedPersonOnly: type: boolean description: Delivery can only be signed for by yourself personally. example: true identCheck: $ref: '#/components/schemas/VASIdentCheck' signedForByRecipient: type: boolean description: Delivery must be signed for by the recipient and not by DHL staff example: true endorsement: type: string description: Instructions and endorsement how to treat international undeliverable shipment. By default, shipments are returned if undeliverable. There are country specific rules whether the shipment is returned immediately or after a grace period. example: RETURN enum: - RETURN - ABANDON preferredDay: type: string description: Preferred day of delivery in format YYYY-MM-DD. Shipper can request a preferred day of delivery. The preferred day should be between 2 and 6 working days after handover to DHL. format: date noNeighbourDelivery: type: boolean description: Delivery can only be signed for by yourself personally or by members of your household. example: true additionalInsurance: $ref: '#/components/schemas/Value' bulkyGoods: type: boolean description: Leaving this out is same as setting to false. Sperrgut. example: true cashOnDelivery: $ref: '#/components/schemas/VASCashOnDelivery' individualSenderRequirement: pattern: '[a-zA-Z0-9]{2}' type: string description: Special instructions for delivery. 2 character code, possible values agreed in contract. example: ZZ premium: type: boolean description: 'Choice of premium vs economy parcel. Availability is country dependent and may be manipulated by DHL if choice is not available. Please review the label.' example: true closestDropPoint: type: boolean description: 'Closest Droppoint Delivery to the droppoint closest to the address of the recipient of the shipment. For this kind of delivery either the phone number and/or the e-mail address of the receiver is mandatory. For shipments using DHL Paket International it is recommended that you choose one of the three delivery types: Economy, Premium, CDP. Otherwise, the current default for the receiver country will be picked.' example: true parcelOutletRouting: type: string description: 'Undeliverable domestic shipment can be forwarded and held at retail. Notification to email (fallback: consignee email) will be used.' example: max.mustermann@example.com goGreenPlus: type: boolean description: 'GoGreen Plus enables sustainable shipping by investing in measures to reduce greenhouse gas emissions at DHL.' example: true dhlRetoure: $ref: '#/components/schemas/VASDhlRetoure' postalDeliveryDutyPaid: type: boolean description: 'All import duties are paid by the shipper.' example: true description: Value added services. Please note that services are specific to products and geographies and/or may require individual setup and billing numbers. Please test and contact your account representative in case of questions. VASCashOnDelivery: required: - transferNote1 type: object properties: amount: $ref: '#/components/schemas/Value' bankAccount: $ref: '#/components/schemas/BankAccount' accountReference: maxLength: 35 minLength: 0 type: string description: Reference to bank account details. Account references are maintained in customer settings in Post & DHL business customer portal under Ship -> Settings -> Cash on delivery. Please note, that the default account reference is used if the provided account reference does not exist in your customer settings! transferNote1: maxLength: 35 minLength: 0 type: string transferNote2: maxLength: 35 minLength: 0 type: string description: Cash on delivery (Nachnahme). Currency must be Euro. Either bank account information or account reference (from customer profile) must be provided. Transfernote1 + 2 are references transmitted during bank transfer. Providing account information explicitly requires elevated privileges. VASDhlRetoure: required: - billingNumber type: object properties: billingNumber: pattern: \w{10}\d{2}\w{2} type: string refNo: maxLength: 50 minLength: 6 type: string returnAddress: $ref: '#/components/schemas/ContactAddress' goGreenPlus: type: boolean description: 'GoGreen Plus enables sustainable shipping by investing in measures to reduce greenhouse gas emissions at DHL.' example: true description: Requests return label (aka 'retoure') to be provided. Also requires returnAddress and return billing number. Neither weight nor dimension need to be specified for the retoure (flat rate service). VASIdentCheck: required: - firstName - lastName type: object properties: firstName: maxLength: 35 minLength: 1 type: string example: Max lastName: maxLength: 35 minLength: 1 type: string example: Mustermann dateOfBirth: type: string description: date of birth, used in conjunction with minimumAge and shipping date. Format yyyy-mm-dd is used. format: date minimumAge: pattern: A16|A18 type: string description: Checks if recipient will have reached specified age by shipping date. example: A18 enum: - A16 - A18 description: Check the identity of the recipient via name (firstname, lastname), date of birth or age. This uses firstName and lastName as separate attributes since for identity check an automatic split of a one-line name is not considered reliable enough. Country: type: string description: A valid country code consisting of three characters according to ISO 3166-1 alpha-3. enum: - ABW - AFG - AGO - AIA - ALA - ALB - AND - ARE - ARG - ARM - ASM - ATG - AUS - AUT - AZE - BDI - BEL - BEN - BES - BFA - BGD - BGR - BHR - BHS - BIH - BLM - BLR - BLZ - BMU - BOL - BRA - BRB - BRN - BTN - BVT - BWA - CAF - CAN - CCK - CHE - CHL - CHN - CIV - CMR - COD - COG - COK - COL - COM - CPV - CRI - CUB - CUW - CXR - CYM - CYP - CZE - DEU - DJI - DMA - DNK - DOM - DZA - ECU - EGY - ERI - ESP - EST - ETH - FIN - FJI - FLK - FRA - FRO - FSM - GAB - GBR - GEO - GGY - GHA - GIB - GIN - GLP - GMB - GNB - GNQ - GRC - GRD - GRL - GTM - GUF - GUM - GUY - HKG - HMD - HND - HRV - HTI - HUN - IDN - IMN - IND - IRL - IRN - IRQ - ISL - ISR - ITA - JAM - JEY - JOR - JPN - KAZ - KEN - KGZ - KHM - KIR - KNA - KOR - KWT - LAO - LBN - LBR - LBY - LCA - LIE - LKA - LSO - LTU - LUX - LVA - MAC - MAF - MAR - MCO - MDA - MDG - MDV - MEX - MHL - MKD - MLI - MLT - MMR - MNE - MNG - MNP - MOZ - MRT - MSR - MTQ - MUS - MWI - MYS - MYT - NAM - NCL - NER - NFK - NGA - NIC - NIU - NLD - NOR - NPL - NRU - NZL - OMN - PAK - PAN - PCN - PER - PHL - PLW - PNG - POL - PRI - PRK - PRT - PRY - PSE - PYF - QAT - REU - ROU - RUS - RWA - SAU - SDN - SEN - SGP - SHN - SJM - SLB - SLE - SLV - SMR - SOM - SPM - SRB - SSD - STP - SUR - SVK - SVN - SWE - SWZ - SXM - SYC - SYR - TCA - TCD - TGO - THA - TJK - TKL - TKM - TLS - TON - TTO - TUN - TUR - TUV - TWN - TZA - UGA - UKR - URY - USA - UZB - VAT - VCT - VEN - VGB - VIR - VNM - VUT - WLF - WSM - YEM - ZAF - ZMB - ZWE - UNKNOWN Value: required: - currency - value type: object description: Currency and numeric value. properties: currency: type: string description: iso 4217 3 character currency code accepted. Recommended to use EUR where possible enum: - AED - AFN - ALL - AMD - ANG - AOA - ARS - AUD - AWG - AZN - BAM - BBD - BDT - BGN - BHD - BIF - BMD - BND - BOB - BOV - BRL - BSD - BTN - BWP - BYR - BZD - CAD - CDF - CHE - CHF - CHW - CLF - CLP - CNY - COP - COU - CRC - CUC - CUP - CVE - CZK - DJF - DKK - DOP - DZD - EGP - ERN - ETB - EUR - FJD - FKP - GBP - GEL - GHS - GIP - GMD - GNF - GTQ - GYD - HKD - HNL - HRK - HTG - HUF - IDR - ILS - INR - IQD - IRR - ISK - JMD - JOD - JPY - KES - KGS - KHR - KMF - KPW - KRW - KWD - KYD - KZT - LAK - LBP - LKR - LRD - LSL - LTL - LVL - LYD - MAD - MDL - MGA - MKD - MMK - MNT - MOP - MRO - MUR - MVR - MWK - MXN - MXV - MYR - MZN - NAD - NGN - NIO - NOK - NPR - NZD - OMR - PAB - PEN - PGK - PHP - PKR - PLN - PYG - QAR - RON - RSD - RUB - RWF - SAR - SBD - SCR - SDG - SEK - SGD - SHP - SLL - SOS - SRD - SSP - STD - SYP - SZL - THB - TJS - TMT - TND - TOP - TRY - TTD - TWD - TZS - UAH - UGX - USD - USN - USS - UYI - UYU - UZS - VEF - VND - VUV - WST - XAF - XAG - XAU - XBA - XBB - XBC - XBD - XCD - XDR - XFU - XOF - XPD - XPF - XPT - XXX - YER - ZAR - ZMW - UNKNOWN value: type: number description: Numeric value maximum: 100000 exclusiveMaximum: false minimum: 0 exclusiveMinimum: false Weight: required: - uom - value type: object properties: uom: type: string description: metric unit for weight example: g enum: - g - kg value: maximum: 31500 exclusiveMaximum: false minimum: 0 exclusiveMinimum: false type: number example: 500 description: Weight of item or shipment. Both uom and value are required. examples: DHLPaket: summary: DHL Paket (V01PAK) description: Order example for DHL Paket (V01PAK) value: profile: STANDARD_GRUPPENPROFIL shipments: - product: V01PAK billingNumber: "33333333330102" refNo: Order No. 1234 shipper: name1: My Online Shop GmbH addressStreet: Sträßchensweg 10 postalCode: "53113" city: Bonn country: DEU email: max@mustermann.de phone: +49 123456789 consignee: name1: Maria Musterfrau addressStreet: Kurt-Schumacher-Str. 20 postalCode: "53113" city: Bonn country: DEU email: maria@musterfrau.de phone: +49 987654321 details: dim: uom: mm height: 100 length: 200 width: 150 weight: uom: g value: 500 DHLPaketInternational: summary: DHL Paket International (V53WPAK) description: Order example for DHL Paket International (V53WPAK) value: profile: STANDARD_GRUPPENPROFIL shipments: - product: V53WPAK billingNumber: "33333333335301" refNo: Order No. 1234 shipper: name1: My Online Shop GmbH addressStreet: Sträßchensweg 10 postalCode: "53113" city: Bonn country: DEU email: max@mustermann.de phone: +49 123456789 consignee: name1: Jan Vermeer addressStreet: Museumstraat addressHouse: "1" additionalAddressInformation1: 2. Floor postalCode: "1071 AA" city: Amsterdam country: NLD email: jan@vermeer.com phone: +31 888888888 details: dim: uom: mm height: 100 length: 200 width: 150 weight: uom: g value: 500 DHLPaketInternationalWithCustoms: summary: DHL Paket International (V53WPAK) with customs description: Order example for DHL Paket International (V53WPAK) with customs value: profile: STANDARD_GRUPPENPROFIL shipments: - product: V53WPAK billingNumber: "33333333335301" refNo: Order No. 1234 shipper: name1: My Online Shop GmbH addressStreet: Sträßchensweg 10 postalCode: "53113" city: Bonn country: DEU email: max@mustermann.de phone: +49 123456789 consignee: name1: Joe Black addressStreet: 10 Downing Street additionalAddressInformation1: 2. Floor postalCode: "SW1A 1AA" city: London country: GBR email: joe@black.uk phone: +44 123456789 details: dim: uom: mm height: 100 length: 200 width: 150 weight: uom: g value: 500 customs: exportType: COMMERCIAL_GOODS postalCharges: currency: EUR value: 1 items: - itemDescription: Red T-Shirt packagedQuantity: 1 hsCode: "123456" countryOfOrigin: FRA itemValue: currency: EUR value: 10 itemWeight: uom: g value: 400 services: endorsement: RETURN DHLKleinpaket: summary: DHL Kleinpaket (V62KP) description: Order example for DHL Kleinpaket (V62KP) value: profile: STANDARD_GRUPPENPROFIL shipments: - product: V62KP billingNumber: "33333333336201" refNo: Order No. 1234 shipper: name1: My Online Shop GmbH addressStreet: Sträßchensweg 10 postalCode: '53113' city: Bonn country: DEU email: max@mustermann.de phone: +49 123456789 consignee: name1: Maria Musterfrau addressStreet: Kurt-Schumacher-Str. 20 postalCode: "53113" city: Bonn country: DEU email: maria@musterfrau.de phone: +49 987654321 details: dim: uom: cm height: 1 length: 10 width: 15 weight: uom: g value: 500 WarenpostInternationalWithCustoms: summary: Warenpost International (V66WPI) with customs description: Order example for Warenpost International (V66WPI) with customs value: profile: STANDARD_GRUPPENPROFIL shipments: - product: V66WPI billingNumber: "33333333336601" refNo: Order No. 1234 shipper: name1: My Online Shop GmbH addressStreet: Sträßchensweg 10 postalCode: "53113" city: Bonn country: DEU email: max@mustermann.de phone: "+49 123456789" consignee: name1: Joe Black addressStreet: 42 Street additionalAddressInformation1: 2. Floor postalCode: SW1A 1AA city: London country: GBR email: joe@black.uk phone: +44 123456789 details: dim: uom: cm height: 1 length: 10 width: 15 weight: uom: g value: 500 customs: exportType: PRESENT postalCharges: currency: EUR value: 1 items: - itemDescription: Item 1 packagedQuantity: 1 hsCode: 123456 countryOfOrigin: FRA itemValue: currency: EUR value: 10 itemWeight: uom: g value: 300 services: endorsement: RETURN securitySchemes: BasicAuth: type: http scheme: basic description: Credentials provided here are username and password of the partner system. ApiKey: type: apiKey description: API key to authorize requests. API key can be obtained at [DHL's development portal](https://developer.dhl.com). name: dhl-api-key in: header OAuth2: type: oauth2 description: See https://developer.dhl.com/api-reference/authentication-api-post-parcel-germany. For the POST call to get a token, provide all parameters in the request body. Refer to the above link for details, or to the RFC describing OAuth2 Password Grant. After having obtained the access token, use this as Bearer token in the HTTP authorization header. flows: password: tokenUrl: /parcel/de/account/auth/ropc/v1/token scopes: {} responses: BadRequest: description: Bad Request content: application/problem+json: schema: $ref: '#/components/schemas/LabelDataResponse' Unauthorized: description: Unauthorized content: application/problem+json: schema: $ref: '#/components/schemas/RequestStatus' NotFound: description: Not Found content: application/problem+json: schema: $ref: '#/components/schemas/RequestStatus' TooManyRequests: description: Too Many Requests content: application/problem+json: schema: $ref: '#/components/schemas/RequestStatus' InternalServerError: description: Internal Server Error content: application/problem+json: schema: $ref: '#/components/schemas/RequestStatus' security: - ApiKey: [] - BasicAuth: [] - OAuth2: []