Ankorstore Fulfillment API

ℹ️ Here you can find the information and endpoint specification related to fulfillment of the orders. ## 💡 About Fulfillment _Fulfillment_ is the process of preparing and shipping orders to customers via Ankorstore Fulfillment Centers. Brands that use fulfillment send their inventory to a warehouse in advance, and when orders come in, the warehouse picks, packs, and ships on the brand's behalf. ### What does "fulfillable" mean? The concept of a "fulfillable" is _that which is required to prepare and ship a product (variant)_. While a Fulfillment Centre deals exclusively with items, which represents a single item that an employee can pick up and prepare for shipping. A fulfillable is simply a set of one or more items, that together represent a product as ordered. Use the [List Fulfillables](#tag/Fulfillment/operation/fulfillment-list-fulfillable) endpoint to check stock availability for specific product variants before creating orders. For more detailed stock information — including quantities by location, status, and lot — use the [Stock State endpoint](/api/astral/v1/stock/state) from the Ankorstore Stock Tracking and Logistics API (ASTRAL). ### Fulfillments When a _Master Order_ has fulfillment requested, one or more _Fulfillments_ are created. Multiple fulfillments can be associated with a single master order (many-to-one). You can retrieve their details and track progress through the following statuses: | Status | Description | | --- | --- | | `requested` | Fulfillment has been requested for the order | | `created` | Fulfillment has been created in the warehouse system | | `scheduled` | Fulfillment is scheduled for picking | | `released` | Fulfillment has been released for picking | | `shipped` | Fulfillment has been shipped from the warehouse | | `cancelled` | Fulfillment has been cancelled | | `cancellation_requested` | A cancellation has been requested but not yet processed | Pass `?include=statusUpdates` when retrieving a fulfillment to see the full history of status transitions. ### Lots If your products are lot-tracked or expiry-tracked, the [List Lots](#tag/Fulfillment/operation/fulfillment-list-lots) endpoint shows the current lot inventory in the warehouse, including lot numbers, available quantities, and expiry/sell-by dates. You can filter and sort by available quantity, sell-by date range, and product name. ### Fulfillment Costs Use the [Get Fulfillment Costs](#tag/Fulfillment/operation/fulfillment-costs-get-specifications) endpoint to estimate fulfillment costs before committing to an order. Provide the destination country, parcel dimensions, and picking quantity to receive a cost breakdown by category (shipping, pick fees by quantity tier). > ⚠️ The cost estimation does **not** include packing consumables. The actual invoiced amount may differ. ## Replenishments Replenishments are required to send inventory to the warehouse. They follow a specific workflow: ### Replenishment Workflow stateDiagram-v2 direction LR [*] --> created created --> confirmed : Brand confirms confirmed --> sent : Sent to warehouse sent --> delivered : Arrives at warehouse delivered --> received : Items put into stock received --> [*] * **Created**: When a replenishment is initially created, it will be at status `created` and is considered a draft. In this state, it can be edited via PATCH requests or deleted. * **Confirmed**: Once editing is complete, the status should be updated to `confirmed` as part of a PATCH request. At this point, the replenishment information will be sent to the warehouse (asynchronously). * **Sent**: Once the replenishment information is sent to the warehouse, the status changes to `sent`. The replenishment will remain in this status while waiting for delivery. * **Delivered**: When the replenishment physically arrives at the warehouse, its status will be automatically updated to `delivered`. * **Received**: Once the items are put into stock at the warehouse, the status will be updated to `received`. At this stage, receipts are added with the received stock quantities and lots. ### Creating a Replenishment Each replenishment requires a carrier name, shipment type, and a list of items with their fulfillment item IDs and quantities: ```json5 // POST /api/v1/fulfillment/replenishments { "fulfillmentBrandId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "warehouseId": "98765432-abcd-ef01-2345-678901234567", "shippingCarrierName": "DHL", "shipmentType": "PARCEL", // "LTL", "FTL", or "PARCEL" "items": [ { "fulfillmentItemId": "d290f1ee-6c54-4b01-90e6-d701748f0851", "quantity": 100 } ] } ``` After creating a replenishment, update its status to `confirmed` via PATCH when you are ready to notify the warehouse. ### How Fulfillment Connects to Orders The diagram below shows how fulfillment fits into the order lifecycle: graph LR A[Master Order] --> D[Fulfillment 1] A --> E[Fulfillment 2] F[Replenishment] --> G[Warehouse Stock] G --> D G --> E 1. Brands send inventory to the warehouse via _Replenishments_ 2. When fulfillment is requested for a _Master Order_, one or more _Fulfillments_ are created 3. The warehouse picks items from stock and ships each fulfillment 4. Use the fulfillment endpoints to track both your inventory and fulfillment status

