openapi: 3.1.0
info:
version: 1.2.2-oas3.1
title: Ankorstore Stock Tracking and Logistics Applications Shipping API
summary: API specification for the Ankorstore Stock Tracking and Logistics system
description: Ankorstore Stock Tracking and Logistics (ASTRAL) API specification
contact:
name: Ankorstore
url: https://www.ankorstore.com
email: api@ankorstore.com
license:
url: https://creativecommons.org/publicdomain/zero/1.0/
name: CC0 1.0 Universal
servers:
- url: http://www.ankorlocal.com:8000
description: Local Development Server
- url: https://www.preprod.ankorstore.com
description: Staging Environment
- url: https://www.ankorstore.com
description: Prod Environment
tags:
- name: Shipping
description: "ℹ️ Here your can find endpoints related to different types of shipping, available on the platform.\n\n
\n\nPlease note, that shipping information described here is only available for _Internal Orders_.\nFor more details check the [Orders](#tag/Ordering/General-conceptions) section.\n\n
\n\n## \U0001F4A1 How to ship an Internal Order?\n\nFor shipping an internal order, Ankorstore provides two methods:\n- `Ankorstore Label` method : For this method, the shipping will be handled by Ankorstore carrier partners. The cost of shipping will be charged to the brand.\n- `Brand Label` method : For this method, the shipping will be handled by the brand itself and Ankorstore will provide a refund.\n\nTo retrieve the shipping quotes, the brand must call the following endpoint:\n- Get quote list : `/v1/orders/:orderId/shipping-quotes`\n\nIn the list of quotes, the `Ankorstore Label` method can be found by the carrier name `ankorstore` :\n```json\n{\n \"data\": [\n {\n \"quoteUuid\": \"1efcd179-5753-6ee0-91a4-72a6c4e49e6a\",\n \"carrierCode\": \"ankorstore\",\n \"serviceCode\": \"\",\n \"serviceCommercialName\": \"\",\n \"collectionMethod\": [],\n \"shippingCost\": {\n // Amount refunded to the brand if the quote is selected\n \"amount\": 1006,\n \"currency\": \"EUR\"\n },\n \"timeInTransit\": null\n }\n ]\n}\n```\nOther methods have a different `carrierCode`:\n```json\n{\n \"data\": [\n {\n \"quoteUuid\": \"1edd47df-b91a-68b0-b517-52e73cd28d4f\",\n \"carrierCode\": \"ups\",\n \"serviceCode\": \"11\",\n \"serviceCommercialName\": \"UPS Standard\",\n \"collectionMethod\": [\n \"pickup\",\n \"drop-off\"\n ],\n \"shippingCost\": {\n // Amount subtracted from total amount if the quote is selected\n \"amount\": 807,\n \"currency\": \"EUR\"\n },\n \"timeInTransit\": {\n \"estimatedDeliveryDate\": \"2025-01-10\",\n \"pickupDate\": \"2025-01-08\",\n \"businessDaysInTransit\": 2\n }\n }\n ]\n}\n```\n\nOnce the quote is generated, the brand must confirm the selected one by calling :\n- Confirm shipping : `/v1/shipping-quotes/:quoteId/confirm`\n\n\n\nTo find out more about Ankorstore's shipping options, please [visit our FAQs.](https://ankorstoresas.my.site.com/faq/s/article/what-shipping-options-are-available-with-ankorstore?language=en_US)\n\n
\n\nThe brand can list many quotes before they decide to **confirm** the quote. An example flow:\n\n\nflowchart LR\n A[Start] --> B[Get shipping quote list:
orders/:orderId/shipping-quotes]\n B --> B.1{ankorstore carrier quote selected ?}\n B.1 -- NO --> B.YES[The brand will get the quote amount as a refund for the shipping]\n B.1 -- YES --> B.NO[The brand will be charged for the shipping by the quote amount]\n B.YES --> D[I Confirm the quote:
shipping-quotes/:quoteId/confirm]\n B.NO --> D\n
\n\n\n\n#### Parcels\n\nOn either shipping method, if the brand has previously generated a quote and is now generating a new one\nthe full list of parcels must be provided. The quote endpoint **cannot** be called with an empty parcel list\nto re-use the old parcel data.\n\n
\n\n\n\n#### Confirming a quote\n\nTo confirm a quote, the ID must be provided when calling the `/v1/shipping-quotes/:quoteId/confirm` endpoint.\n\n
\n\nAll information regarding shipping and tracking is stored within the `shippingOverview` object. This includes the `latestQuote` generated and the `shippingCostsOverview`.\n\n## \U0001F4A1 Shipping Costs\n\nIn the endpoint for listing quotes `v1/orders/:orderId/shipping-quotes`, the shipping cost of the selected\nquote will be the **fee** subtracted from total amount for carriers (`ups`, `dhl_express`, etc) and a **refund** amount\nfor `ankorstore` carrier (amount refunded to the brand):\n```json\n{\n \"data\": [\n {\n \"quoteUuid\": \"1edd47df-b91a-68b0-b517-52e73cd28d4f\",\n \"carrierCode\": \"ups\",\n \"serviceCode\": \"11\",\n \"serviceCommercialName\": \"UPS Standard\",\n \"collectionMethod\": [\n \"pickup\",\n \"drop-off\"\n ],\n \"shippingCost\": {\n // Amount subtracted from total amount if the quote is selected\n \"amount\": 807,\n \"currency\": \"EUR\"\n }\n },\n {\n \"quoteUuid\": \"1efcd179-5753-6ee0-91a4-72a6c4e49e6a\",\n \"carrierCode\": \"ankorstore\",\n \"serviceCode\": \"\",\n \"serviceCommercialName\": \"\",\n \"collectionMethod\": [],\n \"shippingCost\": {\n // Amount refunded to the brand if the quote is selected\n \"amount\": 1006,\n \"currency\": \"EUR\"\n }\n }\n ]\n}\n```\n\n\n\n#### Want more information about shipping contribution?\n\nTo find out more about Ankorstore's contribution to your shipping costs, please [visit our FAQs.](https://knowledgecommunity.force.com/faq/s/article/shippingpolicy?language=en_US)\n\n
\n\n### Shipping with Brand Label\n\nThe quote action will return an amount that will be refunded back to the brand based on the shipping grid refund matrix.\n\nThe confirm action is synchronous, meaning when the action is called the order resource will have its status\nchanged to `shipped` upon returning a response. It is up to brand to provide tracking details for the retailer when calling this action.\n\n\nsequenceDiagram\n participant O as Order\n participant SWC as Ship : orders/:orderId/shipping-quotes\n participant SC as Confirm : shipping-quotes/:quoteId/confirm\n participant SH as Shipped\n\n O->>SWC: List quotes\n SWC-->>O: Quote OK\n O->>SC: Confirm 'ankorstore' carrier quote\n SC->>SH: Status\n SC-->>O: OK\n
\n\n\n\nIn the `orders/:orderId/shipping-quotes` endpoint response, the quote uuid generated is the following:\n\n```json\n {\n \"quoteUuid\": \"1efcd179-56c1-6432-98e7-72a6c4e49e6a\",\n \"carrierCode\": \"ankorstore\",\n ...\n }\n }\n```\n\n
\n\n### Shipping with Ankorstore Label (carrier name like ups, dhl_express, etc)\n\nWhen calling the `confirm` action for the order's Ankorstore shipping quote, the returned order resource's status\nwill still be `brand_confirmed`. A job in the background will generate the shipping labels for the order.\nIt is this background processing that moves the status to `shipping_labels_generated`.\n\n\n\n#### How will I know when the labels have been generated?\n\nRight now, the order must be polled periodically. Checking every minute would be suitable to detect the status change\nand then pull the label PDF data within the shippingOverview of an order resource.\n\n
\n\n\nsequenceDiagram\n participant O as Order\n participant SWA as Ship with Ankorstore Label :
orders/:orderId/shipping-quotes\n participant SC as Confirm shipping :
shipping-quotes/:quoteId/confirm\n participant BG as Async Processing\n participant C as Carrier\n participant SH as Shipped\n\n O->>SWA: Get shipping quote list\n SWA-->>O: I accept one quote\n O->>SC: I confirm the quote\n SC-->>O: OK status=brand_confirmed\n SC-->>BG: Dispatch generate labels job\n Note over SC,BG: Async worker job\n BG-->>O: Labels generated, status=shipping_labels_generated\n Note over BG,O: (Async worker)\n C-->>SH: Parcels scanned, status=shipped\n Note over C,SH: (External service)\n
\n\nAt step 6 (shipping labels generated) the download URL's for each packages label will be available within\nthe shippingOverview of an order resource. These labels are in PDF format and will also be visible in order details page on Ankorstore.\n\nIn the `orders/:orderId/shipping-quotes` endpoint response, the quote uuid generated is the following:\n\n```json\n {\n \"quoteUuid\": \"1efcd179-56c1-6432-98e7-72a6c4e49e6a\",\n \"carrierCode\": \"ups\",\n ...\n }\n }\n```\n\n### Schedule a Pickup\n\nIf the brand is not taking the parcels to the local drop-off point for the carrier the brand can schedule a pickup\nfor this order. A pickup can only be scheduled on a working day (monday to friday).\nFor full information please refer to the API documentation.\n\n\n\n#### Pickup is not accepted\n\nFor now, Ankorstore does not know in advance which date/time configuration is available,\nif the requested pickup is denied please try a different date or time frame.\n\n
\n\n## ⚠️ Deprecation notice\n\n\n\nSome of the endpoints and documents from this section are deprecated and will be removed in the future.\nYou can temporarily still find them [here](#tag/Deprecated).\n\n
\n"
paths:
/api/v1/master-orders/{orderId}/tracking:
get:
summary: List master order shipment tracking
description: Retrieve shipment information like the parcels and the tracking information
operationId: get-master-order-shipping-shipment
tags:
- Shipping
parameters:
- name: Accept
in: header
description: application/vnd.api+json
schema:
type: string
default: application/vnd.api+json
- name: orderId
in: path
required: true
schema:
type: string
description: '[resource object identifier (uuid)](https://jsonapi.org/format/#document-resource-object-identification)'
format: uuid
- name: include
in: query
allowEmptyValue: true
required: false
schema:
type: string
enum:
- shipmentParcel
- shipmentQuote
- shippedItems
responses:
'200':
description: Shipment tracking information
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
type:
- 'null'
- object
properties:
type:
type: string
default: shipment-trackings
id:
type: string
description: '[resource object identifier (uuid)](https://jsonapi.org/format/#document-resource-object-identification)'
format: uuid
attributes:
type: object
additionalProperties: false
required:
- carrier
- trackingNumber
- trackingLink
- status
properties:
carrier:
type:
- 'null'
- string
serviceCode:
type:
- 'null'
- string
trackingNumber:
type: string
trackingLink:
type:
- 'null'
- string
status:
type:
- 'null'
- string
relationships:
type: object
description: Only presented if asked explicitly in the request
properties:
shipmentParcel:
type: object
properties:
data:
description: An array of objects each containing `type` and `id` members for to-many relationships.
type: array
items: &id003
description: Resource identification present in Resource Objects and Resource Identifier Objects.
type: object
required: &id001
- id
- type
properties: &id002
id:
type: string
description: '[resource object identifier (uuid)](https://jsonapi.org/format/#document-resource-object-identification)'
format: uuid
type:
type: string
description: '[resource object type](https://jsonapi.org/format/#document-resource-object-identification)'
meta:
description: Non-standard meta-information that can not be represented as an attribute or relationship.
type: object
additionalProperties: true
additionalProperties: false
uniqueItems: true
shipmentQuote:
type: object
properties:
data:
description: Resource identification present in Resource Objects and Resource Identifier Objects.
type: object
required: *id001
properties: *id002
additionalProperties: false
shippedItems:
type: object
description: Only presented if asked explicitly in the request with ?include=shippedItems
properties:
data:
description: An array of objects each containing `type` and `id` members for to-many relationships.
type: array
items: *id003
uniqueItems: true
jsonapi:
description: An object describing the server's implementation
type: object
properties: &id004
version:
type: string
meta:
description: Non-standard meta-information that can not be represented as an attribute or relationship.
type: object
additionalProperties: true
additionalProperties: false
included:
type: array
items:
anyOf:
- properties:
type:
type: string
default: tracked-packages
id:
type: string
description: '[resource object identifier (uuid)](https://jsonapi.org/format/#document-resource-object-identification)'
format: uuid
attributes:
type: object
additionalProperties: false
required:
- trackingNumber
- trackingLink
- status
properties:
height:
description: Height of the package (cm)
type:
- 'null'
- integer
width:
description: Width of the package (cm)
type:
- 'null'
- integer
length:
description: Length of the package (cm)
type:
- 'null'
- integer
weight:
description: Weight of the package (g)
type:
- 'null'
- integer
trackingNumber:
type: string
description: Tracking number of the package
trackingLink:
type: string
description: Tracking link of the package
status:
type: string
description: Status of the package
serialShippingContainerCode:
type:
- 'null'
- string
description: Serial Shipping Container Code (SSCC) for traceability
label:
type:
- 'null'
- object
description: Label of the package
properties:
content:
type: string
description: Content of the label
contentType:
type: string
description: Content type of the label (gif, pdf)
- properties:
type:
type: string
default: shipping-shipment-shipped-item
id:
type: string
description: '[resource object identifier (uuid)](https://jsonapi.org/format/#document-resource-object-identification)'
format: uuid
attributes:
type: object
additionalProperties: false
required:
- parcelId
- productVariantId
- batchQuantity
- unitQuantity
properties:
parcelId:
type: string
format: uuid
description: The UUID of the parcel (tracked package) this item belongs to
productVariantId:
type: string
format: uuid
description: The UUID of the product variant
batchQuantity:
type: integer
minimum: 1
description: Number of batches (e.g. boxes) shipped
unitQuantity:
type: integer
minimum: 1
description: Number of individual units shipped
lotNumber:
type:
- 'null'
- string
description: Lot or batch number for traceability
expiryDate:
type:
- 'null'
- string
format: date
description: Expiry date of the items (YYYY-MM-DD)
required:
- data
- jsonapi
'401':
description: Unauthorized
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: &id005
errors:
type: array
uniqueItems: true
items:
type: object
properties:
code:
description: An application-specific error code, expressed as a string value.
type: string
detail:
description: A human-readable explanation specific to this occurrence of the problem.
type: string
status:
description: The HTTP status code applicable to this problem, expressed as a string value.
type: string
title:
description: The HTTP status code description applicable to this problem
type: string
source:
type: object
description: Optional object pointing towards the problematic field
properties:
pointer:
type: string
description: The field key
meta:
description: Non-standard meta-information that can not be represented as an attribute or relationship.
type: object
additionalProperties: true
additionalProperties: false
jsonapi:
description: An object describing the server's implementation
type: object
properties: *id004
additionalProperties: false
required: &id006
- errors
example:
jsonapi:
version: '1.0'
errors:
- detail: Unauthorized
status: '401'
'404':
description: '[Not found](https://jsonapi.org/format/#fetching-resources-responses-404)'
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: *id005
required: *id006
example:
jsonapi:
version: '1.0'
errors:
- detail: Not found
status: '404'
'406':
description: Not Acceptable
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: *id005
required: *id006
example:
jsonapi:
version: '1.0'
errors:
- detail: Not Acceptable
status: '406'
'415':
description: Unsupported Media Type
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: *id005
required: *id006
example:
jsonapi:
version: '1.0'
errors:
- detail: Unsupported Media Type
status: '415'
post:
summary: Create master order shipment tracking
description: Create shipment information like the parcels and the tracking information
operationId: post-master-order-shipping-shipment
tags:
- Shipping
parameters:
- name: Accept
in: header
description: application/vnd.api+json
schema:
type: string
default: application/vnd.api+json
- name: orderId
in: path
required: true
schema:
type: string
description: '[resource object identifier (uuid)](https://jsonapi.org/format/#document-resource-object-identification)'
format: uuid
- name: include
in: query
allowEmptyValue: true
required: false
schema:
type: string
enum:
- shipmentParcel
- shipmentQuote
- shippedItems
requestBody:
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
type: object
properties:
type:
type: string
enum:
- shipping-shipment
id:
type: string
description: '[resource object identifier (uuid)](https://jsonapi.org/format/#document-resource-object-identification)'
format: uuid
attributes:
type: object
additionalProperties: false
required:
- status
- carrier
properties:
carrier:
type:
- 'null'
- string
description: The carrier name - set 'other' if the carrier is not known yet
trackingNumber:
type:
- 'null'
- string
trackingLink:
type:
- 'null'
- string
description: Tracking link to the carrier's website - if null and if the carrier is known, the tracking link will be generated by Ankorstore
status:
type: string
enum:
- UNKNOWN
- PRE_TRANSIT
- TRANSIT
- DELIVERED
- RETURNED
- FAILURE
fromAddress:
description: The address from where the parcels are shipped
type: object
properties:
data:
type: object
required:
- name
- street
- city
- postalCode
- countryCode
properties:
name:
type: string
street:
type: string
city:
type: string
postalCode:
type: string
countryCode:
type: string
format: iso3166-1-alpha-2
relationships:
type: object
required:
- shipmentParcel
properties:
shipmentParcel:
type: object
properties:
data:
type: array
items:
type: object
required:
- type
- id
properties:
type:
type: string
enum:
- shipping-shipment-parcel
id:
type: string
description: '[resource object identifier (uuid)](https://jsonapi.org/format/#document-resource-object-identification)'
format: uuid
attributes:
type: object
additionalProperties: false
required:
- status
properties:
trackingNumber:
type:
- 'null'
- string
trackingLink:
type:
- 'null'
- string
description: Tracking link to the carrier's website - if null and if the carrier is known, the tracking link will be generated by Ankorstore
status:
type: string
enum:
- UNKNOWN
- PRE_TRANSIT
- TRANSIT
- DELIVERED
- RETURNED
- FAILURE
length:
description: The length of the parcel in cm
type:
- 'null'
- integer
width:
description: The width of the parcel in cm
type:
- 'null'
- integer
height:
description: The height of the parcel in cm
type:
- 'null'
- integer
weight:
description: The weight of the parcel in grams
type:
- 'null'
- integer
sscc:
description: Serial Shipping Container Code (SSCC) for traceability
type:
- 'null'
- string
shippedItems:
description: Items shipped in this parcel
type: array
items:
type: object
required:
- productVariantUuid
- batchQuantity
- unitQuantity
properties:
productVariantUuid:
type: string
format: uuid
description: The UUID of the product variant
batchQuantity:
type: integer
minimum: 1
description: Number of batches (e.g. boxes) shipped
unitQuantity:
type: integer
minimum: 1
description: Number of individual units shipped
lotNumber:
type:
- 'null'
- string
description: Lot or batch number for traceability
maxLength: 100
expiryDate:
type:
- 'null'
- string
format: date
description: Expiry date of the items (YYYY-MM-DD)
shipmentQuote:
type:
- 'null'
- object
description: The quote is the price of the shipping
properties:
data:
type: object
required:
- type
- id
properties:
type:
type: string
enum:
- shipping-quotes
id:
type: string
description: '[resource object identifier (uuid)](https://jsonapi.org/format/#document-resource-object-identification)'
format: uuid
responses:
'201':
description: Shipment tracking information
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
type:
- 'null'
- object
properties:
type:
type: string
default: shipment-trackings
id:
type: string
description: '[resource object identifier (uuid)](https://jsonapi.org/format/#document-resource-object-identification)'
format: uuid
attributes:
type: object
additionalProperties: false
required:
- carrier
- trackingNumber
- trackingLink
- status
properties:
carrier:
type:
- 'null'
- string
serviceCode:
type:
- 'null'
- string
trackingNumber:
type: string
trackingLink:
type:
- 'null'
- string
status:
type:
- 'null'
- string
relationships:
type: object
description: Only presented if asked explicitly in the request
properties:
shipmentParcel:
type: object
properties:
data:
description: An array of objects each containing `type` and `id` members for to-many relationships.
type: array
items: &id009
description: Resource identification present in Resource Objects and Resource Identifier Objects.
type: object
required: &id007
- id
- type
properties: &id008
id:
type: string
description: '[resource object identifier (uuid)](https://jsonapi.org/format/#document-resource-object-identification)'
format: uuid
type:
type: string
description: '[resource object type](https://jsonapi.org/format/#document-resource-object-identification)'
meta:
description: Non-standard meta-information that can not be represented as an attribute or relationship.
type: object
additionalProperties: true
additionalProperties: false
uniqueItems: true
shipmentQuote:
type: object
properties:
data:
description: Resource identification present in Resource Objects and Resource Identifier Objects.
type: object
required: *id007
properties: *id008
additionalProperties: false
shippedItems:
type: object
description: Only presented if asked explicitly in the request with ?include=shippedItems
properties:
data:
description: An array of objects each containing `type` and `id` members for to-many relationships.
type: array
items: *id009
uniqueItems: true
jsonapi:
description: An object describing the server's implementation
type: object
properties: &id010
version:
type: string
meta:
description: Non-standard meta-information that can not be represented as an attribute or relationship.
type: object
additionalProperties: true
additionalProperties: false
included:
type: array
items:
anyOf:
- properties:
type:
type: string
default: tracked-packages
id:
type: string
description: '[resource object identifier (uuid)](https://jsonapi.org/format/#document-resource-object-identification)'
format: uuid
attributes:
type: object
additionalProperties: false
required:
- trackingNumber
- trackingLink
- status
properties:
height:
description: Height of the package (cm)
type:
- 'null'
- integer
width:
description: Width of the package (cm)
type:
- 'null'
- integer
length:
description: Length of the package (cm)
type:
- 'null'
- integer
weight:
description: Weight of the package (g)
type:
- 'null'
- integer
trackingNumber:
type: string
description: Tracking number of the package
trackingLink:
type: string
description: Tracking link of the package
status:
type: string
description: Status of the package
serialShippingContainerCode:
type:
- 'null'
- string
description: Serial Shipping Container Code (SSCC) for traceability
label:
type:
- 'null'
- object
description: Label of the package
properties:
content:
type: string
description: Content of the label
contentType:
type: string
description: Content type of the label (gif, pdf)
- type: object
description: Quote resource
properties:
quoteUuid:
type: string
description: The unique identifier for the quote as an uuid
carrierCode:
type: string
description: The carrier code for the quote
serviceCode:
type: string
description: The service code for the quote
serviceCommercialName:
type: string
description: The commercial name of the service
collectionMethod:
description: The collection method for the quote
type: array
items:
type: string
enum:
- pickup
- drop-off
shippingCost:
type: object
properties:
amount:
type: number
description: The amount of the shipping cost
currency:
type: string
description: The currency of the shipping cost
timeInTransit:
type:
- 'null'
- object
description: Delivery estimation information if provided by carrier
properties:
estimatedDeliveryDate:
type:
- 'null'
- string
format: date
description: Estimation of delivery date by the carrier
pickupDate:
type:
- 'null'
- string
format: date
description: Pickup date considered for the estimation
businessDaysInTransit:
type:
- 'null'
- number
description: Number of business days the shipment is in transit
required:
- data
- jsonapi
'401':
description: Unauthorized
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: &id011
errors:
type: array
uniqueItems: true
items:
type: object
properties:
code:
description: An application-specific error code, expressed as a string value.
type: string
detail:
description: A human-readable explanation specific to this occurrence of the problem.
type: string
status:
description: The HTTP status code applicable to this problem, expressed as a string value.
type: string
title:
description: The HTTP status code description applicable to this problem
type: string
source:
type: object
description: Optional object pointing towards the problematic field
properties:
pointer:
type: string
description: The field key
meta:
description: Non-standard meta-information that can not be represented as an attribute or relationship.
type: object
additionalProperties: true
additionalProperties: false
jsonapi:
description: An object describing the server's implementation
type: object
properties: *id010
additionalProperties: false
required: &id012
- errors
example:
jsonapi:
version: '1.0'
errors:
- detail: Unauthorized
status: '401'
'403':
description: '[Forbidden](https://jsonapi.org/format/#crud-creating-responses-403)'
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: *id011
required: *id012
example:
jsonapi:
version: '1.0'
errors:
- detail: Forbidden
status: '403'
'404':
description: '[Not found](https://jsonapi.org/format/#fetching-resources-responses-404)'
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: *id011
required: *id012
example:
jsonapi:
version: '1.0'
errors:
- detail: Not found
status: '404'
'406':
description: Not Acceptable
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: *id011
required: *id012
example:
jsonapi:
version: '1.0'
errors:
- detail: Not Acceptable
status: '406'
'415':
description: Unsupported Media Type
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: *id011
required: *id012
example:
jsonapi:
version: '1.0'
errors:
- detail: Unsupported Media Type
status: '415'
'422':
description: 'Unprocessable Entity : Data provided are invalid'
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: *id011
required: *id012
example:
jsonapi:
version: string
errors:
- detail: The field is required.
source:
pointer: data.attributes.field
status: '422'
title: Unprocessable Content
patch:
summary: Update master order shipment tracking
description: Update shipment information like the parcels and the tracking information
operationId: patch-master-order-shipping-shipment
tags:
- Shipping
parameters:
- name: Accept
in: header
description: application/vnd.api+json
schema:
type: string
default: application/vnd.api+json
- name: orderId
in: path
required: true
schema:
type: string
description: '[resource object identifier (uuid)](https://jsonapi.org/format/#document-resource-object-identification)'
format: uuid
- name: include
in: query
allowEmptyValue: true
required: false
schema:
type: string
enum:
- shipmentParcel
- shipmentQuote
- shippedItems
requestBody:
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
type: object
properties:
type:
type: string
enum:
- shipping-shipment
id:
type: string
description: '[resource object identifier (uuid)](https://jsonapi.org/format/#document-resource-object-identification)'
format: uuid
attributes:
type: object
additionalProperties: false
required:
- status
- carrier
properties:
carrier:
type:
- 'null'
- string
description: The carrier name - set 'other' if the carrier is not known yet
trackingNumber:
type:
- 'null'
- string
trackingLink:
type:
- 'null'
- string
description: Tracking link to the carrier's website - if null and if the carrier is known, the tracking link will be generated by Ankorstore
status:
type: string
enum:
- UNKNOWN
- PRE_TRANSIT
- TRANSIT
- DELIVERED
- RETURNED
- FAILURE
relationships:
type: object
required:
- shipmentParcel
properties:
shipmentParcel:
type: object
properties:
data:
type: array
items:
type: object
required:
- type
- id
properties:
type:
type: string
enum:
- shipping-shipment-parcel
id:
type: string
description: '[resource object identifier (uuid)](https://jsonapi.org/format/#document-resource-object-identification)'
format: uuid
attributes:
type: object
additionalProperties: false
required:
- status
properties:
trackingNumber:
type:
- 'null'
- string
trackingLink:
type:
- 'null'
- string
description: Tracking link to the carrier's website - if null and if the carrier is known, the tracking link will be generated by Ankorstore
status:
type: string
enum:
- UNKNOWN
- PRE_TRANSIT
- TRANSIT
- DELIVERED
- RETURNED
- FAILURE
length:
type:
- 'null'
- integer
width:
type:
- 'null'
- integer
height:
type:
- 'null'
- integer
weight:
type:
- 'null'
- integer
sscc:
description: Serial Shipping Container Code (SSCC) for traceability
type:
- 'null'
- string
shippedItems:
description: Items shipped in this parcel
type: array
items:
type: object
required:
- productVariantUuid
- batchQuantity
- unitQuantity
properties:
productVariantUuid:
type: string
format: uuid
description: The UUID of the product variant
batchQuantity:
type: integer
minimum: 1
description: Number of batches (e.g. boxes) shipped
unitQuantity:
type: integer
minimum: 1
description: Number of individual units shipped
lotNumber:
type:
- 'null'
- string
description: Lot or batch number for traceability
maxLength: 100
expiryDate:
type:
- 'null'
- string
format: date
description: Expiry date of the items (YYYY-MM-DD)
responses:
'200':
description: Shipment tracking information
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
type:
- 'null'
- object
properties:
type:
type: string
default: shipment-trackings
id:
type: string
description: '[resource object identifier (uuid)](https://jsonapi.org/format/#document-resource-object-identification)'
format: uuid
attributes:
type: object
additionalProperties: false
required:
- carrier
- trackingNumber
- trackingLink
- status
properties:
carrier:
type:
- 'null'
- string
serviceCode:
type:
- 'null'
- string
trackingNumber:
type: string
trackingLink:
type:
- 'null'
- string
status:
type:
- 'null'
- string
relationships:
type: object
description: Only presented if asked explicitly in the request
properties:
shipmentParcel:
type: object
properties:
data:
description: An array of objects each containing `type` and `id` members for to-many relationships.
type: array
items: &id015
description: Resource identification present in Resource Objects and Resource Identifier Objects.
type: object
required: &id013
- id
- type
properties: &id014
id:
type: string
description: '[resource object identifier (uuid)](https://jsonapi.org/format/#document-resource-object-identification)'
format: uuid
type:
type: string
description: '[resource object type](https://jsonapi.org/format/#document-resource-object-identification)'
meta:
description: Non-standard meta-information that can not be represented as an attribute or relationship.
type: object
additionalProperties: true
additionalProperties: false
uniqueItems: true
shipmentQuote:
type: object
properties:
data:
description: Resource identification present in Resource Objects and Resource Identifier Objects.
type: object
required: *id013
properties: *id014
additionalProperties: false
shippedItems:
type: object
description: Only presented if asked explicitly in the request with ?include=shippedItems
properties:
data:
description: An array of objects each containing `type` and `id` members for to-many relationships.
type: array
items: *id015
uniqueItems: true
jsonapi:
description: An object describing the server's implementation
type: object
properties: &id016
version:
type: string
meta:
description: Non-standard meta-information that can not be represented as an attribute or relationship.
type: object
additionalProperties: true
additionalProperties: false
included:
type: array
items:
anyOf:
- properties:
type:
type: string
default: tracked-packages
id:
type: string
description: '[resource object identifier (uuid)](https://jsonapi.org/format/#document-resource-object-identification)'
format: uuid
attributes:
type: object
additionalProperties: false
required:
- trackingNumber
- trackingLink
- status
properties:
height:
description: Height of the package (cm)
type:
- 'null'
- integer
width:
description: Width of the package (cm)
type:
- 'null'
- integer
length:
description: Length of the package (cm)
type:
- 'null'
- integer
weight:
description: Weight of the package (g)
type:
- 'null'
- integer
trackingNumber:
type: string
description: Tracking number of the package
trackingLink:
type: string
description: Tracking link of the package
status:
type: string
description: Status of the package
serialShippingContainerCode:
type:
- 'null'
- string
description: Serial Shipping Container Code (SSCC) for traceability
label:
type:
- 'null'
- object
description: Label of the package
properties:
content:
type: string
description: Content of the label
contentType:
type: string
description: Content type of the label (gif, pdf)
- type: object
description: Quote resource
properties:
quoteUuid:
type: string
description: The unique identifier for the quote as an uuid
carrierCode:
type: string
description: The carrier code for the quote
serviceCode:
type: string
description: The service code for the quote
serviceCommercialName:
type: string
description: The commercial name of the service
collectionMethod:
description: The collection method for the quote
type: array
items:
type: string
enum:
- pickup
- drop-off
shippingCost:
type: object
properties:
amount:
type: number
description: The amount of the shipping cost
currency:
type: string
description: The currency of the shipping cost
timeInTransit:
type:
- 'null'
- object
description: Delivery estimation information if provided by carrier
properties:
estimatedDeliveryDate:
type:
- 'null'
- string
format: date
description: Estimation of delivery date by the carrier
pickupDate:
type:
- 'null'
- string
format: date
description: Pickup date considered for the estimation
businessDaysInTransit:
type:
- 'null'
- number
description: Number of business days the shipment is in transit
required:
- data
- jsonapi
'401':
description: Unauthorized
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: &id017
errors:
type: array
uniqueItems: true
items:
type: object
properties:
code:
description: An application-specific error code, expressed as a string value.
type: string
detail:
description: A human-readable explanation specific to this occurrence of the problem.
type: string
status:
description: The HTTP status code applicable to this problem, expressed as a string value.
type: string
title:
description: The HTTP status code description applicable to this problem
type: string
source:
type: object
description: Optional object pointing towards the problematic field
properties:
pointer:
type: string
description: The field key
meta:
description: Non-standard meta-information that can not be represented as an attribute or relationship.
type: object
additionalProperties: true
additionalProperties: false
jsonapi:
description: An object describing the server's implementation
type: object
properties: *id016
additionalProperties: false
required: &id018
- errors
example:
jsonapi:
version: '1.0'
errors:
- detail: Unauthorized
status: '401'
'403':
description: '[Forbidden](https://jsonapi.org/format/#crud-creating-responses-403)'
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: *id017
required: *id018
example:
jsonapi:
version: '1.0'
errors:
- detail: Forbidden
status: '403'
'404':
description: '[Not found](https://jsonapi.org/format/#fetching-resources-responses-404)'
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: *id017
required: *id018
example:
jsonapi:
version: '1.0'
errors:
- detail: Not found
status: '404'
'406':
description: Not Acceptable
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: *id017
required: *id018
example:
jsonapi:
version: '1.0'
errors:
- detail: Not Acceptable
status: '406'
'415':
description: Unsupported Media Type
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: *id017
required: *id018
example:
jsonapi:
version: '1.0'
errors:
- detail: Unsupported Media Type
status: '415'
'422':
description: 'Unprocessable Entity : Data provided are invalid'
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: *id017
required: *id018
example:
jsonapi:
version: string
errors:
- detail: The field is required.
source:
pointer: data.attributes.field
status: '422'
title: Unprocessable Content
/api/v1/orders/{order}/shipping-quotes:
post:
summary: List Shipping Quotes
operationId: list-order-shipping-quotes
description: 'List multiple carrier service quotes that you can choose to ship your order.
Please visit our [FAQs](https://knowledgecommunity.force.com/faq/s/article/how-do-i-benefit-from-shipping-with-ankorstore?language=en_US) for more information.''
'
tags:
- Shipping
parameters:
- name: Accept
in: header
description: application/vnd.api+json
schema:
type: string
default: application/vnd.api+json
- name: order
in: path
required: true
schema:
type: string
description: '[resource object identifier (uuid)](https://jsonapi.org/format/#document-resource-object-identification)'
format: uuid
requestBody:
content:
application/vnd.api+json:
schema:
properties:
parcels:
type: array
minimum: 1
maximum: 20
items:
type: object
required:
- kg
- height
- length
- width
properties:
kg:
type: number
description: The weight of the parcel in kilograms
minimum: 0.001
maximum: 30
height:
type: number
description: The height of the parcel in centimeters
minimum: 1
maximum: 274
length:
type: number
description: The length of the parcel in centimeters
minimum: 1
maximum: 274
width:
type: number
description: The width of the parcel in centimeters
minimum: 1
maximum: 274
required:
- parcels
example:
parcels:
- length: 20
width: 20
height: 20
kg: 21
responses:
'200':
description: A list of shipping quotes
content:
application/vnd.api+json:
schema:
type: object
required:
- data
properties:
data:
type: array
items:
type: object
description: Quote resource
properties:
quoteUuid:
type: string
description: The unique identifier for the quote as an uuid
carrierCode:
type: string
description: The carrier code for the quote
serviceCode:
type: string
description: The service code for the quote
serviceCommercialName:
type: string
description: The commercial name of the service
collectionMethod:
description: The collection method for the quote
type: array
items:
type: string
enum:
- pickup
- drop-off
shippingCost:
type: object
properties:
amount:
type: number
description: The amount of the shipping cost
currency:
type: string
description: The currency of the shipping cost
timeInTransit:
type:
- 'null'
- object
description: Delivery estimation information if provided by carrier
properties:
estimatedDeliveryDate:
type:
- 'null'
- string
format: date
description: Estimation of delivery date by the carrier
pickupDate:
type:
- 'null'
- string
format: date
description: Pickup date considered for the estimation
businessDaysInTransit:
type:
- 'null'
- number
description: Number of business days the shipment is in transit
jsonapi:
description: An object describing the server's implementation
type: object
properties: &id019
version:
type: string
meta:
description: Non-standard meta-information that can not be represented as an attribute or relationship.
type: object
additionalProperties: true
additionalProperties: false
examples:
example:
value:
jsonapi:
version: '1.0'
data:
- quoteUuid: 1eda3cbb-983b-6a4a-b395-6a0440190584
carrierCode: ups
serviceCode: '11'
serviceCommercialName: UPS STANDARD
collectionMethod:
- pickup
shippingCost:
amount: 12
currency: EUR
timeInTransit:
estimatedDeliveryDate: '2024-09-09'
pickupDate: '2024-09-07'
businessDaysInTransit: 2
'401':
description: Unauthorized
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: &id020
errors:
type: array
uniqueItems: true
items:
type: object
properties:
code:
description: An application-specific error code, expressed as a string value.
type: string
detail:
description: A human-readable explanation specific to this occurrence of the problem.
type: string
status:
description: The HTTP status code applicable to this problem, expressed as a string value.
type: string
title:
description: The HTTP status code description applicable to this problem
type: string
source:
type: object
description: Optional object pointing towards the problematic field
properties:
pointer:
type: string
description: The field key
meta:
description: Non-standard meta-information that can not be represented as an attribute or relationship.
type: object
additionalProperties: true
additionalProperties: false
jsonapi:
description: An object describing the server's implementation
type: object
properties: *id019
additionalProperties: false
required: &id021
- errors
example:
jsonapi:
version: '1.0'
errors:
- detail: Unauthorized
status: '401'
'404':
description: '[Not found](https://jsonapi.org/format/#fetching-resources-responses-404)'
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: *id020
required: *id021
example:
jsonapi:
version: '1.0'
errors:
- detail: Not found
status: '404'
'406':
description: Not Acceptable
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: *id020
required: *id021
example:
jsonapi:
version: '1.0'
errors:
- detail: Not Acceptable
status: '406'
'415':
description: Unsupported Media Type
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: *id020
required: *id021
example:
jsonapi:
version: '1.0'
errors:
- detail: Unsupported Media Type
status: '415'
'422':
description: 'Unprocessable Entity : Data provided are invalid'
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: *id020
required: *id021
examples:
example:
value:
jsonapi:
version: string
errors:
- detail: The field is required.
source:
pointer: field
status: '422'
title: Unprocessable Content
- detail: The package dimensions are too big. Packages can be up to 400 cm in length and girth combined
source:
pointer: shipping.parcels.0
status: '422'
title: Unprocessable Content
- detail: The parcel weight (kg) must be between 0.001 and 30.000.
source:
pointer: shipping.parcels.0.kg
status: '422'
title: Unprocessable Content
- detail: The parcel length may not be greater than 274.
source:
pointer: shipping.parcels.0.length
status: '422'
title: Unprocessable Content
- detail: The parcel width may not be greater than 274.
source:
pointer: shipping.parcels.0.width
status: '422'
title: Unprocessable Content
- detail: The parcel height may not be greater than 274.
source:
pointer: shipping.parcels.0.height
status: '422'
title: Unprocessable Content
/api/v1/shipping-quotes/{quote}/confirm:
post:
summary: Confirm Shipping Quote
operationId: confirm-order-shipping-quote
description: 'Use this endpoint to confirm which quote you want to use to ship your order.
You can confirm either custom or ankorstore quote.
'
tags:
- Shipping
parameters:
- name: Accept
in: header
description: application/vnd.api+json
schema:
type: string
default: application/vnd.api+json
- name: quote
in: path
required: true
schema:
type: string
description: '[resource object identifier (uuid)](https://jsonapi.org/format/#document-resource-object-identification)'
format: uuid
requestBody:
content:
application/vnd.api+json:
schema:
type: object
properties:
labelFormat:
type: string
description: This field is not required. If you don't' define it we will use the default label format as well.
enum:
- full_page
- default
default: default
tracking:
oneOf:
- type: object
description: Tracking Provider + Number for custom quote
required:
- trackingProvider
- trackingNumber
properties:
trackingProvider:
type: string
description: Tracking provider is required with trackingNumber if your define an tracking key in your payload. You can define trackingLink instead of define trackingProvider & trackingNumber
trackingNumber:
description: The tracking number (may contain characters as well)
type: string
- type: object
description: Tracking Link
required:
- trackingLink
properties:
trackingLink:
type: string
format: url
description: Tracking link is required if your define an tracking key in your payload. You can define trackingProvider & trackingNumber instead
examples:
example-with-full-page-label-format:
value:
labelFormat: default
example-with-provider-and-number:
value:
tracking:
trackingProvider: ups
trackingNumber: '123456'
example-with-link:
value:
tracking:
trackingLink: https://www.dhl.com/fr-en/home/tracking/tracking-parcel.html?submit=1&tracking-id=1Z8A76E46801183396
responses:
'200':
description: Successful response
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
type: object
properties:
id:
type: string
uuid:
type: string
orderUuid:
type: string
provider:
type: string
currency:
type: string
shippingCost:
type: string
description: Shipping cost subtracted from total amount for ankorstore quote - Available only for ankorstore quote
refund:
type: string
description: Refund done to the brand for custom quote - Available only for custom quote
jsonapi:
description: An object describing the server's implementation
type: object
properties: &id022
version:
type: string
meta:
description: Non-standard meta-information that can not be represented as an attribute or relationship.
type: object
additionalProperties: true
additionalProperties: false
examples:
example-with-shipping-cost:
value:
jsonapi:
version: '1.0'
data:
id: '991836'
uuid: 1eda3cbb-983b-6a4a-b395-6a0440190584
orderUuid: 1ed9f5cc-ce42-625a-a8f1-b6ea0809b6f7
provider: ups
currency: EUR
shippingCost: €12.00
example-with-refund:
value:
jsonapi:
version: '1.0'
data:
id: '991836'
uuid: 1eda3cbb-983b-6a4a-b395-6a0440190584
orderUuid: 1ed9f5cc-ce42-625a-a8f1-b6ea0809b6f7
provider: ups
currency: EUR
refund: €12.00
'401':
description: Unauthorized
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: &id023
errors:
type: array
uniqueItems: true
items:
type: object
properties:
code:
description: An application-specific error code, expressed as a string value.
type: string
detail:
description: A human-readable explanation specific to this occurrence of the problem.
type: string
status:
description: The HTTP status code applicable to this problem, expressed as a string value.
type: string
title:
description: The HTTP status code description applicable to this problem
type: string
source:
type: object
description: Optional object pointing towards the problematic field
properties:
pointer:
type: string
description: The field key
meta:
description: Non-standard meta-information that can not be represented as an attribute or relationship.
type: object
additionalProperties: true
additionalProperties: false
jsonapi:
description: An object describing the server's implementation
type: object
properties: *id022
additionalProperties: false
required: &id024
- errors
example:
jsonapi:
version: '1.0'
errors:
- detail: Unauthorized
status: '401'
'403':
description: '[Forbidden](https://jsonapi.org/format/#crud-creating-responses-403)'
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: *id023
required: *id024
example:
jsonapi:
version: '1.0'
errors:
- detail: Forbidden
status: '403'
'404':
description: '[Not found](https://jsonapi.org/format/#fetching-resources-responses-404)'
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: *id023
required: *id024
example:
jsonapi:
version: '1.0'
errors:
- detail: Not found
status: '404'
'406':
description: Not Acceptable
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: *id023
required: *id024
example:
jsonapi:
version: '1.0'
errors:
- detail: Not Acceptable
status: '406'
'415':
description: Unsupported Media Type
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: *id023
required: *id024
example:
jsonapi:
version: '1.0'
errors:
- detail: Unsupported Media Type
status: '415'
'422':
description: 'Unprocessable Entity : Data provided are invalid'
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: *id023
required: *id024
example:
jsonapi:
version: string
errors:
- detail: The field is required.
source:
pointer: data.attributes.field
status: '422'
title: Unprocessable Content
/api/v1/orders/{order}/ship/schedule-pickup:
post:
summary: Schedule Pickup for order
operationId: ship-internal-order-schedule-pickup
description: Use this endpoint for scheduling a pickup for the order
tags:
- Shipping
parameters:
- name: Accept
in: header
description: application/vnd.api+json
schema:
type: string
default: application/vnd.api+json
- name: order
in: path
required: true
schema:
type: string
description: '[resource object identifier (uuid)](https://jsonapi.org/format/#document-resource-object-identification)'
format: uuid
responses:
'200':
description: Order Resource
content:
application/vnd.api+json:
schema:
title: Order Get
type: object
additionalProperties: false
examples:
- jsonapi:
version: '1.0'
data:
type: orders
id: 1ecb023e-7ec0-6d5c-a477-0242ac170007
attributes:
masterOrderId: a35ec01f-d2b7-4124-a7ed-c82320c629fa
status: shipped
reference: 3434273911
brandCurrency: EUR
brandTotalAmount: 12588
brandTotalAmountVat: 693
brandTotalAmountWithVat: 13281
shippingMethod: ankorstore
shippingOverview:
availableShippingMethods:
- custom
- ankorstore
shipToAddress:
name: John Smith
organisationName: Test Retailer
street: Test Street
city: Roma
postalCode: '00222'
countryCode: IT
expectedShippingDates:
minimum: '2022-03-28T00:00:00+00:00'
maximum: '2022-03-30T23:59:59+00:00'
updatedMaximum: '2022-04-27T23:59:59+00:00'
provider: ups
tracking: null
latestQuote:
id: 5cc76f26-0f5d-1ecb-a0d6-0242ac170009
provider: ups
parcels:
- length: 50
width: 100
height: 50
weight: 10000
distanceUnit: cm
massUnit: g
trackedPackage:
labelUrl: https://www.ankorstore.com/api/v1/orders/1ecb023e-7ec0-6d5c-a477-0242ac170007/shipping-labels/335654/pdf
eta: null
trackingNumber: 1Z8A76E49136380279
trackingLink: https://www.ups.com/track?tracknum=1Z8A76E49136380279&requester=WT/trackdetails
currentStatus:
status: UNKNOWN
statusDetails: null
updatedAt: '2022-03-28T15:35:19+00:00'
location:
city: null
state: null
zip: null
country: null
- length: 75
width: 50
height: 50
weight: 5200
distanceUnit: cm
massUnit: g
trackedPackage:
labelUrl: https://www.ankorstore.com/api/v1/orders/1ecb023e-7ec0-6d5c-a477-0242ac170007/shipping-labels/335655/pdf
eta: null
trackingNumber: 1Z8A76E49137225882
trackingLink: https://www.ups.com/track?tracknum=1Z8A76E49137225882&requester=WT/trackdetails
currentStatus:
status: UNKNOWN
statusDetails: null
updatedAt: '2022-03-28T15:35:19+00:00'
location:
city: null
state: null
zip: null
country: null
transaction:
pickup:
pickupDate: '2022-03-30T00:00:00+00:00'
closeTime: '15:00:00'
readyTime: 09:00:00
externalReferenceId: 2929602E9CP
tracking:
eta: null
trackingNumber: 1Z8A76E49136380279
trackingLink: https://www.ups.com/track?tracknum=1Z8A76E49136380279&requester=WT/trackdetails
currentStatus:
status: UNKNOWN
statusDetails: null
updatedAt: '2022-03-28T15:35:19+00:00'
location:
city: null
state: null
zip: null
country: null
brandRejectReason: null
retailerRejectReason: null
retailerCancellationRequestReason: null
billingName: Charles Attan
billingOrganisationName: Jumbo
billingStreet: Kortricklaan 101
billingPostalCode: 8121 GW
billingCity: Arnhem
billingCountryCode: NL
submittedAt: '2022-02-02T20:15:05.000000Z'
shippedAt: '2022-02-09T15:05:27.000000Z'
brandPaidAt: null
createdAt: '2022-02-02T19:42:31.000000Z'
updatedAt: '2022-03-11T08:57:56.000000Z'
relationships:
retailer:
data:
type: retailers
id: 092b63ce-c5b9-1eca-b05f-0242ac170007
included:
- type: retailers
id: 092b63ce-c5b9-1eca-b05f-0242ac170007
attributes:
companyName: null
storeName: TEST RETAILER
storeUrl: null
email: test-retailer@gmail.com
firstName: Marie-France
lastName: DESCHAMPS
taxNumber: '819470824'
vatNumber: FR58819470824
eoriNumber: null
phoneNumberE164: '+33688615593'
businessIdentifier: '819470824'
createdAt: '2020-06-19T11:59:30.000000Z'
updatedAt: '2020-06-21T15:27:39.000000Z'
properties:
data:
description: The resource object for Order
type: object
additionalProperties: false
title: Order Resource
properties:
type:
type: string
default: orders
id:
type: string
description: '[resource object identifier (uuid)](https://jsonapi.org/format/#document-resource-object-identification)'
format: uuid
attributes:
type: object
additionalProperties: false
properties:
masterOrderId:
type: string
description: The identifier of the linked master order
format: uuid
status:
type: string
example: ankor_confirmed
enum:
- ankor_confirmed
- rejected
- brand_confirmed
- shipping_labels_generated
- fulfillment_requested
- shipped
- reception_refused
- received
- invoiced
- brand_paid
- cancelled
reference:
type: integer
description: The order reference used on shipping labels, communication etc
brandCurrency:
type: string
description: The currency the brand is paid in
brandNetAmount:
description: The amount the brand is paid (total - fees - shipping cost + shipping refund). You may find the Ankorstore fees and the other amounts by including the orders billing items.
type: integer
brandTotalAmount:
description: The total of all order items not including VAT
type: integer
brandTotalAmountVat:
description: The total VAT of all order items
type: integer
brandTotalAmountWithVat:
description: The total of all order items including VAT
type: integer
shippingMethod:
type:
- 'null'
- string
description: The chosen shipping method after going through the shipping process
enum:
- ankorstore
- custom
- null
shippingOverview:
title: Order Resource -> Shipping Overview
description: Contains all information related to either shipping method (`ankorstore` or `custom`). This field is ONLY included when fetching a single order at a time.
type: object
properties:
availableShippingMethods:
type: array
description: Available shipping methods to use. Custom is ship with your own carrier outside of Ankorstore.
items:
enum:
- ankorstore
- custom
shipToAddress:
type: object
description: The address the order needs to be shipped to
required:
- street
- city
- postalCode
properties:
name:
type:
- 'null'
- string
description: The first and last name of the recipient
organisationName:
type:
- 'null'
- string
description: The organisational name of the recipient
street:
type:
- 'null'
- string
city:
type:
- 'null'
- string
postalCode:
type:
- 'null'
- string
countryCode:
type:
- 'null'
- string
expectedShippingDates:
type: object
description: The minimum and maximum expected shipping dates
required:
- minimum
- maximum
properties:
minimum:
type: string
format: datetime
maximum:
type: string
format: datetime
updatedMaximum:
type:
- 'null'
- string
format: datetime
provider:
type:
- 'null'
- string
description: The company providing the shipping service
enum:
- ups
- tnt
- gls
- dpd
- dhl
- dhl_express
- colissimo
- chronopost
- null
tracking:
type:
- 'null'
- object
description: Tracking details of the order
properties:
number:
type: string
link:
type: string
format: url
description: A URL to view the tracking status
latestQuote:
description: 'The quote is the price of the parcel(s) shipping.
If this object is null then no quote has been generated.'
type:
- 'null'
- object
properties:
id:
type: string
description: Id of the last quote generated. Every time a ship call is done, a new calculation is made based on parcels dimensions and weight sent
provider:
type: string
enum:
- custom
- ups
description: 'Provider responsible for the calculation. If custom, the calculation is done by Ankorstore and refunded.
If any other, the calculation is done by the provider and the shipping price is covered by Ankorstore (most of the case, see shippingCostsOverview section).'
rateProvider:
type: string
description: The provider of the rate for `rateAmount`.
enum:
- ups
- ankorstore
rateAmount:
type: object
description: Amount calculated for the parcels provided.
properties:
amount:
type: integer
description: Lowest denomination of the currency this amount belongs to.
currency:
type: string
shippingCostsOverview:
type: object
description: Overview of costs related to shipping. This object is displayed only if a shipping cost fee or a refund exists
properties:
amount:
type: integer
description: Lowest denomination of the currency this amount belongs to.
currency:
type: string
type:
type: string
enum:
- refund
- fee
description: 'Type of shipping costs:
If type = `refund` the amount will be refunded to the brand (added to brand net amount).
if type = `fee` the amount will be subtracted from brand net amount as a contribution to shipping costs.'
required:
- id
- provider
parcels:
type: array
uniqueItems: true
items:
description: Shipping Label Parcel
type: object
properties:
length:
type: integer
maximum: 274
width:
type: integer
maximum: 274
height:
type: integer
maximum: 274
distanceUnit:
type: string
description: The unit of distance
enum:
- cm
weight:
type: integer
minimum: 1
maximum: 30000
massUnit:
type: string
description: The unit of mass
enum:
- g
trackedPackage:
type:
- 'null'
- object
description: The tracking per parcel
properties:
labelUrl:
description: The URL to download the shipping label
type:
- 'null'
- string
format: url
eta:
type:
- 'null'
- string
format: datetime
trackingNumber:
type: string
trackingLink:
type: string
currentStatus:
type: object
properties: &id025
status:
type: string
description: The current status of the order/parcel
enum:
- UNKNOWN
- PRE_TRANSIT
- DELIVERED
- RETURNED
- FAILURE
statusDetails:
description: Human readable version of status
type:
- string
- 'null'
updatedAt:
type: string
description: Last time the status was updated
format: datetime
location:
type: object
description: Last known location
properties:
city:
type:
- 'null'
- string
state:
type:
- 'null'
- string
zip:
type:
- 'null'
- string
country:
type:
- 'null'
- string
required:
- labelUrl
- eta
- trackingLink
- currentStatus
required:
- length
- width
- height
- distanceUnit
- weight
- massUnit
- trackedPackage
transaction:
type:
- 'null'
- object
properties:
pickup:
description: The scheduled pickup, requires an API call to be made after the shipping labels have been generated.
type:
- 'null'
- object
required:
- pickupDate
- closeTime
- readyTime
- externalReferenceId
properties:
pickupDate:
type: string
format: datetime
description: The date of the pickup
readyTime:
type: string
description: 'Opening time of pickup Eg: 10:00:00'
closeTime:
type: string
description: 'Close time (pickup required to happen before this time) Eg: 13:00:00'
externalReferenceId:
type: string
description: The reference number for this pickup
tracking:
description: The tracking details for the overall shipment
type: object
properties:
eta:
type:
- 'null'
- string
format: datetime
description: The estimated time of arrival for the order
trackingNumber:
type: string
description: The tracking number of the order
trackingLink:
type: string
format: url
description: The tracking link for the order
currentStatus:
type: object
properties: *id025
required:
- pickup
- tracking
required:
- availableShippingMethods
- shipToAddress
- expectedShippingDates
brandRejectReason:
type:
- 'null'
- string
description: The reason the brand has given for rejecting the order
retailerRejectReason:
type:
- 'null'
- string
description: The reason the retailer rejected the reception of the order
retailerCancellationRequestReason:
type:
- 'null'
- string
description: The reason the retailer has given for a cancellation request
billingName:
type:
- 'null'
- string
description: The billing address name
billingOrganisationName:
type:
- 'null'
- string
description: The billing address organisation name
billingStreet:
type:
- 'null'
- string
description: The billing address street name
billingPostalCode:
type:
- 'null'
- string
description: The billing address postal code
billingCity:
type:
- 'null'
- string
description: The billing address city
billingCountryCode:
type:
- 'null'
- string
description: The billing address country code - ISO format
submittedAt:
type: string
format: datetime
description: The timestamp of when the order was submitted (order is placed)
shippedAt:
type:
- 'null'
- string
format: datetime
description: The timestamp of when the order was shipped
brandPaidAt:
type:
- 'null'
- string
format: datetime
description: The timestamp of when the brand was paid
createdAt:
type: string
format: datetime
description: (deprecated) The timestamp of when the order was created (before retailer payment)
updatedAt:
type: string
format: datetime
description: The timestamp of when the order was updated (does not include other resources)
relationships:
type: object
properties:
retailer:
description: Related Retailer Resource
type: object
properties:
data:
allOf:
- description: Resource identification present in Resource Objects and Resource Identifier Objects.
type: object
required: &id026
- id
- type
properties: &id027
id:
type: string
description: '[resource object identifier (uuid)](https://jsonapi.org/format/#document-resource-object-identification)'
format: uuid
type:
type: string
description: '[resource object type](https://jsonapi.org/format/#document-resource-object-identification)'
meta:
description: Non-standard meta-information that can not be represented as an attribute or relationship.
type: object
additionalProperties: true
additionalProperties: false
- type: object
properties:
type:
const: retailers
billingItems:
description: Related Billing Item Resources
type: object
properties:
data:
type: array
uniqueItems: true
items:
allOf:
- description: Resource identification present in Resource Objects and Resource Identifier Objects.
type: object
required: *id026
properties: *id027
additionalProperties: false
- type: object
properties:
type:
const: billing-items
orderItems:
description: Related Order Item Resources
type: object
properties:
data:
type: array
uniqueItems: true
items:
allOf:
- description: Resource identification present in Resource Objects and Resource Identifier Objects.
type: object
required: *id026
properties: *id027
additionalProperties: false
- type: object
properties:
type:
const: order-items
orderItems-productOption:
description: 'Schema: Order Item -> Product Option Resource'
type: object
properties:
data:
description: Resource identification present in Resource Objects and Resource Identifier Objects.
type: object
required: *id026
properties: *id027
additionalProperties: false
orderItems-productOption-product:
description: 'Schema: Order Item -> Product Option Resource -> Product'
type: object
properties:
data:
description: Resource identification present in Resource Objects and Resource Identifier Objects.
type: object
required: *id026
properties: *id027
additionalProperties: false
orderItems-productVariant:
description: 'Schema: Order Item -> Product Variant Resource'
type: object
properties:
data:
description: Resource identification present in Resource Objects and Resource Identifier Objects.
type: object
required: *id026
properties: *id027
additionalProperties: false
orderItems-productVariant-product:
description: 'Schema: Order Item -> Product Variant Resource -> Product'
type: object
properties:
data:
description: Resource identification present in Resource Objects and Resource Identifier Objects.
type: object
required: *id026
properties: *id027
additionalProperties: false
required:
- type
- id
included:
description: To reduce the number of HTTP requests, servers **MAY** allow responses that include related resources along with the requested primary resources. Such responses are called `compound documents`.
type: array
uniqueItems: true
items:
anyOf:
- title: Retailer Resource
type: object
additionalProperties: false
example:
type: retailers
id: 092b63ce-c5b9-1eca-b05f-0242ac170007
attributes:
companyName: null
storeName: TEST RETAILER
storeUrl: null
email: retailer@example.com
firstName: John
lastName: Smith
taxNumber: '12345678'
vatNumber: FR123456789
eoriNumber: null
phoneNumberE164: '+3345656456456'
businessIdentifier: '3454353455'
createdAt: '2020-06-19T11:59:30.000000Z'
updatedAt: '2020-06-21T15:27:39.000000Z'
properties:
type:
type: string
default: retailers
id:
type: string
description: '[resource object identifier (uuid)](https://jsonapi.org/format/#document-resource-object-identification)'
format: uuid
attributes:
type: object
properties:
companyName:
type:
- string
- 'null'
description: The registered company of the retailer
storeName:
type: string
description: The name of the store
storeUrl:
type:
- string
- 'null'
format: url
description: The store's website
email:
type: string
format: email
description: Contact email for the retailer
firstName:
type: string
description: Retailer's first name
lastName:
type: string
description: Retailer's last name
taxNumber:
type: string
description: Retailer's tax number
vatNumber:
type: string
description: Retailer's VAT number
eoriNumber:
type:
- string
- 'null'
description: Retailer's EORI number
phoneNumberE164:
type: string
description: Retailer's phone number (E164 format)
businessIdentifier:
type: string
description: The tax field to use - tax or vat number. If the retailer is a sole trader, this field will instead be their sole trading number
createdAt:
type: string
format: datetime
description: The timestamp when the retailer was created
updatedAt:
type: string
format: datetime
description: The timestamp when the retailer was updated
relationships:
type: object
properties:
orders:
description: The order's belonging to a retailer. See [Order Resource](https://ankorstore.github.io/api-docs/#tag/Order/operation/list-orders)
type: object
properties:
data:
description: An array of objects each containing `type` and `id` members for to-many relationships.
type: array
items: &id028
description: Resource identification present in Resource Objects and Resource Identifier Objects.
type: object
required: *id026
properties: *id027
additionalProperties: false
uniqueItems: true
required:
- type
- id
- attributes
- title: Order Item Resource
type: object
additionalProperties: false
examples:
- type: order-items
id: 62b263a8-00e1-1ecb-98d2-0242ac170007
attributes:
brandCurrency: EUR
quantity: 1
multipliedQuantity: 12
vatRate: 5.5
brandAmount: 3996
brandAmountVat: 220
brandAmountWithVat: 4216
brandUnitPrice: 333
createdAt: '2022-02-02T19:43:14.000000Z'
updatedAt: '2022-02-02T19:43:14.000000Z'
relationships:
productOption:
data:
type: productOption
id: '114135'
properties:
type:
type: string
default: order-items
id:
type: string
description: '[resource object identifier (uuid)](https://jsonapi.org/format/#document-resource-object-identification)'
format: uuid
attributes:
type: object
properties:
brandCurrency:
type: string
description: The currency of the amounts for the brand
quantity:
type: integer
description: The ordered quantity of the product
multipliedQuantity:
type: integer
description: Some products are sold in fixed quantities, e.g a case of 6 wine bottles. If the quantity was 2, the multiplied quantity of wine bottles would be 12 (6 x 2). This "unitMultiplier" can be found on the product.
vatRate:
type: number
format: float
description: The VAT percentage rate of the order item (0-100)
brandAmount:
description: The amount due to the brand for this item
type: integer
brandAmountVat:
description: The VAT amount due to the brand for this item
type: integer
brandAmountWithVat:
description: The amount + VAT due to the brand for this item
type: integer
brandUnitPrice:
description: The cost of a single unit of this item
type: integer
createdAt:
type: string
format: datetime
description: The timestamp this order item was created
updatedAt:
type: string
format: datetime
description: The timestamp this order item was updated
relationships:
type: object
properties:
productOptions:
description: 'Reference: Product Option Resource'
type: object
properties:
data:
description: An array of objects each containing `type` and `id` members for to-many relationships.
type: array
items: *id028
uniqueItems: true
meta:
description: Non-standard meta-information that can not be represented as an attribute or relationship.
type: object
additionalProperties: true
required:
- type
- id
- title: Billing Item Resource
type: object
additionalProperties: false
examples:
- type: billing-items
id: f1dd6498-c5f8-1eca-a6b7-0242ac170007
attributes:
type: brand_platform_fees
currency: EUR
vatRate: 20
currencyRate: 1
amount: -1259
amountVat: -252
amountWithVat: -1511
createdAt: '2022-02-02T19:42:32.000000Z'
updatedAt: '2022-02-02T20:15:06.000000Z'
properties:
type:
type: string
default: billing-items
id:
type: string
description: '[resource object identifier (uuid)](https://jsonapi.org/format/#document-resource-object-identification)'
format: uuid
attributes:
type: object
properties:
type:
description: 'The `brand_platform_fees` is a commission for using our platform. It will be a negative amount which reduces the total amount paid to the brand.
The `brand_new_customer_fees` is a commission on the first Order between brand and retailer. It will be a negative amount which reduces the total amount paid to the brand.
The `brand_payment_fees` is a commission to guarantee Payment for brand. It will be a negative amount which reduces the total amount paid to the brand.
The `brand_fast_payment` is a commission for using our fast payment feature. It will be a negative amount which reduces the total amount paid to the brand.
The `brand_flat_shipping_fees` is the shipping cost collected from the retailer when the order is below brand Franco. It is positive and adds to the total amount paid.
The `brand_shipping_fees` is a shipping cost. This type reduces the amount paid to the brand (but will be a positive value).
The `brand_shipping_fees_refund` is a refund from Ankorstore to brand for shipping. This type is positive and adds to the total amount paid.
The `brand_shipping_fees_discount` is a referral shipping offer. This type is positive and adds to the total amount paid.
There still might also be legacy types which are not listed here but they will be removed in the nearest future.
'
type: string
enum:
- brand_platform_fees
- brand_new_customer_fees
- brand_payment_fees
- brand_fast_payment
- brand_flat_shipping_fees
- brand_shipping_fees
- brand_shipping_fees_refund
- brand_shipping_fees_discount
currency:
type: string
description: The currency of the billing item
vatRate:
type: number
format: float
description: The VAT percentage rate of the billing item, (from 0 - 100).
currencyRate:
type: number
format: float
description: If the currency is not in EUR, this is the conversion rate used
amount:
description: The amount for the billing item
type: integer
amountVat:
description: The VAT amount for the billing item
type: integer
amountWithVat:
description: The amount including VAT for the billing item
type: integer
createdAt:
type: string
format: datetime
description: The timestamp when the billing item was created
updatedAt:
type: string
format: datetime
description: The timestamp when the billing item was updated
required:
- type
- id
- title: Product Option Resource
description: A unique option for a product
type: object
additionalProperties: false
examples:
- type: product-options
id: 7ec06d5c-023e-1ecb-a477-0242ac170007
attributes:
name: Test Product Option
sku: '051100'
ian: '3770005999506'
outOfStock: false
createdAt: '2020-08-27T14:29:15.000000Z'
updatedAt: '2021-10-04T12:03:31.000000Z'
archivedAt: null
relationships:
product:
data:
type: products
id: 7f4665f6-023e-1ecb-a4b2-0242ac170007
properties:
type:
type: string
default: product-options
id:
type: string
description: '[resource object identifier (uuid)](https://jsonapi.org/format/#document-resource-object-identification)'
format: uuid
attributes:
type: object
properties:
name:
type: string
description: The name of the option
sku:
type: string
description: The SKU of the option
ian:
type:
- 'null'
- string
description: The IAN (EAN) of the option, can be null
outOfStock:
type: boolean
description: Whether the product is in stock or not
createdAt:
type: string
format: datetime
description: Timestamp of when this option was created
updatedAt:
type: string
format: datetime
description: Timestamp of when this option was updated
archivedAt:
type:
- 'null'
- string
description: Timestamp of when this option was archived
relationships:
type: object
properties:
product:
description: 'Reference: Product Resource'
type: object
properties:
data:
description: Resource identification present in Resource Objects and Resource Identifier Objects.
type: object
required: *id026
properties: *id027
additionalProperties: false
required:
- type
- id
- title: Product Variant Resource
description: Variant details for a given product. Unique products will have one single variant.
type: object
additionalProperties: false
examples:
- type: product-variants
id: 2171bdc1-fa01-44fa-9342-d99bd1c2befa
attributes:
name: Test Product Variant
sku: Product-Variant-001
ian: '1924859325863'
createdAt: '2020-08-27T14:29:15.000000Z'
updatedAt: '2021-10-04T12:03:31.000000Z'
archivedAt: null
retailPrice: 800
wholesalePrice: 500
originalWholesalePrice: 500
availableQuantity: 125
reservedQuantity: 25
stockQuantity: 150
isAlwaysInStock: false
inventoryPolicy: deny
fulfillableId: 8f066352-67cb-1efa-bddb-9e3047198b2e
availableAt: '2028-01-01T00:00:00.000000Z'
images:
- order: 1
url: https://example.com/image1.jpg
- order: 2
url: https://example.com/image2.jpg
relationships:
product:
data:
type: products
id: c8466a3c-4fb8-4474-a86f-20f10d14314f
properties:
type:
type: string
default: product-variants
id:
type: string
description: '[resource object identifier (uuid)](https://jsonapi.org/format/#document-resource-object-identification)'
format: uuid
attributes:
type: object
properties:
name:
type: string
description: The name of the product variant
sku:
type: string
description: The SKU of the product variant
ian:
type:
- 'null'
- string
description: The IAN (EAN) of the product variant, can be null
createdAt:
type: string
format: datetime
description: Timestamp of when this product variant was created
updatedAt:
type: string
format: datetime
description: Timestamp of when this product variant was updated
archivedAt:
type:
- 'null'
- string
description: Timestamp of when this product variant was archived
retailPrice:
description: The suggested retail price of the product
type: integer
wholesalePrice:
description: The wholesale price after the discount rate is applied
type: integer
originalWholesalePrice:
description: The original wholesale price set by the brand
type: integer
availableQuantity:
type:
- 'null'
- integer
description: Number of units that are available to order
reservedQuantity:
type: integer
description: Number of units in stock that are reserved
stockQuantity:
type:
- 'null'
- integer
description: Total number of units in stock (available + reserved)
isAlwaysInStock:
type: boolean
description: True if the product is always in stock, false otherwise
inventoryPolicy:
type: string
description: 'Sell-when-out-of-stock policy. `deny` (default) rejects orders once
available stock reaches zero; `continue` allows the variant to accept
orders even when available stock is zero or negative. `continue`
requires `isAlwaysInStock=false`.
'
enum:
- deny
- continue
default: deny
fulfillableId:
type:
- 'null'
- string
format: uuid
description: Resource ID used for interacting with the fulfillment service
availableAt:
type: string
nullable: true
format: date
description: Shipping date(in future) of a preorder product e.g. 2028-12-01
images:
type: array
description: List of variant images ordered by display priority
items:
type: object
properties:
order:
type: integer
description: Display order of the image (lower is higher priority)
url:
type: string
description: URL of the variant image
relationships:
type: object
properties:
product:
description: 'Reference: Product Resource'
type: object
properties:
data:
description: Resource identification present in Resource Objects and Resource Identifier Objects.
type: object
required: *id026
properties: *id027
additionalProperties: false
required:
- type
- id
- title: Product Resource
description: The resource object for Product
type: object
additionalProperties: false
properties:
type:
type: string
default: products
id:
type: string
description: '[resource object identifier (uuid)](https://jsonapi.org/format/#document-resource-object-identification)'
format: uuid
attributes:
type: object
properties:
name:
type: string
description: The name of the product
description:
type: string
description: The description of the product
language:
type: string
description: The language of the title and description
dimensions:
type: string
description: The human readable dimensions of the product
netWeight:
type: string
description: The weight of the product itself
capacity:
type: string
description: eg. Capacity in weight eg 100g
position:
type: number
description: The position of the product in the brands catalog, lower the higher it is
unitMultiplier:
type: integer
description: How many products are shipped together, ie a case of 6 wine bottles. Presented options then would be 6, 12, 18 etc.
vatRate:
type: number
format: float
description: The VAT rate of the product
discountRate:
description: The percentage discount if a brand is offering one (0 - 1)
type: number
format: float
productTypeId:
description: 'Product Type ID
Deprecation Notice This attribute is deprecated and will be removed in a future release.
We strongly encourage all users to update their integrations accordingly to ensure continued compatibility. If you have any questions or need assistance, please contact support.
'
type: number
format: integer
active:
type: boolean
description: Whether the product is active or not
outOfStock:
type: boolean
description: Whether the product is out of stock or not
archived:
type: boolean
description: Whether the product is archived or not
retailPrice:
description: The suggested retail price of the product
type: integer
wholesalePrice:
description: The wholesale price after the discount rate is applied
type: integer
originalWholesalePrice:
description: The original wholesale price set by the brand
type: integer
createdAt:
type: string
format: datetime
description: The timestamp when the product was created
indexedAt:
type:
- 'null'
- string
format: datetime
description: The timestamp when the product was indexed
updatedAt:
type: string
format: datetime
description: The timestamp when the product was updated
images:
type: array
description: List of product images ordered by display priority
items:
type: object
properties:
order:
type: integer
description: Display order of the image (lower is higher priority)
url:
type: string
description: URL of the product image
tags:
type: array
description: List of tags associated with the product
items:
type: string
relationships:
type: object
properties:
productOption:
description: 'Reference: Product Option Resource'
type: object
properties:
data:
description: An array of objects each containing `type` and `id` members for to-many relationships.
type: array
items: *id028
uniqueItems: true
productVariant:
description: 'Reference: Product Variant Resource'
type: object
properties:
data:
description: An array of objects each containing `type` and `id` members for to-many relationships.
type: array
items: *id028
uniqueItems: true
required:
- type
- id
jsonapi:
description: An object describing the server's implementation
type: object
properties: &id029
version:
type: string
meta:
description: Non-standard meta-information that can not be represented as an attribute or relationship.
type: object
additionalProperties: true
additionalProperties: false
required:
- data
'401':
description: Unauthorized
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: &id030
errors:
type: array
uniqueItems: true
items:
type: object
properties:
code:
description: An application-specific error code, expressed as a string value.
type: string
detail:
description: A human-readable explanation specific to this occurrence of the problem.
type: string
status:
description: The HTTP status code applicable to this problem, expressed as a string value.
type: string
title:
description: The HTTP status code description applicable to this problem
type: string
source:
type: object
description: Optional object pointing towards the problematic field
properties:
pointer:
type: string
description: The field key
meta:
description: Non-standard meta-information that can not be represented as an attribute or relationship.
type: object
additionalProperties: true
additionalProperties: false
jsonapi:
description: An object describing the server's implementation
type: object
properties: *id029
additionalProperties: false
required: &id031
- errors
example:
jsonapi:
version: '1.0'
errors:
- detail: Unauthorized
status: '401'
'403':
description: '[Forbidden](https://jsonapi.org/format/#crud-creating-responses-403)'
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: *id030
required: *id031
example:
jsonapi:
version: '1.0'
errors:
- detail: Forbidden
status: '403'
'406':
description: Not Acceptable
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: *id030
required: *id031
example:
jsonapi:
version: '1.0'
errors:
- detail: Not Acceptable
status: '406'
'415':
description: Unsupported Media Type
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: *id030
required: *id031
example:
jsonapi:
version: '1.0'
errors:
- detail: Unsupported Media Type
status: '415'
'422':
description: 'Unprocessable Entity : Data provided are invalid'
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: *id030
required: *id031
example:
jsonapi:
version: string
errors:
- detail: The field is required.
source:
pointer: data.attributes.field
status: '422'
title: Unprocessable Content
'500':
description: Internal Server Error
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: *id030
required: *id031
example:
jsonapi:
version: string
errors:
- code: INTERNAL_ERROR
detail: 'Cannot ship the order: {...}'
status: '500'
requestBody:
content:
application/vnd.api+json:
schema:
type: object
properties:
order:
oneOf:
- type: object
description: Tracking Provider + Number
required:
- pickupDate
- pickupTime
- pickupAddress
properties:
pickupDate:
type: string
description: Requested date for the pickup
pickupTime:
description: Time period for the pickup (9-15 or 11-17)
type: string
pickupAddress:
description: Address for the pickup
type: object
examples:
example:
value:
pickupDate: 07-04-2022
pickupTime: 9-15
pickupAddress:
name: John Doe
contactName: John Doe
countryCode: FR
city: Rennes
postalCode: '35000'
street: 1 rue des lilas
phoneNumber: '+33700000000'
/api/v1/brands/shipping-settings/{shippingSettingsId}:
get:
summary: Get Brand's shipping settings
operationId: get-brands-shipping-settings
description: Gets Brand's shipping settings
parameters:
- name: Accept
in: header
description: application/vnd.api+json
schema:
type: string
default: application/vnd.api+json
- schema:
type: string
format: uuid
name: shippingSettingsId
in: path
required: true
description: Shipping settings ID (same as Brand UUID)
tags:
- Shipping
security:
- ProductionOAuth2ClientCredentials: []
- TestOauth2ClientCredentials: []
responses:
'200':
description: Single shipping settings resource response
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
title: ShippingSettingsResource
type: object
properties:
type:
type: string
description: '[resource object type](https://jsonapi.org/format/#document-resource-object-identification)'
id:
type: string
description: '[resource object identifier (uuid)](https://jsonapi.org/format/#document-resource-object-identification)'
format: uuid
attributes:
type: object
required:
- publicAddress
- shippingAddress
- billingAddress
- eoriNumber
- lucidNumber
- averageLeadTime
- whitelistCountries
properties:
publicAddress:
type: object
properties:
street:
type: string
postalCode:
type: string
city:
type: string
countryCode:
type: string
required:
- street
- postalCode
- city
- countryCode
shippingAddress:
type: object
properties:
street:
type: string
postalCode:
type: string
city:
type: string
countryCode:
type: string
required:
- street
- postalCode
- city
- countryCode
billingAddress:
type: object
properties:
street:
type: string
postalCode:
type: string
city:
type: string
countryCode:
type: string
required:
- street
- postalCode
- city
- countryCode
eoriNumber:
type: string
lucidNumber:
type: string
averageLeadTime:
type: string
whitelistCountries:
type: array
items:
type: string
description: List of country iso codes
required:
- type
- id
- attributes
jsonapi:
description: An object describing the server's implementation
type: object
properties: &id032
version:
type: string
meta:
description: Non-standard meta-information that can not be represented as an attribute or relationship.
type: object
additionalProperties: true
additionalProperties: false
required:
- data
'401':
description: Unauthorized
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: &id033
errors:
type: array
uniqueItems: true
items:
type: object
properties:
code:
description: An application-specific error code, expressed as a string value.
type: string
detail:
description: A human-readable explanation specific to this occurrence of the problem.
type: string
status:
description: The HTTP status code applicable to this problem, expressed as a string value.
type: string
title:
description: The HTTP status code description applicable to this problem
type: string
source:
type: object
description: Optional object pointing towards the problematic field
properties:
pointer:
type: string
description: The field key
meta:
description: Non-standard meta-information that can not be represented as an attribute or relationship.
type: object
additionalProperties: true
additionalProperties: false
jsonapi:
description: An object describing the server's implementation
type: object
properties: *id032
additionalProperties: false
required: &id034
- errors
example:
jsonapi:
version: '1.0'
errors:
- detail: Unauthorized
status: '401'
'403':
description: '[Forbidden](https://jsonapi.org/format/#crud-creating-responses-403)'
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: *id033
required: *id034
example:
jsonapi:
version: '1.0'
errors:
- detail: Forbidden
status: '403'
'404':
description: '[Not found](https://jsonapi.org/format/#fetching-resources-responses-404)'
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: *id033
required: *id034
example:
jsonapi:
version: '1.0'
errors:
- detail: Not found
status: '404'
'406':
description: Not Acceptable
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: *id033
required: *id034
example:
jsonapi:
version: '1.0'
errors:
- detail: Not Acceptable
status: '406'
'415':
description: Unsupported Media Type
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: *id033
required: *id034
example:
jsonapi:
version: '1.0'
errors:
- detail: Unsupported Media Type
status: '415'
patch:
summary: Update Brand's shipping settings
operationId: update-brands-shipping-settings
description: 'Updates Brand''s shipping settings with support for both full and partial updates.
**V1 (Full Updates):** Send all required fields for complete validation (existing behavior)
**V2 (Partial Updates):** Send only the fields you want to update (new capability)
The API automatically detects whether you''re performing a full or partial update based on the fields present in the request.
Partial updates preserve existing values for omitted fields, making it perfect for field-by-field updates.
'
parameters:
- name: Accept
in: header
description: application/vnd.api+json
schema:
type: string
default: application/vnd.api+json
- schema:
type: string
format: uuid
name: shippingSettingsId
in: path
required: true
description: Shipping settings ID (same as Brand UUID)
tags:
- Shipping
security:
- ProductionOAuth2ClientCredentials: []
- TestOauth2ClientCredentials: []
responses:
'200':
description: Single shipping settings resource response
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
title: ShippingSettingsResource
type: object
properties:
type:
type: string
description: '[resource object type](https://jsonapi.org/format/#document-resource-object-identification)'
id:
type: string
description: '[resource object identifier (uuid)](https://jsonapi.org/format/#document-resource-object-identification)'
format: uuid
attributes:
type: object
required:
- publicAddress
- shippingAddress
- billingAddress
- eoriNumber
- lucidNumber
- averageLeadTime
- whitelistCountries
properties:
publicAddress:
type: object
properties:
street:
type: string
postalCode:
type: string
city:
type: string
countryCode:
type: string
required:
- street
- postalCode
- city
- countryCode
shippingAddress:
type: object
properties:
street:
type: string
postalCode:
type: string
city:
type: string
countryCode:
type: string
required:
- street
- postalCode
- city
- countryCode
billingAddress:
type: object
properties:
street:
type: string
postalCode:
type: string
city:
type: string
countryCode:
type: string
required:
- street
- postalCode
- city
- countryCode
eoriNumber:
type: string
lucidNumber:
type: string
averageLeadTime:
type: string
whitelistCountries:
type: array
items:
type: string
description: List of country iso codes
required:
- type
- id
- attributes
jsonapi:
description: An object describing the server's implementation
type: object
properties: &id035
version:
type: string
meta:
description: Non-standard meta-information that can not be represented as an attribute or relationship.
type: object
additionalProperties: true
additionalProperties: false
required:
- data
'401':
description: Unauthorized
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: &id036
errors:
type: array
uniqueItems: true
items:
type: object
properties:
code:
description: An application-specific error code, expressed as a string value.
type: string
detail:
description: A human-readable explanation specific to this occurrence of the problem.
type: string
status:
description: The HTTP status code applicable to this problem, expressed as a string value.
type: string
title:
description: The HTTP status code description applicable to this problem
type: string
source:
type: object
description: Optional object pointing towards the problematic field
properties:
pointer:
type: string
description: The field key
meta:
description: Non-standard meta-information that can not be represented as an attribute or relationship.
type: object
additionalProperties: true
additionalProperties: false
jsonapi:
description: An object describing the server's implementation
type: object
properties: *id035
additionalProperties: false
required: &id037
- errors
example:
jsonapi:
version: '1.0'
errors:
- detail: Unauthorized
status: '401'
'403':
description: '[Forbidden](https://jsonapi.org/format/#crud-creating-responses-403)'
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: *id036
required: *id037
example:
jsonapi:
version: '1.0'
errors:
- detail: Forbidden
status: '403'
'404':
description: '[Not found](https://jsonapi.org/format/#fetching-resources-responses-404)'
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: *id036
required: *id037
example:
jsonapi:
version: '1.0'
errors:
- detail: Not found
status: '404'
'406':
description: Not Acceptable
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: *id036
required: *id037
example:
jsonapi:
version: '1.0'
errors:
- detail: Not Acceptable
status: '406'
'415':
description: Unsupported Media Type
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: *id036
required: *id037
example:
jsonapi:
version: '1.0'
errors:
- detail: Unsupported Media Type
status: '415'
'422':
description: 'Unprocessable Entity : Data provided are invalid'
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: *id036
required: *id037
example:
jsonapi:
version: string
errors:
- detail: The field is required.
source:
pointer: data.attributes.field
status: '422'
title: Unprocessable Content
'500':
description: '[Server Error](https://jsonapi.org/format/#errors)'
content:
application/vnd.api+json:
schema:
type: object
additionalProperties: false
properties: *id036
required: *id037
example:
jsonapi:
version: '1.0'
errors:
- detail: Server Error
status: '500'
requestBody:
content:
application/vnd.api+json:
schema:
type: object
properties:
publicAddress:
type: object
properties:
street:
type: string
example: 123 Main Street
postalCode:
type: string
example: '75001'
city:
type: string
example: Paris
countryCode:
type: string
pattern: ^[A-Z]{2}$
example: FR
required:
- street
- postalCode
- city
- countryCode
description: Public/display address (optional for partial updates)
shippingAddress:
type: object
properties:
street:
type: string
example: 456 Warehouse Ave
postalCode:
type: string
example: '75002'
city:
type: string
example: Paris
countryCode:
type: string
pattern: ^[A-Z]{2}$
example: FR
required:
- street
- postalCode
- city
- countryCode
description: Shipping origin address (optional for partial updates)
billingAddress:
type: object
properties:
street:
type: string
example: 789 Billing Street
postalCode:
type: string
example: '75003'
city:
type: string
example: Paris
countryCode:
type: string
pattern: ^[A-Z]{2}$
example: FR
required:
- street
- postalCode
- city
- countryCode
description: Billing address (optional for partial updates, admin/candidate only)
eoriNumber:
type: string
example: GB123456789000
description: EORI number (required when shipping to/from UK, optional for partial updates)
lucidNumber:
type: string
minLength: 15
maxLength: 15
example: DE1234567890123
description: LUCID number (required when shipping to Germany, optional for partial updates)
averageLeadTime:
type: string
enum:
- 0-2
- 3-5
- 6-10
- 11-20
- 21-30
example: 3-5
description: 'Average lead time range in business days. Must be one of: 0-2, 3-5, 6-10, 11-20, 21-30'
whitelistCountries:
type:
- 'null'
- array
items:
type: string
pattern: ^[A-Z]{2}$
description: List of ISO 3166-1 alpha-2 country codes (optional for partial updates)
example:
- FR
- DE
- GB
additionalProperties: false
examples:
v1_full_update:
summary: V1 - Full Update (Existing Behavior)
description: Complete update with all required fields
value:
publicAddress:
street: 123 Main Street
postalCode: '75001'
city: Paris
countryCode: FR
shippingAddress:
street: 456 Warehouse Ave
postalCode: '75002'
city: Paris
countryCode: FR
billingAddress:
street: 789 Billing Street
postalCode: '75003'
city: Paris
countryCode: FR
eoriNumber: GB123456789000
lucidNumber: DE1234567890123
averageLeadTime: 3-5
whitelistCountries:
- FR
- DE
- GB
v2_partial_single_field:
summary: V2 - Partial Update (Single Field)
description: Update only the average lead time, preserve all other values
value:
averageLeadTime: 0-2
v2_partial_multiple_fields:
summary: V2 - Partial Update (Multiple Fields)
description: Update lead time and whitelist countries
value:
averageLeadTime: 3-5
whitelistCountries:
- FR
- DE
- ES
- IT
v2_partial_address_only:
summary: V2 - Partial Update (Address Only)
description: Update only the public address
value:
publicAddress:
street: 999 New Street
postalCode: '75004'
city: Paris
countryCode: FR
v2_partial_compliance_fields:
summary: V2 - Partial Update (Compliance Fields)
description: Update EORI and LUCID numbers only
value:
eoriNumber: GB987654321000
lucidNumber: DE9876543210987
components:
securitySchemes:
CookieKey:
type: apiKey
name: ankorstore_session
in: cookie