openapi: 3.2.0
info:
title: XPress Quote API
description: Request quotes based on agreed tariff rates and view the different service options.
version: v2
servers:
- url: https://api.dsv.com/xp/comparator/v2
security:
- apiKeyHeader: []
- apiKeyQuery: []
tags:
- name: Quote
paths:
/compare:
post:
tags:
- Quote
summary: Rate & Service request
description: Request quotes based on agreed tariff rates and obtain estimated times of arrival.
operationId: compareServiceAndRates
parameters:
- name: dsv-service-auth
in: header
description: DSV XPress service auth for the selected API (found on DSV XPress API profile page)
required: true
schema:
type: string
- name: x-pat
in: header
description: DSV XPress personal access token (found on DSV XPress API profile page)
required: true
schema:
type: string
requestBody:
description: Service comparator request object
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceComparatorRequest'
example:
dsvAccount: 6400000000
pickupCountryCode: DK
pickupCity: Copenhagen
deliveryCountryCode: DE
deliveryCity: Munchen
serviceOptions:
packageType: PARCELS
saturdayDelivery: false
insurance:
currencyCode: DKK
monetaryValue: 2000
dimensionUnit: CM
weightUnit: KG
residentialDelivery: false
ddp: false
specialContent: DRY_ICE
packages:
- length: 20
width: 30
height: 30
grossWeight: 6.5
collectDate: '2000-09-25'
responses:
'200':
description: successful operation. Return the list of available services and their rates.
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceComparatorResponse'
example:
services:
- serviceCode: DSVAirExpress
serviceDescription: DSV XPress
etaMin: '2020-04-17'
etaMax: '2020-04-19'
rates:
currency: EUR
freight: 42.8
fuel: 6.8
total: 52.6
priceBreakdown:
- code: '24'
description: Courrier shipment
monetaryValue: 42.8
- code: '1'
description: Fuel surcharge
monetaryValue: 6.8
- code: '30'
description: Insurance
monetaryValue: 3
otherSurcharges:
- code: '10'
description: Proof of Delivery
monetaryValue: 3.4
- code: '11'
description: Additional Handling Charge
monetaryValue: 9
- code: '117'
description: DSV Protect
monetaryValue: 3
- code: '2'
description: DDP (Duty/Taxes Paid )
monetaryValue: 25
- code: '29'
description: Disbursement Fee
monetaryValue: 20
- code: '3'
description: Dangerous Goods
monetaryValue: 70
- code: '7'
description: Remote Area Delivery
monetaryValue: 25
- code: '8'
description: Address Correction
monetaryValue: 12
- code: '9'
description: Residential Delivery Service
monetaryValue: 2.9
'400':
description: Bad Request
'401':
description: Unauthorized
components:
schemas:
CurrencyMonetaryType:
required:
- currencyCode
- monetaryValue
type: object
properties:
currencyCode:
$ref: '#/components/schemas/CurrencyCodeList'
monetaryValue:
minimum: 0.0
type: number
description: Monetary value
format: double
example: 250
CountryCodeList:
maxLength: 2
type: string
description: ISO_3166_1 Country Code
example: DK
ServiceOptions:
required:
- packageType
type: object
properties:
timeOption:
maxLength: 80
type: string
description: Delivery Time Option, could be 9AM, 1030AM or 12PM
saturdayDelivery:
type: boolean
description: Saturday delivery. `false` by default. If `true`, saturday delivery is requested.
default: false
packageType:
$ref: '#/components/schemas/PackageType'
insurance:
$ref: '#/components/schemas/CurrencyMonetaryType'
description: Container for shipment service options
example:
timeOption: 9AM
saturdayDelivery: false
packageType: PARCELS
insurance:
currencyCode: DKK
monetaryValue: 2000
PackageType:
enum:
- PARCELS
- DOCUMENT
- ENVELOPE
type: string
description: Package type. Could be PARCELS / DOCUMENT / ENVELOPE. PARCELS by default.
default: PARCELS
ServiceComparatorResponse:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/ErrorItem'
warnings:
type: array
items:
$ref: '#/components/schemas/ErrorItem'
services:
type: array
items:
$ref: '#/components/schemas/ServiceRates'
description: Container for DSV service and rates information response
example:
services:
- serviceCode: DSVAirExpress
serviceDescription: DSV XPress
etaMin: '2020-04-17'
etaMax: '2020-04-19'
rates:
currency: EUR
freight: 42.8
fuel: 6.8
total: 52.6
priceBreakdown:
- code: '24'
description: Courrier shipment
monetaryValue: 42.8
- code: '1'
description: Fuel surcharge
monetaryValue: 6.8
- code: '30'
description: Insurance
monetaryValue: 3
otherSurcharges:
- code: '10'
description: Proof of Delivery
monetaryValue: 3.4
- code: '11'
description: Additional Handling Charge
monetaryValue: 9
- code: '117'
description: DSV Protect
monetaryValue: 3
- code: '2'
description: DDP (Duty/Taxes Paid )
monetaryValue: 25
- code: '29'
description: Disbursement Fee
monetaryValue: 20
- code: '3'
description: Dangerous Goods
monetaryValue: 70
- code: '7'
description: Remote Area Delivery
monetaryValue: 25
- code: '8'
description: Address Correction
monetaryValue: 12
- code: '9'
description: Residential Delivery Service
monetaryValue: 2.9
ErrorItem:
type: object
properties:
message:
type: string
details:
type: string
PackageDetail:
required:
- grossWeight
type: object
properties:
length:
minimum: 0.0
type: number
description: Package length. Length must be the longest dimension of the container.
format: double
default: 0
width:
minimum: 0.0
type: number
description: Package width.
format: double
default: 0
height:
minimum: 0.0
type: number
description: Package height.
format: double
default: 0
grossWeight:
minimum: 0.0
type: number
description: Package gross weight
format: double
example: 6.5
description: Container for package
example:
length: 20
width: 30
height: 30
grossWeight: 8.5
Rates:
type: object
properties:
currency:
$ref: '#/components/schemas/CurrencyCodeList'
freight:
maximum: 9999999.99
minimum: 0.0
type: number
description: Freight value amount. Amount is expressed exclusive tax.
format: double
example: 250
fuel:
maximum: 9999999.99
minimum: 0.0
type: number
description: Fuel value amount. Amount is expressed exclusive tax.
format: double
example: 10
total:
maximum: 9999999.99
minimum: 0.0
type: number
description: Total of priceBreakdown value amounts. Amount is expressed exclusive tax. Calculated based on data provided in request.
format: double
example: 260
priceBreakdown:
type: array
items:
$ref: '#/components/schemas/ServiceCharge'
otherSurcharges:
type: array
items:
$ref: '#/components/schemas/ServiceCharge'
description: Container for service rates and options
example:
currency: EUR
priceBreakdown:
- code: '24'
description: Courrier shipment
monetaryValue: 42.8
- code: '1'
description: Fuel surcharge
monetaryValue: 6.8
- code: '30'
description: Insurance
monetaryValue: 3
otherSurcharges:
- code: '10'
description: Proof of Delivery
monetaryValue: 3.4
- code: '11'
description: Additional Handling Charge
monetaryValue: 9
- code: '117'
description: DSV Protect
monetaryValue: 3
- code: '2'
description: DDP (Duty/Taxes Paid )
monetaryValue: 25
- code: '29'
description: Disbursement Fee
monetaryValue: 20
- code: '3'
description: Dangerous Goods
monetaryValue: 70
- code: '7'
description: Remote Area Delivery
monetaryValue: 25
- code: '8'
description: Address Correction
monetaryValue: 12
- code: '9'
description: Residential Delivery Service
monetaryValue: 2.9
ServiceComparatorRequest:
required:
- dsvAccount
- pickupCountryCode
- deliveryCountryCode
- serviceOptions
- packages
type: object
properties:
dsvAccount:
type: integer
description: Shipper's DSV account number. The account must be a valid DSV account number that is active.
format: int64
pickupCountryCode:
$ref: '#/components/schemas/CountryCodeList'
pickupZipCode:
type: string
description: Pickup Address Zip Code
pickupCity:
maxLength: 80
type: string
description: Pickup Address City
deliveryCountryCode:
$ref: '#/components/schemas/CountryCodeList'
deliveryZipCode:
type: string
description: Delivery Address Zip Code
deliveryCity:
maxLength: 80
type: string
description: Delivery Address City
residentialDelivery:
type: boolean
description: Flag to identify if this delivery address is residential. Default is false
serviceOptions:
$ref: '#/components/schemas/ServiceOptions'
ddp:
type: boolean
description: 'Delivered Duty Paid
A shipment is considered DDP when :
* For EXPORT Shipment, the Duties and taxes are paid by the `SENDER` or a `THIRD_PARTY`
* For IMPORT Shipment, the Duties and taxes are paid by a `THIRD_PARTY`
'
specialContent:
maxLength: 20
type: string
description: "Type of regulated good. Supported codes:\n * `ADR` - Transport of dangerous goods by road\n * `ADR_LQ` - Transport of dangerous goods by road in limited quantities\n * `DGR` - Transport of dangerous goods by Air (IATA regulations)\n * `LITHIUM` - Transport of goods consisting of or containing Lithium Batteries\n * `EXQ` - Transport of dangerous goods in Excepted Quantities\n * `DRY_ICE` - Transport of cargo containing Dry Ice\n"
dimensionUnit:
maxLength: 2
type: string
description: Unit of measurement for dimensions. Could be CM - centimeter or IN - inch. Default is CM.
default: CM
weightUnit:
type: string
description: Weight unit of measurement. Could be KG - Kilogram or LBS - Pound. Default is KG.
default: KG
packages:
maxItems: 100
minItems: 1
type: array
items:
$ref: '#/components/schemas/PackageDetail'
description: Packages information. For Envelope shipment only one package is allowed.
collectDate:
type: string
description: 'Collect Date. Not mandatory, the default value is today.
Expected date format : yyyy-MM-dd.
. please note the date can be in future but not in past.'
format: date
description: Container for Shipment
example:
dsvAccount: 6400000000
pickupCountryCode: DK
pickupCity: Copenhagen
deliveryCountryCode: DE
deliveryCity: Munchen
serviceOptions:
packageType: PARCELS
saturdayDelivery: false
insurance:
currencyCode: DKK
monetaryValue: 2000
dimensionUnit: CM
weightUnit: KG
residentialDelivery: false
ddp: false
specialContent: DRY_ICE
packages:
- length: 20
width: 30
height: 30
grossWeight: 6.5
collectDate: '2000-09-25'
CurrencyCodeList:
maxLength: 3
type: string
description: "Currency Code supported (EUR by default if not provided):\n * CAD - Canadian Dollar\n * CNY - Yuan Renminbi\n * DKK - Danish Krone\n * EUR - Euro\n * GBP - British Pound\n * HKD - Hong Kong Dollar\n * NOK - Norwegian Krone\n * SEK - Swedish krona\n * SGD - Singapore Dollar\n * USD - Dollar\n * ZAR - Rand\n"
default: EUR
example: EUR
ServiceCharge:
type: object
properties:
code:
type: string
description: Charge code
example: '30'
description:
type: string
description: Charge description
example: Insurance
monetaryValue:
maximum: 9999999.99
minimum: 0.0
type: number
description: Charge value amount. Amount is expressed exclusive tax.
format: double
example: 16
example:
code: '10'
description: Proof of Delivery
monetaryValue: 3.4
ServiceRates:
type: object
properties:
serviceCode:
type: string
description: DSV service code
example: DSVAirExpress
serviceDescription:
type: string
description: DSV service description
example: DSV XPress
etaMin:
type: string
description: Estimated Minimum Arrival Date
format: date
etaMax:
type: string
description: Estimated Maximum Arrival Date
format: date
rates:
$ref: '#/components/schemas/Rates'
description: Container for DSV service and rates information
securitySchemes:
apiKeyHeader:
type: apiKey
name: DSV-Subscription-Key
in: header
apiKeyQuery:
type: apiKey
name: DSV-Subscription-Key
in: query