OpenAPI Specification

ankorstore-fulfillment-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  version: 1.2.2-oas3.1
  title: Ankorstore Stock Tracking and Logistics Applications Fulfillment 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: Fulfillment
  description: "ℹ️ Here you can find the information and endpoint specification related to fulfillment of the orders.\n\n## \U0001F4A1 About Fulfillment\n\n_Fulfillment_ is the process of preparing and shipping orders to customers via Ankorstore Fulfillment Centers.\nBrands that use fulfillment send their inventory to a warehouse in advance, and when orders come in, the warehouse\npicks, packs, and ships on the brand's behalf.\n\n### What does \"fulfillable\" mean?\n\nThe concept of a \"fulfillable\" is _that which is required to prepare and ship a product (variant)_.\nWhile a Fulfillment Centre deals exclusively with items, which represents a single item that an employee can pick up and prepare for shipping.\nA fulfillable is simply a set of one or more items, that together represent a product as ordered.\n\nUse the [List Fulfillables](#tag/Fulfillment/operation/fulfillment-list-fulfillable) endpoint to check stock\navailability for specific product variants before creating orders. For more detailed stock information —\nincluding quantities by location, status, and lot — use the\n[Stock State endpoint](/api/astral/v1/stock/state) from the Ankorstore Stock Tracking and Logistics API (ASTRAL).\n\n### Fulfillments\n\nWhen a _Master Order_ has fulfillment requested, one or more _Fulfillments_ are created. Multiple fulfillments\ncan be associated with a single master order (many-to-one). You can retrieve their details and track progress\nthrough the following statuses:\n\n| Status | Description |\n| --- | --- |\n| `requested` | Fulfillment has been requested for the order |\n| `created` | Fulfillment has been created in the warehouse system |\n| `scheduled` | Fulfillment is scheduled for picking |\n| `released` | Fulfillment has been released for picking |\n| `shipped` | Fulfillment has been shipped from the warehouse |\n| `cancelled` | Fulfillment has been cancelled |\n| `cancellation_requested` | A cancellation has been requested but not yet processed |\n\nPass `?include=statusUpdates` when retrieving a fulfillment to see the full history of status transitions.\n\n### Lots\n\nIf your products are lot-tracked or expiry-tracked, the [List Lots](#tag/Fulfillment/operation/fulfillment-list-lots)\nendpoint shows the current lot inventory in the warehouse, including lot numbers, available quantities, and\nexpiry/sell-by dates. You can filter and sort by available quantity, sell-by date range, and product name.\n\n### Fulfillment Costs\n\nUse the [Get Fulfillment Costs](#tag/Fulfillment/operation/fulfillment-costs-get-specifications) endpoint to estimate\nfulfillment costs before committing to an order. Provide the destination country, parcel dimensions, and picking\nquantity to receive a cost breakdown by category (shipping, pick fees by quantity tier).\n\n> ⚠️ The cost estimation does **not** include packing consumables. The actual invoiced amount may differ.\n\n## Replenishments\n\nReplenishments are required to send inventory to the warehouse. They follow a specific workflow:\n\n### Replenishment Workflow\n\n<pre class=\"mermaid\">\nstateDiagram-v2\n    direction LR\n    [*] --> created\n    created --> confirmed : Brand confirms\n    confirmed --> sent : Sent to warehouse\n    sent --> delivered : Arrives at warehouse\n    delivered --> received : Items put into stock\n    received --> [*]\n</pre>\n\n* **Created**: When a replenishment is initially created, it will be at status `created` and is considered a draft. In this state, it can be edited via PATCH requests or deleted.\n* **Confirmed**: Once editing is complete, the status should be updated to `confirmed` as part of a PATCH request. At this point, the replenishment information will be sent to the warehouse (asynchronously).\n* **Sent**: Once the replenishment information is sent to the warehouse, the status changes to `sent`. The replenishment will remain in this status while waiting for delivery.\n* **Delivered**: When the replenishment physically arrives at the warehouse, its status will be automatically updated to `delivered`.\n* **Received**: Once the items are put into stock at the warehouse, the status will be updated to `received`. At this stage, receipts are added with the received stock quantities and lots.\n\n### Creating a Replenishment\n\nEach replenishment requires a carrier name, shipment type, and a list of items with their fulfillment item IDs\nand quantities:\n\n```json5\n// POST /api/v1/fulfillment/replenishments\n{\n  \"fulfillmentBrandId\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n  \"warehouseId\": \"98765432-abcd-ef01-2345-678901234567\",\n  \"shippingCarrierName\": \"DHL\",\n  \"shipmentType\": \"PARCEL\",            // \"LTL\", \"FTL\", or \"PARCEL\"\n  \"items\": [\n    {\n      \"fulfillmentItemId\": \"d290f1ee-6c54-4b01-90e6-d701748f0851\",\n      \"quantity\": 100\n    }\n  ]\n}\n```\n\nAfter creating a replenishment, update its status to `confirmed` via PATCH when you are ready to notify the warehouse.\n\n### How Fulfillment Connects to Orders\n\nThe diagram below shows how fulfillment fits into the order lifecycle:\n\n<pre class=\"mermaid\">\ngraph LR\n    A[Master Order] --> D[Fulfillment 1]\n    A --> E[Fulfillment 2]\n    F[Replenishment] --> G[Warehouse Stock]\n    G --> D\n    G --> E\n</pre>\n\n1. Brands send inventory to the warehouse via _Replenishments_\n2. When fulfillment is requested for a _Master Order_, one or more _Fulfillments_ are created\n3. The warehouse picks items from stock and ships each fulfillment\n4. Use the fulfillment endpoints to track both your inventory and fulfillment status\n"
