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: []