openapi: 3.2.0
info:
description: API definition of the Orders API. Includes Order Management, Tracking Pull, and Proof of Delivery.
title: Manage orders API
version: '3.1'
servers:
- url: https://api.paack.app
description: Production environment
- url: https://api.staging.paack.app
description: Staging environment
security:
- api_key: []
tags:
- name: Manage orders
paths:
/public/v3/orders:
post:
description: 'Creates an order for Paack. One POST request creates one order.
Optionally, use the query parameters to get a base64-encoded label in the response.'
operationId: orders
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AddOrderRequest'
example:
external_id: 24cfcc85-b288-404d-8bbd-e0d32eac2990
customer:
first_name: Martín
last_name: Fierro
email: martin.fierro@example.es
phone: '+34397341804'
has_gdpr_consent: true
delivery_address:
city: Barcelona
country: ES
line1: Via Augusta 17, Principal
post_code: 08006
expected_delivery_ts:
start:
date: '2022-10-28'
time: 08:00:00
end:
date: '2022-10-28'
time: '10:00:00'
delivery_instructions: Leave at the door
delivery_type: direct
service_type: CFA
parcels:
- barcode: 0347248734534534545364351
height: 3.45
length: 4.35
width: 3.45
weight: 3.45
order_details:
- name: sale_number
type: string
value: g_328294984981
clusters:
- 3e8b9bdf-d1a1-4e6c-a3af-76ba29ct9bcc
pick_up_address:
city: Barcelona
country: ES
line1: Avinguda Diagonal 1234
post_code: 08021
expected_pick_up_ts:
start:
date: '2022-10-28'
time: '16:00:00'
end:
date: '2022-10-28'
time: '18:00:00'
pick_up_instructions: Check opening hours
cod_value: 25
cod_currency: EUR
undeliverable_instructions: Open parcel
parameters:
- description: Defines the label to return in the response. Must be used along with the `labelFormat` query parameter.
in: query
name: include
schema:
type: string
enum:
- label
default: label
- description: Defines the label format. Must be used along with the `include` query parameter.
in: query
name: labelFormat
required: false
schema:
type: string
enum:
- pdf
- zpl
default: pdf
- description: Returns a 201 if the external ID already exists.
in: query
name: idempotent
required: false
schema:
type: boolean
default: true
responses:
'201':
$ref: '#/components/responses/CreateOrderResponse201'
'400':
$ref: '#/components/responses/CreateOrderResponse400'
'401':
$ref: '#/components/responses/Auth401'
'403':
$ref: '#/components/responses/Auth403'
'500':
$ref: '#/components/responses/CreateOrderResponse500'
tags:
- Manage orders
summary: Orders
x-summary-source: derived
/public/v3/orders/{external_id}:
get:
description: 'Retrieves order data. One GET request retrieves one order. The path parameter specifies the order to retrieve. The 200 response returns information persisted for the order from the POST and PUT requests.
Optionally, use the query parameters to get a base64-encoded label in the response.'
operationId: orders-get
parameters:
- description: Defines the order to retrieve information for.
in: path
name: external_id
required: true
schema:
$ref: '#/components/schemas/ExternalIdOrder'
- description: Defines the label to return in the response. Must be used along with the `labelFormat` query parameter.
in: query
name: include
schema:
type: string
enum:
- label
default: label
- description: Defines the label format. Must be used along with the `include` query parameter.
in: query
name: labelFormat
required: false
schema:
type: string
enum:
- pdf
- zpl
default: pdf
responses:
'200':
$ref: '#/components/responses/RetrieveOrderResponse200'
'400':
$ref: '#/components/responses/RetrieveOrderResponse400'
'401':
$ref: '#/components/responses/Auth401'
'403':
$ref: '#/components/responses/Auth403'
'404':
$ref: '#/components/responses/OrderResponse404'
'500':
$ref: '#/components/responses/CreateOrderResponse500'
tags:
- Manage orders
summary: Orders get
x-summary-source: derived
put:
description: 'Updates the order of the `external_id` specified in the path parameter.
Note that you can update only some fields from the create (POST) request. You cannot update `external_id`, `cod_value`, `cod_currency`, `delivery_type`, `service_type`, `customer.has_gdpr_consent`, `order_details["sale_number"]`, `delivery_instructions`, and `pick_up_instructions`. There is no validation performed if you try to update those fields.
In case you need to update the pickup address, cancel the order and use a different external ID to create an order with the correct pickup address.'
operationId: orders-put
parameters:
- description: '`external_id` with which the order was created.'
in: path
name: external_id
required: true
schema:
$ref: '#/components/schemas/ExternalIdOrder'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateOrderRequest'
example:
customer:
first_name: Martín
last_name: Fierro
email: martin.fierro@example.es
delivery_address:
city: Barcelona
country: ES
line1: Via Augusta 17, Principal
post_code: 08006
expected_delivery_ts:
start:
date: '2023-12-28'
time: 08:00:00
end:
date: '2023-12-28'
time: '10:00:00'
parcels:
- barcode: 0347248734534534545364351
height: 3.45
length: 4.35
width: 3.45
weight: 5.02
expected_pick_up_ts:
start:
date: '2023-01-01'
time: '16:00:00'
end:
date: '2023-01-01'
time: '18:00:00'
clusters:
- 3e8b9bdf-d1a1-4e6c-a3af-76ba29ct9bcc
description: Updates the order of the specified `external_id`.
responses:
'201':
$ref: '#/components/responses/UpdateOrderResponse201'
'400':
$ref: '#/components/responses/CreateOrderResponse400'
'401':
$ref: '#/components/responses/Auth401'
'403':
$ref: '#/components/responses/Auth403'
'404':
$ref: '#/components/responses/OrderResponse404'
'500':
$ref: '#/components/responses/CreateOrderResponse500'
tags:
- Manage orders
summary: Orders put
x-summary-source: derived
delete:
description: 'Updates the status of the order to cancelled. One DELETE request cancels one order. The path parameter specifies the order to cancel. The 201 response containing the external ID confirms the action.
An `external_id` identifying a canceled order cannot be reused to create another order.'
operationId: orders-delete
parameters:
- in: path
name: external_id
required: true
schema:
$ref: '#/components/schemas/ExternalIdOrder'
responses:
'201':
$ref: '#/components/responses/UpdateOrderResponse201'
'400':
$ref: '#/components/responses/CreateOrderResponse400'
'401':
$ref: '#/components/responses/Auth401'
'403':
$ref: '#/components/responses/Auth403'
'404':
$ref: '#/components/responses/OrderResponse404'
'500':
$ref: '#/components/responses/CreateOrderResponse500'
tags:
- Manage orders
summary: Orders delete
x-summary-source: derived
components:
schemas:
NotPersisted:
description: ':construction: Currently input for this information is not persisted by Paack so it cannot be retrieved through the GET method.'
type: 'null'
ErrorId:
description: Response identifier you can refer us to in case of problems.
type: string
format: uuid
RequestAddress:
allOf:
- $ref: '#/components/schemas/Address'
- properties:
line2:
$ref: '#/components/schemas/Line2'
type: object
Country:
description: Country in ISO 3166 alpha 2 format.
enum:
- ES
- FR
- GB
- IT
- PT
type: string
City:
description: City.
type: string
minLength: 2
maxLength: 128
DeliveryType:
description: Type of the delivery. Learn more [here](./reverse-logistcs).
type: string
enum:
- direct
- reverse
Response404ErrorObject:
properties:
id:
$ref: '#/components/schemas/ErrorId'
status:
description: HTTP response code.
type: string
enum:
- '404'
source:
$ref: '#/components/schemas/Source'
code:
description: Error code.
type: string
enum:
- ORD007
detail:
description: Error message.
type: string
enum:
- Order does not exist.
type: object
AddOrderRequestParcelsElem:
properties:
barcode:
description: Barcode of the parcel.
type: string
maxLength: 128
height:
description: Height of the parcel in cm.
format: double
type: number
minimum: 0
maximum: 120
length:
description: Length of the parcel in cm.
format: double
type: number
minimum: 0
maximum: 120
width:
description: Width of the parcel in cm.
format: double
type: number
minimum: 0
maximum: 120
weight:
description: Actual weight of the parcel in kg.
format: double
type: number
minimum: 0
maximum: 32
type:
$ref: '#/components/schemas/ParcelsElemType'
parcel_details:
$ref: '#/components/schemas/NotPersisted'
required:
- barcode
type: object
Currency:
description: Currency code in ISO 4217 format.
enum:
- EUR
- GBP
type: string
Line1:
description: Primary address.
type: string
maxLength: 128
FirstName:
description: Customer's first or full name. If the `last_name` value is not specified, the full name is split and persisted in both fields.
type: string
maxLength: 128
ResponseRetrieveErrorObject:
properties:
id:
$ref: '#/components/schemas/ErrorId'
status:
description: HTTP response code.
type: string
enum:
- '400'
source:
$ref: '#/components/schemas/Source'
detail:
description: Error message.
type: string
enum:
- Retailer order number not valid
type: object
Cluster:
type: array
items:
type: string
description: ':construction: Identifiers that associate orders with each other. Learn more [here](./reverse-logistics). Note that, as of now, the array cannot be retrieved through a GET request.'
Email:
description: Customer's email address.
type: string
minLength: 6
maxLength: 128
AddOrderRequest:
properties:
external_id:
$ref: '#/components/schemas/ExternalIdOrder'
customer:
$ref: '#/components/schemas/CreateCustomer'
delivery_address:
allOf:
- description: Delivery address.
- $ref: '#/components/schemas/RequestAddress'
expected_delivery_ts:
allOf:
- description: Expected date & time of the delivery.
- $ref: '#/components/schemas/WindowObject'
delivery_instructions:
$ref: '#/components/schemas/DeliveryInstructions'
delivery_type:
$ref: '#/components/schemas/DeliveryType'
service_type:
$ref: '#/components/schemas/ServiceType'
parcels:
description: Parcels included in the order. As for barcodes, generate them in the same way for both direct and reverse orders so you can use them for tracking.
items:
$ref: '#/components/schemas/AddOrderRequestParcelsElem'
type: array
order_details:
$ref: '#/components/schemas/OrderDetails'
pick_up_address:
allOf:
- description: Pickup address. In case of reverse orders, this is the customer's address where the Paack driver should collect the parcels.
- $ref: '#/components/schemas/RequestAddress'
❗expected_pick_up_ts:
allOf:
- description: Expected date & time of the pickup. Not required for direct orders but is necessary for reverse and exchange orders. In the case of reverse orders, this is when the Paack driver should collect the parcels. Note that this field must contain the *same value* as the field `expected_delivery_ts` in an exchange scenario.
- $ref: '#/components/schemas/WindowObject'
pick_up_instructions:
description: Instructions for the pickup.
type: string
cod_value:
$ref: '#/components/schemas/CodValue'
cod_currency:
$ref: '#/components/schemas/Currency'
clusters:
$ref: '#/components/schemas/Cluster'
undeliverable_address:
$ref: '#/components/schemas/UndeliverableAddressNotPersisted'
undeliverable_instructions:
$ref: '#/components/schemas/UndeliverableInstructions'
insured_value:
$ref: '#/components/schemas/NotPersisted'
insured_currency:
$ref: '#/components/schemas/NotPersisted'
required:
- customer
- delivery_address
- expected_delivery_ts
- external_id
- service_type
- pick_up_address
type: object
UpdateOrderRequest:
description: Defines the request to update the specified order.
properties:
customer:
$ref: '#/components/schemas/UpdateCustomer'
delivery_address:
allOf:
- description: Delivery address.
- $ref: '#/components/schemas/RequestAddress'
expected_delivery_ts:
$ref: '#/components/schemas/WindowObject'
parcels:
allOf:
- description: Parcels included in the order. If you don't want to update the parcels, keep the array null or empty. If you want to update, add, or remove parcels, define them all one per object as this array overwrites whatever was persisted for the parcels before the update.
- items:
$ref: '#/components/schemas/AddOrderRequestParcelsElem'
type: array
expected_pick_up_ts:
$ref: '#/components/schemas/WindowObject'
clusters:
$ref: '#/components/schemas/Cluster'
required:
- customer
- delivery_address
- expected_delivery_ts
type: object
PickupAddress:
description: Pickup address.
properties:
city:
$ref: '#/components/schemas/City'
country:
$ref: '#/components/schemas/Country'
line1:
$ref: '#/components/schemas/Line1Line2'
post_code:
$ref: '#/components/schemas/Postcode'
required:
- city
- country
- line1
- post_code
type: object
ServiceType:
description: Code that identifies the delivery day type, timeslot type, and available slot length. Learn more [here](./service-types).
type: string
enum:
- ST2
- ST4
- STZ
- SF2
- SF4
- SFZ
- NT2
- NT4
- NTH
- NTZ
- NF2
- NF4
- NFA
- XF4
- NFZ
- PT2
- PT4
- PTH
- PTA
- PTZ
- PF2
- PF4
- PFA
- PFZ
- CT2
- CT4
- CTH
- CTZ
- XFZ
- CF2
- CF4
- CFA
- CFZ
- WT2
- WT4
- WTH
- WTZ
- WF2
- WF4
- WFA
- WFZ
- XTZ
- XF2
- ST3
- DDD
- ND
- SD
- UNK
- RFA
- RT2
- RT4
Status:
description: Status of the order. `draft` if just created. Corresponds to the `order_status` field in the [webhook output](./webhook-output).
type: string
enum:
- return_in_progress
- cancelled
- undelivered
- delivered
- reached_delivered
- picked_up
- pending
- draft
- reached_picked_up
- on_course
Line1Line2:
description: Primary and additional address information. Persists merged input from fields `line1` and `line2`.
type: string
maxLength: 128
DeliveryAddress:
description: Delivery address.
properties:
city:
$ref: '#/components/schemas/City'
country:
$ref: '#/components/schemas/Country'
line1:
$ref: '#/components/schemas/Line1Line2'
post_code:
$ref: '#/components/schemas/Postcode'
required:
- city
- country
- line1
- post_code
type: object
ExternalIdOrder:
description: 'Order''s ID assigned by the retailer; unique within all the retailer''s orders manifested to Paack.
Can include special characters, excluding a comma, though for further use you need to [encode them](./special-characters).
`external_id` equals `tracking_id`.'
maxLength: 128
type: string
NullField:
description: 'null'
type: 'null'
CodValue:
description: Amount of cash on delivery. Not persisted if the value equals 0.
format: double
minimum: 0
type: number
Postcode:
description: Postcode.
type: string
minLength: 3
maxLength: 128
DeliveryInstructions:
description: Instructions for the delivery.
type: string
maxLength: 128
LastName:
description: Customer's last name. If not specified in the input, the last part of the first name is persisted in this field.
type: string
maxLength: 128
Label:
description: base64-encoded label.
type: string
Time:
description: UTC time in `hh:mm:ss` format.
maxLength: 8
minLength: 8
type: string
format: time
Phone:
description: Customer's phone number with the country prefix.
type: string
minLength: 1
maxLength: 128
OrderDetails:
description: 'Properties describing the order. :construction: Currently only the string property `sale_number`, assigning the order a custom identifier, is persisted by Paack and can be retrieved through the GET method.'
items:
$ref: '#/components/schemas/AddCustomPropertiesString'
type: array
maxItems: 1
RetrieveOrderResponseSuccessParcelsElem:
allOf:
- $ref: '#/components/schemas/AddOrderRequestParcelsElem'
- properties:
volumetric_weight:
description: Calculated as (height x width x length) / 1000.
format: double
type: number
type: object
Source:
description: Endpoint that triggered the response.
type: string
UpdateCustomer:
allOf:
- $ref: '#/components/schemas/Customer'
- properties:
phone:
allOf:
- description: Customer's phone number without the country prefix. Note that the country prefix is persisted from the request that created the order and cannot be updated.
- $ref: '#/components/schemas/Phone'
type: object
ResponseCreateError500Object:
properties:
id:
$ref: '#/components/schemas/ErrorId'
status:
description: HTTP response code.
type: string
enum:
- '500'
source:
$ref: '#/components/schemas/Source'
code:
description: Error code.
type: string
enum:
- IE-0001
- UE-0001
detail:
description: Fixed name.
type: internal error
type: object
WindowDatetime:
description: UTC time defined by the properties `date` and `time`.
properties:
date:
$ref: '#/components/schemas/Date'
time:
$ref: '#/components/schemas/Time'
required:
- date
- time
type: object
HasGdprConsent:
description: Whether the customer gave their GDPR consent.
type: boolean
RetrieveCustomer:
allOf:
- properties:
address:
$ref: '#/components/schemas/DeliveryAddress'
type: object
- $ref: '#/components/schemas/Customer'
CreateCustomer:
allOf:
- $ref: '#/components/schemas/Customer'
- properties:
phone:
$ref: '#/components/schemas/Phone'
has_gdpr_consent:
$ref: '#/components/schemas/HasGdprConsent'
address:
$ref: '#/components/schemas/CustomerAddressNotPersisted'
external_id:
$ref: '#/components/schemas/NotPersisted'
language:
$ref: '#/components/schemas/NotPersisted'
type: object
CustomerAddressNotPersisted:
description: ':construction: Currently input for this information is not persisted by Paack. Value equals the delivery address when retrieved through the GET method.'
type: 'null'
Address:
properties:
city:
$ref: '#/components/schemas/City'
country:
$ref: '#/components/schemas/Country'
line1:
$ref: '#/components/schemas/Line1'
post_code:
$ref: '#/components/schemas/Postcode'
required:
- city
- country
- line1
- post_code
type: object
ResponseForbiddenErrorObject:
properties:
id:
$ref: '#/components/schemas/ErrorId'
status:
description: HTTP response code.
type: string
enum:
- '403'
source:
$ref: '#/components/schemas/Source'
code:
description: Error code.
type: string
enum:
- ACC007
detail:
description: Error message.
type: string
type: object
UndeliverableAddressNotPersisted:
description: ':construction: Currently input for this information is not persisted by Paack. Value equals the pickup address when retrieved through the GET method.'
type: 'null'
AddCustomPropertiesString:
properties:
name:
description: Name of the property.
default: sale_number
type: string
type:
description: Type of the property.
enum:
- string
- array
- boolean
- 'null'
- number
- object
default: string
type: string
value:
description: Value of the property.
type: string
maxLength: 30
required:
- name
- type
- value
type: object
Line2:
description: Additional address information.
type: string
maxLength: 128
ParcelsElemType:
description: ':construction: Currently input for this information is not persisted by Paack. Value equals `standard` when retrieved through the GET method.'
type: string
default: standard
enum:
- standard
WindowObject:
description: Timeslot defined by the objects `start` and `end`.
properties:
start:
$ref: '#/components/schemas/WindowDatetime'
end:
$ref: '#/components/schemas/WindowDatetime'
required:
- start
- end
type: object
Date:
description: Date in `YYYY-MM-DD` format.
maxLength: 10
minLength: 10
type: string
format: date
UndeliverableInstructions:
description: ':construction: Currently input for this information is not persisted by Paack. Value equals the pickup instructions when retrieved through the GET method.'
type: 'null'
ResponseCreateErrorObject:
properties:
status:
description: HTTP response code.
type: string
enum:
- '400'
source:
$ref: '#/components/schemas/Source'
code:
description: Error code.
type: string
enum:
- ORD000
- ORD001
- ORD002
- ORD003
- ORD004
- ORD005
- ORD006
- ORD008
- ORD100
- ORD101
- ORD102
- ORD103
- ORD104
- ORD105
- ORD106
- ORD107
- ORD108
detail:
description: Error message.
type: string
type: object
ResponseAuthErrorObject:
properties:
id:
$ref: '#/components/schemas/ErrorId'
status:
description: HTTP response code.
type: string
enum:
- '401'
source:
$ref: '#/components/schemas/Source'
code:
description: Error code.
type: string
enum:
- ACC009
detail:
description: Error message.
type: string
type: object
Customer:
description: Information on the person receiving the parcels.
properties:
first_name:
$ref: '#/components/schemas/FirstName'
last_name:
$ref: '#/components/schemas/LastName'
email:
$ref: '#/components/schemas/Email'
required:
- first_name
type: object
responses:
Auth403:
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/NullField'
error:
description: Contains the error details.
items:
$ref: '#/components/schemas/ResponseForbiddenErrorObject'
type: array
links:
$ref: '#/components/schemas/NullField'
type: object
example:
data: null
error:
- id: aa7c4461-3779-4e06-92dd-66f971adeea9
status: '403'
source: POST/GET/PUT/DELETE /public/v3/orders
code: ACC007
detail: TO-DEFINE
links: null
description: ':construction: Communicates no rights to access the API. Contact our Customer Solutions team for help. While this HTTP error code is currently not supported the API returns 401.'
UpdateOrderResponse201:
content:
application/json:
schema:
description: Defines the response to a PUT `/public/v3/orders/{external_id}` request.
properties:
success:
description: Contains the order's external ID that can be used for tracking.
properties:
external_id:
$ref: '#/components/schemas/ExternalIdOrder'
required:
- external_id
type: object
type: object
example:
success:
external_id: 595b581d-c714-4f22-bce9-9b904694cba4
description: Confirms the order of the provided `external_id` has been updated.
RetrieveOrderResponse200:
content:
application/json:
schema:
properties:
status:
$ref: '#/components/schemas/Status'
cod_currency:
$ref: '#/components/schemas/Currency'
cod_value:
$ref: '#/components/schemas/CodValue'
customer:
$ref: '#/components/schemas/RetrieveCustomer'
delivery_type:
$ref: '#/components/schemas/DeliveryType'
delivery_address:
$ref: '#/components/schemas/DeliveryAddress'
delivery_instructions:
$ref: '#/components/schemas/DeliveryInstructions'
expected_delivery_ts:
$ref: '#/components/schemas/WindowObject'
expected_pick_up_ts:
$ref: '#/components/schemas/WindowObject'
external_id:
$ref: '#/components/schemas/ExternalIdOrder'
parcels:
items:
$ref: '#/components/schemas/RetrieveOrderResponseSuccessParcelsElem'
type: array
order_details:
$ref: '#/components/schemas/OrderDetails'
pick_up_address:
$ref: '#/components/schemas/PickupAddress'
pick_up_instructions:
type: string
service_type:
$ref: '#/components/schemas/ServiceType'
undeliverable_address:
$ref: '#/components/schemas/PickupAddress'
undeliverable_instructions:
$ref: '#/components/schemas/UndeliverableInstructions'
delivery_model:
description: Paack's delivery model associated with the service type. Currently only warehouse model is used. Learn more about service types [here](./service-types).
type: string
enum:
- store_model
- warehouse_model
default: warehouse_model
labels:
$ref: '#/components/schemas/Label'
type: object
example:
success:
status: draft
cod_currency: EUR
cod_value: 25
customer:
address:
line1: Via Augusta 17, Principal
city: Barcelona
post_code: 08006
country: ES
first_name: Martín
last_name: Fierro
email: martin.fierro@example.es
phone: '+34397341804'
has_gdpr_consent: true
delivery_type: direct
delivery_address:
line1: Via Augusta 17, Principal
city: Barcelona
post_code: 08006
country: ES
delivery_instructions: Leave at the door
expected_delivery_ts:
start:
date: '2022-10-28'
time: 08:00:00
end:
date: '2022-10-28'
time: '10:00:00'
expected_pick_up_ts:
start:
date: '2022-10-28'
time: '16:00:00'
end:
date: '2022-10-28'
time: '18:00:00'
external_id: 17c2f67d-6e11-458c-869a-c18ede84387e
parcels:
- barcode: 0347248734534534545364351
height: 3.45
length: 4.35
volumetric_weight: 0.051775876
weight: 3.45
width: 3.45
type: standard
order_details:
- name: sale_number
type: string
value: g_328294984981
pick_up_address:
line1: Avinguda Diagonal 1234
city: Barcelona
post_code: 08021
country: ES
pick_up_instructions: Check opening hours
service_type: CFA
undeliverable_address:
line1: Avinguda Diagonal 1234
city: Barcelona
post_code: 08021
country: ES
undeliverable_instructions: Check opening hours
delivery_model: warehouse_model
labels: XlhBCl5DSTI4Cl5DRjAsMTAwCl5GTzUwLDUwXkZIXkZEUEFBQ0teRlMKXkNGMCwxMDAKXkZPMCw1MF5GQjc1MCwxLDAsUiwwXkZIXkZEQ0ZBXkZTIApeRk81MCwxNTBeR0I3MDAsMywzXkZTCl5DRkEsNDAKXkZPNTAsMTgwXkZIXkZEMTdjMmY2N2QtNmUxMS00NThjLTg2OWEtYzE4ZWRlXkZTIApeRk81MCwyNTBeR0I3MDAsMywzXkZTCl5DRkEsNDAKXkZPNTAsMjkwXkEwLDQxLDQ1XkZIXkZETWFydMOtbiBGaWVycm9eRlMKXkNGQSwyMApeRk81MCwzNDBeRkheRkRWaWEgQXVndXN0YSAxNywgUHJpbmNpcGFsXkZTCl5GTzUwLDM4MF5GSF5GRF5GUwpeRk81MCw0MjBeRkheRkReRlMKXkZPNTAsNDYwXkZIXkZEXkZTCl5DRjAsNjAKXkZPNTAsNDk1XkZIXkZEMDgwMDZeRlMKXkNGQSwzMApeRk83MDAsNDk1XkZIXkZEMS8xXkZTCl5GTzUwLDU1NV5GSF5GREJhcmNlbG9uYSAsRVNeRlMKXkZPNTAsNjAwXkZIXkZEXkZTCl5CWTIsMiwxMjAKXkZPNTAsNjUwXkJDXkZIXkZEMDM0NzI0ODczNDUzNDUzNDU0NTM2NDM1MV5GUwpeRk81MCw4MjBeR0I3MDAsMywzXkZTCl5DRkEsMjAKXkZPNTAsODUwXkZIXkZEQXZpbmd1ZGEgRGlhZ29uYWwgMTIzNF5GUwpeRk81MCw4OTBeRkheRkReRlMKXkZPNTAwLDg1MF5GSF5GRDQuM3gzLjV4My41XkZTCl5GTzUwLDkzMF5GSF5GRF5GUwpeRk81MCw5NzBeRkheRkReRlMKXkZPNjUwLDkwMF5GSF5GRDMuNSBLZ15GUwpeQ0ZBLDQwCl5GTzUwLDEwMTBeRkheRkQwODAyMV5GUwpeQ0ZBLDMwCl5GTzU4MCw5NTBeRkheRkQyMDIyLTEyLTMxXkZTCl5GTzYyMCwxMDAwXkZEMDg6MDA6MDBeRlMKXkNGQSwzMApeRk81MCwxMDYwXkZIXkZEQmFyY2Vsb25hLEVTXkZTIApeRk81MCwxMTAwXkZIXkZEXkZTIApeWFoKCg==
description: Returns information persisted for the order specified in the path parameter. The label is returned if the request included the query parameters.
CreateOrderResponse500:
content:
application/json:
schema:
properties:
data:
description: 'null'
type: 'null'
error:
description: Contains the error details.
items:
$ref: '#/components/schemas/ResponseCreateError500Object'
type: array
links:
description: 'null'
type: 'null'
type: object
example:
data: null
error:
- id: 56046127-f4f8-4dc9-a0b8-a504e319255b
status: '500'
source: POST/GET/PUT/DELETE /public/v3/orders
code: UE-0001
detail: internal error
links: null
description: Returned in case of internal errors, which means the problem is on Paack's side.
Auth401:
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/NullField'
error:
description: Contains the error details.
items:
$ref: '#/components/schemas/ResponseAuthErrorObject'
type: array
links:
$ref: '#/components/schemas/NullField'
type: object
example:
data: null
error:
- id: c6f410f2-93cd-4aab-818b-773e3466fac9
status: '401'
source: POST/GET/PUT/DELETE /public/v3/orders
code: ACC009
detail: There were no valid credentials detected in your request. Check that the authentication token is sent and is not expired.
links: null
description: Communicates a missing or expired access token for authorization. Currently used also in case of no rights to access the API.
CreateOrderResponse400:
content:
application/json:
schema:
description: Defines the response to the POST `/orders` request.
properties:
data:
description: 'null'
type: 'null'
error:
description: Contains the error details.
items:
$ref: '#/components/schemas/ResponseCreateErrorObject'
type: array
links:
description: 'null'
type: 'null'
type: object
example:
data: null
error:
- id: 9ca08eb3-8bc9-4282-99bc-9b16304fdc6b
status: '400'
source: POST /public/v3/orders
code: ORD001
detail: Order external ID already exists.
links: null
description: Returned in case of validation errors. The details are displayed in the `error` array. Note that the response can return only one error at once.
To ensure a correct validation of a request:
- Body of the request must use a structured JSON format.
- All mandatory fields must be defined.
- Values for fields in the request must match the specific data type and format, including all limitations (e.g., `external_id` must be unique).
RetrieveOrderResponse400:
content:
application/json:
schema:
description: Defines the response to the POST `/orders` request.
properties:
data:
$ref: '#/components/schemas/NullField'
error:
description: Contains the error details.
items:
$ref: '#/components/schemas/ResponseRetrieveErrorObject'
type: array
links:
$ref: '#/components/schemas/NullField'
type: object
example:
data: null
error:
- id: e5f15347-3b8b-4d37-8c95-711383ca904a
status: '400'
source: GET /public/v3/orders/order_32345345
detail: Retailer order number not valid
links: null
description: In case the order of the `external_id` provided in the path parameter could not be found.
OrderResponse404:
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/NullField'
error:
description: Contains the error details.
items:
$ref: '#/components/schemas/Response404ErrorObject'
type: array
links:
$ref: '#/components/schemas/NullField'
type: object
example:
data: null
error:
- id: 51eb5d50-a08a-4e25-b81f-e4b35b5774ce
status: '404'
source: GET/PUT/DELETE /public/v3/orders/ecf856af-b0d9-41db-b8ab-a46fe5da9c353
code: ORD007
detail: Order does not exist.
links: null
description: In case the external ID specified in the path parameter doesn't correspond to any order.
CreateOrderResponse201:
content:
application/json:
schema:
description: Defines the response to the POST `/orders` request.
properties:
success:
description: Contains the order's ID that can be used for tracking. If the request contained the query parameters, this object returns also the order's status and label.
properties:
tracking_id:
$ref: '#/components/schemas/ExternalIdOrder'
status:
$ref: '#/components/schemas/Status'
labels:
$ref: '#/components/schemas/Label'
required:
- tracking_id
type: object
type: object
example:
success:
tracking_id: 859499e2-2b74-4cd7-8c86-08bd1d1ca0b1
status: draft
labels: XlhBCl5DSTI4Cl5DRjAsMTAwCl5GTzUwLDUwXkZIXkZEUEFBQ0teRlMKXkNGMCwxMDAKXkZPMCw1MF5GQjc1MCwxLDAsUiwwXkZIXkZEQ0ZBXkZTIApeRk81MCwxNTBeR0I3MDAsMywzXkZTCl5DRkEsNDAKXkZPNTAsMTgwXkZIXkZEODU5NDk5ZTItMmI3NC00Y2Q3LThjODYtMDhiZDFkXkZTIApeRk81MCwyNTBeR0I3MDAsMywzXkZTCl5DRkEsNDAKXkZPNTAsMjkwXkZIXkZETWFydMOtbiBGaWVycm9eRlMKXkNGQSwyMApeRk81MCwzNDBeRkheRkRWaWEgQXVndXN0YSAxNywgUHJpbmNpcGFsXkZTCl5GTzUwLDM4MF5GSF5GRF5GUwpeRk81MCw0MjBeRkheRkReRlMKXkZPNTAsNDYwXkZIXkZEXkZTCl5DRjAsNjAKXkZPNTAsNDk1XkZIXkZEMDgwMDZeRlMKXkNGQSwzMApeRk83MDAsNDk1XkZIXkZEMS8xXkZTCl5GTzUwLDU1NV5GSF5GREJhcmNlbG9uYSAsRVNeRlMKXkZPNTAsNjAwXkZIXkZEXkZTCl5CWTIsMiwxMjAKXkZPNTAsNjUwXkJDXkZIXkZEMDM0NzI0ODczNDUzNDUzNDU0NTM2NDM1MV5GUwpeRk81MCw4MjBeR0I3MDAsMywzXkZTCl5DRkEsMjAKXkZPNTAsODUwXkZIXkZEQXZpbmd1ZGEgRGlhZ29uYWwgMTIzNF5GUwpeRk81MCw4OTBeRkheRkReRlMKXkZPNTAwLDg1MF5GSF5GRDQuM3gzLjV4My41XkZTCl5GTzUwLDkzMF5GSF5GRF5GUwpeRk81MCw5NzBeRkheRkReRlMKXkZPNjUwLDkwMF5GSF5GRDMuNSBLZ15GUwpeQ0ZBLDQwCl5GTzUwLDEwMTBeRkheRkQwODAyMV5GUwpeQ0ZBLDMwCl5GTzU4MCw5NTBeRkheRkQyMDIyLTEyLTI4XkZTCl5GTzYyMCwxMDAwXkZEMDg6MDA6MDBeRlMKXkNGQSwzMApeRk81MCwxMDYwXkZIXkZEQmFyY2Vsb25hLEVTXkZTIApeRk81MCwxMTAwXkZIXkZEXkZTIApeWFoKCg==
description: Confirms the creation of an order of the `external_id` that equals the value returned in the `success.tracking_id` field. The fields `status` and `labels` are returned if the request included the query parameters.
securitySchemes:
api_key:
in: header
name: Authorization
type: apiKey
x-provenance:
method: searched
source: https://paack.readme.io/reference
harvested: '2026-10-14'
tool: harvest-readme-openapi.py
note: Assembled verbatim from the OpenAPI definition ReadMe embeds in each operation page of the provider's developer portal; paths and components merged by API title, nothing authored.
assembled_from:
- https://paack.readme.io/reference/delivery-verifications.md
- https://paack.readme.io/reference/orders-delete.md
- https://paack.readme.io/reference/orders-get.md
- https://paack.readme.io/reference/orders-put.md
- https://paack.readme.io/reference/orders.md
merge:
pages: 5
deduped: 88
conflicts_kept_first: 0