paths:
  /api/v1/product-variants/{productVariant}/declare-fulfillment-item:
    post:
      summary: Declare product variant as fulfillment item
      operationId: product-variants-declare-fulfillment-item
      tags:
      - Fulfillment
      parameters:
      - name: Accept
        in: header
        description: application/vnd.api+json
        schema:
          type: string
          default: application/vnd.api+json
      - name: productVariant
        in: path
        required: true
        schema:
          type: string
          description: '[resource object identifier (uuid)](https://jsonapi.org/format/#document-resource-object-identification)'
          format: uuid
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  type: object
                  properties:
                    barcode:
                      type: string
                      pattern: ^\d{13,14}$
                    unitsPerBatch:
                      type: integer
                    unitCostMargin:
                      description: Margin (as a percentage) between the cost price and wholesale price. Used for insurance purposes
                      type: number
                      format: float
                      minimum: 0
                      maximum: 100
                    classificationCode:
                      type:
                      - string
                      - 'null'
                    expiryTracked:
                      type: boolean
                    shelfLife:
                      type:
                      - integer
                      - 'null'
                    lotTracked:
                      type: boolean
                    isFragile:
                      type: boolean
                    isOrganic:
                      type: boolean
                    needRepack:
                      type: boolean
                    needRelabel:
                      type: boolean
                    alcoholCode:
                      description: Code for alcohol classification, as used in the warehouse
                      type: integer
                      minimum: 1
                      maximum: 11
                    alcoholPercentage:
                      description: Percentage of alcohol in the item
                      type: number
                      format: float
                      minimum: 0
                      maximum: 100
                    volumeOfLiquidPerPack:
                      description: Volume of liquid per pack in liter
                      type: number
                      format: float
                      minimum: 0
                      maximum: 100
                    icpeCode:
                      description: Installation Classified for the Protection of the Environment, as used in the warehouse
                      type: integer
                      minimum: 1000
                      maximum: 4999
                  required:
                  - barcode
                  - unitCost
      responses:
        '200':
          description: Fulfillment item already exists for this product variant
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    type: 'null'
                  jsonapi:
                    description: An object describing the server's implementation
                    type: object
                    properties: &id001
                      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
        '201':
          description: Fulfillment item successfully created
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    type: 'null'
                  jsonapi:
                    description: An object describing the server's implementation
                    type: object
                    properties: *id001
                    additionalProperties: false
        '401':
          description: Unauthorized
          content:
            application/vnd.api+json:
              schema:
                type: object
                additionalProperties: false
                properties: &id002
                  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: *id001
                    additionalProperties: false
                required: &id003
                - 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: *id002
                required: *id003
              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: *id002
                required: *id003
              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: *id002
                required: *id003
              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: *id002
                required: *id003
              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: *id002
                required: *id003
              example:
                jsonapi:
                  version: '1.0'
                errors:
                - detail: Server Error
                  status: '500'
  /api/v1/fulfillment/bundles:
    get:
      summary: List Fulfillment Bundles
      operationId: fulfillment-list-bundles
      description: Returns a list of fulfillable bundles
      tags:
      - Fulfillment
      parameters:
      - schema:
          type: string
        in: header
        name: Accept
        description: application/vnd.api+json
      - in: query
        name: page[limit]
        schema:
          type: integer
      - in: query
        name: page[offset]
        schema:
          type: integer
      responses:
        '200':
          description: Set of fulfillment bundles
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      properties:
                        type:
                          type: string
                          default: fulfillment-bundle
                        id:
                          type: string
                          description: '[resource object identifier (uuid)](https://jsonapi.org/format/#document-resource-object-identification)'
                          format: uuid
                        attributes:
                          type: object
                          properties:
                            productVariantId:
                              type: string
                              format: uuid
                            items:
                              type: array
                              items:
                                type: object
                                properties:
                                  fulfillmentItemId:
                                    type: string
                                    format: uuid
                                  quantity:
                                    type: integer
                                    description: The number of items in the bundle
                      required:
                      - type
                      - id
                      - attributes
                  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
                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'
        '403':
          description: '[Forbidden](https://jsonapi.org/format/#crud-creating-responses-403)'
          content:
            application/vnd.api+json:
              schema:
                type: object
                additionalProperties: false
                properties: *id005
                required: *id006
              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: *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'
        '500':
          description: '[Server Error](https://jsonapi.org/format/#errors)'
          content:
            application/vnd.api+json:
              schema:
                type: object
                additionalProperties: false
                properties: *id005
                required: *id006
              example:
                jsonapi:
                  version: '1.0'
                errors:
                - detail: Server Error
                  status: '500'
  /api/v1/fulfillment/orders:
    get:
      summary: List Fulfillment Orders
      operationId: fulfillment-list-orders
      description: Returns a list of fulfillment orders for the authenticated brand
      tags:
      - Fulfillment
      parameters:
      - name: Accept
        in: header
        description: application/vnd.api+json
        schema:
          type: string
          default: application/vnd.api+json
      - in: query
        name: page[limit]
        schema:
          type: integer
      - in: query
        name: page[offset]
        schema:
          type: integer
      - name: filter[status]
        in: query
        description: Request a specific status only
        allowEmptyValue: false
        required: false
        schema:
          type: string
          enum: &id007
          - internal
          - requested
          - created
          - scheduled
          - released
          - shipped
          - cancelled
          - cancellation_requested
          readOnly: true
      - name: filter[uuid]
        in: query
        description: List of fulfillment orders uuids
        required: false
        schema:
          type: array
          items:
            type: string
            format: uuid
      - name: sort
        in: query
        description: Specify what attribute(s) to sort by
        allowEmptyValue: false
        required: false
        schema:
          type: string
          default: -createdAt
          enum:
          - createdAt
          - -createdAt
      - schema:
          type: string
          enum:
          - statusUpdates
        name: include
        in: query
        description: 'A comma-separated list of resources to include (e.g: statusUpdates)'
      responses:
        '200':
          description: Set of fulfillment orders
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      properties:
                        type:
                          type: string
                          default: fulfillment-orders
                        id:
                          type: string
                          description: '[resource object identifier (uuid)](https://jsonapi.org/format/#document-resource-object-identification)'
                          format: uuid
                        attributes:
                          type: object
                          properties:
                            reference:
                              description: Unique human readable reference for the fulfillment order, used for communication with the warehouse
                              type: string
                              pattern: ^O_[0-9]{1,18}|[A-HJ-NP-TV-Z0-9]+(_\d+)?$
                            status:
                              type: string
                              enum: *id007
                              readOnly: true
                            createdAt:
                              type: string
                              format: date-time
                              readOnly: true
                            items:
                              type: array
                              items:
                                type: object
                                properties:
                                  fulfillmentItemId:
                                    type: string
                                    format: uuid
                                  quantity:
                                    type: integer
                                    description: quantity in batches
                                  lotNumber:
                                    type:
                                    - 'null'
                                    - string
                                  expiryDate:
                                    type:
                                    - 'null'
                                    - string
                                    format: date-time
                                required:
                                - fulfillmentItemId
                                - quantity
                            shippedItems:
                              type: array
                              items:
                                type: object
                                properties:
                                  fulfillableId:
                                    type: string
                                    format: uuid
                                  batchQuantity:
                                    type: integer
                                  unitQuantity:
                                    type: integer
                                  lotNumber:
                                    type:
                                    - 'null'
                                    - string
                                  expiryDate:
                                    type:
                                    - 'null'
                                    - string
                                    format: date-time
                                required:
                                - fulfillableId
                                - batchQuantity
                                - unitQuantity
                            recipientType:
                              type: string
                              enum:
                              - consumer
                              - business
                              default: business
                              description: The type of recipient for a fulfillment order
                            externalReference:
                              type:
                              - string
                              - 'null'
                            instructionText:
                              deprecated: true
                              description: '[Deprecated] This field is deprecated and will be removed in a future version. Use instructions.externalReference instead'
                              type:
                              - string
                              - 'null'
                            instructions:
                              anyOf:
                              - type: object
                                properties:
                                  externalReference:
                                    type:
                                    - string
                                    - 'null'
                                  deliverySchedule:
                                    anyOf:
                                    - type: object
                                      additionalProperties: false
                                      properties:
                                        timeSlots:
                                          type: array
                                          description: 'Opening times for the customer''s business. The time slots when the customer is available for delivery expressed as ranges in 24-hour time format. When null, the customer can be delivered anytime.

                                            '
                                          items:
                                            type: object
                                            additionalProperties: false
                                            properties:
                                              startTime:
                                                type: string
                                                description: 'Start of the opening time expressed in a 24-hour time format (e.g. `14:00`).

                                                  '
                                                example: 09:30
                                              endTime:
                                                type: string
                                                description: 'End of the opening time expressed in a 24-hour time format (e.g. `14:00`).

                                                  '
                                                example: '12:30'
                                            required:
                                            - startTime
                                            - endTime
                                          nullable: true
                                        openDays:
                                          description: 'The opening days for the customer''s business. ISO 8601 numeric representation of the day of the week (`1` for Monday through `7` for Sunday).

                                            '
                                          type: array
                                          items:
                                            type: integer
                                            minimum: 1
                                            maximum: 7
                                          minItems: 1
                                          uniqueItems: true
                                          example:
                                          - 1
                                          - 2
                                          - 3
                                      required:
                                      - timeSlots
                                      - openDays
                                    - type: 'null'
                                  packingInstruction:
                                    anyOf:
                                    - type: obj

# --- truncated at 32 KB (217 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/ankorstore/refs/heads/main/openapi/ankorstore-fulfillment-api-openapi.yml