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