openapi: 3.1.0
info:
  title: Active Ants ShopApi v3
  version: '3.0'
  description: >-
    ---

    This site contains the specifications of the **Active Ants ShopApi v3**.
    This api is a rebuild from the earlier released v1 and v2 endpoints which
    are still online but are in the process of being replaced.


    We're working hard to give you the best experience and complete control over
    your data through our APIs. To make sure that the endpoints follow a certain
    design pattern we've based the APIs on the [JSON:API](https://jsonapi.org/)
    specifications. 

    For more details about how to make the most of our endpoints see our [online
    developer portal](.)
  contact:
    email: itsupport@activeants.com
    name: IT Support
    url: https://www.activeants.com/
  license:
    name: © Active Ants 2024
    url: https://www.activeants.com/footer-menu/terms-and-conditions/
servers:
  - description: acceptance
    url: https://shopapitest.activeants.nl
  - description: production
    url: https://shopapi.activeants.nl
tags:
  - name: common
    x-displayName: Common
    description: >-
      The "Common" section of the API documentation provides a set of endpoints
      that are frequently used across different operations. These endpoints
      handle fundamental tasks, such as authentication and service status
      checks, which are essential for ensuring smooth communication between your
      application and the API. Understanding these endpoints is crucial for
      maintaining an efficient integration process.


      One of the key endpoints in this section is `POST /token`. This operation
      is responsible for generating an authentication token. To access this
      endpoint, you must provide valid credentials, including a username and
      password specific to each shop. The returned token is essential for
      authenticating further requests. It's important to store the token
      securely and be prepared to request a new one if it becomes invalid, as
      unauthorized errors can occur.


      Another important endpoint is `GET status/get`, which serves as a quick
      way to check the status of the ShopAPI. It requires no authentication and
      provides a simple confirmation that the API is functioning properly. When
      the service is available, the response includes a message confirming that
      the status is OK.

      ___
  - name: v3/orders
    x-displayName: Orders
    description: ''
  - name: v3/shipments
    x-displayName: Shipments
    description: >-
      Endpoints related to managing `shipments` for near-realtime notification
      of changes.


      <div class="admonition admonition--info"> 

      Note that Active Ants attempts to make a shipment for each order as
      quickly and as early as possible. This may lead to situations where a
      planned shipment cannot be completed as expected and must be adjusted. Be
      aware that, up until the shipment reaches the status <code>SHIPPED</code>,
      all details in the shipment are subject to change.

      </div>
  - name: v3/inbounds
    x-displayName: Inbounds
    description: ''
  - name: v3/inboundPackingSlips
    x-displayName: InboundPackingSlips
    description: ''
  - name: v3/products
    x-displayName: Products
    description: >-
      <div class="admonition admonition--warning"> 

      To avoid abuse, all <code>v3/products/*</code> endpoints are rate limited
      to 500 requests per hour per user. When exceeding this limit the server
      will respond with a <code>429 Too Many Requests</code> error.

      </div>
  - name: v3/returns
    x-displayName: Returns
    description: ''
  - name: v3/stock
    x-displayName: Stock
    description: >-
      Endpoints related to managing `webhooks` for near-realtime notification of
      changes.
  - name: v3/webhooks
    x-displayName: WebHooks
    description: >-
      Endpoints related to managing `webhooks` for near-realtime notification of
      changes.
  - name: v3/events
    x-displayName: WebHook Events
    description: >
      The Events section of the API documentation provides an overview of the
      various events that customers can subscribe to in order to receive
      real-time updates about key activities and changes within the system. To
      subscribe to these events make use of the webhook endpoints. Each event
      follows the same message layout as the data that would be returned by the
      corresponding GET operation, providing consistency to the processing of
      data.
  - name: v3/schemas
    x-displayName: Models
x-tagGroups:
  - name: Authentication & Settings
    tags:
      - common
  - name: Orders, Shipments & Returns
    tags:
      - v3/orders
      - v3/shipments
      - v3/returns
  - name: Inbounds & Packing Slips
    tags:
      - v3/inbounds
      - v3/inboundPackingSlips
  - name: Products & Stock
    tags:
      - v3/products
      - v3/stock
  - name: WebHooks
    tags:
      - v3/webhooks
      - v3/events
  - name: Models
    tags:
      - v3/schemas
paths:
  /token:
    post:
      summary: token
      operationId: post-token
      x-json-api: false
      x-internal: false
      security: []
      tags:
        - common
      description: >-

        # POST token

        The operations of the `shopapi/v3` require a bearer token to access the
        data. For each client a separate `username` and `password` can be
        requested which in turn can be used to request a bearer token for
        accessing the endpoints. The same bearer token will grant access to all
        `shopapi/v3` endpoints and older, but only to the information of the
        client it belongs to. and need to be provided to the Token operation.
        This operation will

        return a token string which needs to be provided in the header of each
        request.


        <div class="admonition admonition--info"> 

        It is not required to request a tokens for each and every API call. It
        is recommended to store the token until it expires. Be aware that a
        token can potentially be invalidated before it actually expires in case
        of intrusion detection. If this happens requests will return a <code>401
        Unauthorized error</code> and a new token must be requested.

        </div>
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                grant_type:
                  default: password
                  example: password
                username:
                  type: string
                password:
                  type: string
              required:
                - grant_type
                - username
                - password
            examples:
              '1':
                $ref: '#/components/examples/post-token'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  access_token:
                    type: string
                    example: >-
                      WW91IGNvdWxkIG5vdCByZXNpc3QgdGhlIHVyZ2UgdG8gbG9vayBjb3VsZCB5b3U/,
                  token_type:
                    type: string
                    default: bearer
                    readOnly: true
                  expires_in:
                    type: integer
                    example: 56499
                  userName:
                    type: string
                    example: shopapi-user
                  issued:
                    type: string
                    example: Tue, 05 Dec 2024 11:22:52 GMT
                  expires:
                    type: string
                    example: Wed, 06 Dec 2024 03:22:52 GMT
        '401':
          $ref: '#/components/responses/401-unauthorized'
        '404':
          $ref: '#/components/responses/404-not-found'
  /status:
    get:
      summary: status/get
      operationId: get-status-get
      x-json-api: false
      x-internal: false
      tags:
        - common
      description: >
        # GET status/get

        This endpoint can be used to verify if the ShopApi is up and running. 

        It requires no authentication and has no input requirements whatsoever.


        When the ShopApi is functioning the response is a simple message with
        the following structure:


        ```json title="Successful response"

        {
          "messageCode": "OK",
          "message": "Status is OK.",
          "result": null
        }

        ```
      security: []
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get-status-get-response'
              examples:
                '1':
                  $ref: '#/components/examples/get-status-get-001-response'
        '404':
          $ref: '#/components/responses/404-not-found'
  /v3/orders:
    get:
      summary: v3/orders
      operationId: get-v3-orders
      x-json-api: true
      x-internal: false
      tags:
        - v3/orders
      description: >
        # GET v3/orders 

        Returns all orders placed.


        ### Pagination

        The endpoint supports pagination to split the large collection of
        resources into smaller, more manageable chunks or pages. This helps to
        reduce the response size and to improve performance. The endpoint
        supports only cursor-based technique for pagination.

        - See also this article on
        [pagination](docs\articles\concepts\pagination.md).


        ### Filters

        The `GET v3/orders` endpoint supports filtering on the following
        attributes: `orderedOn`, `externalOrderNumber`, `reference`. Each of
        these are explained below. Filters can be used in combination with each
        other and with pagination to allow full access to the desired subset of
        orders.


        #### Filtering on `orderedOn`

        The results returned by this service can be filtered based on the order
        date of the `order`. To do so make use of the `filter[orderedOn]`
        parameter in the following manner:

        - `GET {host}/v3/orders?filter[orderedOn][lt]={date}` will return
        `order` that have been ordered **before** the provided date. Orders that
        have been ordered on that date are not included in the results.

        - `GET {host}/v3/orders?filter[orderedOn][gt]={date}` will return
        `order` that have been ordered **after** the provided date. Orders that
        have been ordered on that date are not included in the results.

        - `GET
        {host}/v3/orders?filter[orderedOn][gt]={date_1}&filter[orderedOn][lt]={date_2}`
        will return `orders` that have ordered **between** dates {date_1} and
        {date_1}.

        Orders that has been ordered on either date are not included in the
        results.


        #### Filtering on `externalOrderNumber`

        In order to find `orders` that have a specific `externalOrderNumber` it
        is possible to specify one or more values to search for. Be aware that
        each entry in the list must be
        [URL-encoded](https:\\en.wikipedia.org\wiki\URL_encoding) in order to be
        accepted. This means that the characters `!\"#$%&'()*+,\:;=?@[]` and
        white-spaces must be percent-encoded (see also the example below). Make
        use of the `filter[externalOrderNumber][in]` filter as follows:

        * `GET
        {host}\v3\orders?filter[externalOrderNumber][in]=%23UK-1003,NL123%2F433`
        will return all `orders` that have either `#UK-1003` or `NL123\433` as
        `externalOrderNumber`.



        #### Filtering on `reference`

        In order to find `orders` that have a specific `reference` it is
        possible to specify one or more values to search for. Be aware that each
        entry in the list must be
        [URL-encoded](https:\\en.wikipedia.org\wiki\URL_encoding) in order to be
        accepted. This means that the characters `!\"#$%&'()*+,\:;=?@[]` and
        white-spaces must be percent-encoded (see also the example below). Make
        use of the `filter[reference][in]` filter as follows:

        * `GET{host}\v3\orders?filter[reference][in]=%23UK-1003,NL123%2F433`

        will return all `orders` that have either `#UK-1003` or `NL123\433` as
        `reference`.



        ### Including related resources

        The endpoint also supports -to some

        degree- the inclusion of information of related resources. The resources
        that

        can be included in the response are limited to the `orderItems`, the
        `deliveryAddress`,

        the `billingAddress` and the `pickUpPoint`. To get the details of
        related

        entities the `include` parameter must be added to the URI in the
        following

        way:

        - `GET {host}/v3/orders?include=orderItems` will return for each `order`

        the list of `orderItems` with their details. 

        - `GET
        {host}/v3/orders?include=deliveryAddress,billingAddress,pickUpPoint`

        will return all three types of addresses of each `order` if applicable.
        Note

        that the `deliveryAddress` and `billingAddress` are both of type
        `address`

        whereas the `pickUpPoint` is of type `pickUpPoint`.
      parameters:
        - $ref: '#/components/parameters/pagination-cursor'
        - $ref: '#/components/parameters/pagination-size'
        - $ref: '#/components/parameters/for-orders'
        - $ref: '#/components/parameters/orderedOn-after'
        - $ref: '#/components/parameters/orderedOn-before'
        - $ref: '#/components/parameters/externalOrderNumber-in'
        - $ref: '#/components/parameters/filter-reference-in'
      responses:
        '200':
          description: OK
          content:
            application/vnd.api+json:
              schema:
                allOf:
                  - type: object
                    properties:
                      data:
                        type: array
                        items:
                          $ref: '#/components/schemas/order'
                  - $ref: '#/components/schemas/pagination-links'
              examples:
                '1':
                  $ref: '#/components/examples/get-v3-orders-001-request'
        '401':
          $ref: '#/components/responses/401-unauthorized'
        '406':
          $ref: '#/components/responses/406-not-acceptable'
        '415':
          $ref: '#/components/responses/415-unsupported-media-type'
    post:
      summary: v3/orders
      operationId: post-v3-orders
      x-json-api: true
      x-internal: false
      tags:
        - v3/orders
      description: >
        # POST v3/orders

        This endpoint enables a client to create an `order` with its
        `orderItems` and related `addresses`. 


        ### Request

        When creating an `order` the related resources must be included in the
        request under the `included` attribute of the order (see the example).
        For the resources `deliveryAddress` and `billingAddress` it is required
        to provide a provisional id to be able to link the correct
        `address`-resource in the appropriate relationship. For `orderItems` and
        the `pickUpPoint` this is not required as these are effectively
        redundant. Resource `orderAttachment` is optional and, if provided, has
        to be set in `included` array (see the example below).


        #### Attachments

        It is possible to submit `pdf` documents which will be printed-out and
        placed in the parcel with the products. 

        On order to make use of this print facility contact your account manager
        to arrange matters. 


        ### Response

        Upon successfulcreation of the `orders` and its `orderItems` the server
        responds with the complete `order` resource and related resources in a
        similar fashion as if invoked by a `GET
        v3/orders/:id?include=orderItems,deliveryAddress,billingAddress,pickUpPoint`.
      requestBody:
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  allOf:
                    - $ref: '#/components/schemas/orderIdentification'
                    - $ref: '#/components/schemas/orderAttributes'
                    - $ref: '#/components/schemas/orderRelationships'
                    - $ref: '#/components/schemas/orderIncludables'
            examples:
              '1':
                $ref: '#/components/examples/post-v3-orders-001-request'
              '2':
                $ref: '#/components/examples/post-v3-orders-002-request'
      responses:
        '201':
          description: >
            Upon successfulcreation of the `orders` and its `orderItems` the
            server responds with the complete `order` resource and related
            resources in a similar fashion as if invoked by a `GET
            /v3/orders/{id}?include=orderItems,deliveryAddress,billingAddress,pickUpPoint`.
          content:
            application/vnd.api+json:
              schema:
                allOf:
                  - type: object
                    properties:
                      data:
                        $ref: '#/components/schemas/order'
                  - $ref: '#/components/schemas/orderLinksSelf'
              examples:
                example-001:
                  $ref: '#/components/examples/post-v3-orders-001-response'
          headers: {}
        '401':
          $ref: '#/components/responses/401-unauthorized'
        '404':
          description: >-
            ### 404 Not Found


            In case there are references to `preferredShippingMethod`,

            `orderType` of `sku`s that are not known the server will respond
            with a

            `404: Not Found` code. The response combines as many validation
            issues the

            server was able to find.
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/error-response'
              examples:
                Unkown SKUs:
                  $ref: '#/components/examples/404-1-unknown-sku'
                Unkown orderType:
                  $ref: '#/components/examples/404-2-unknown-orderType'
                Unkown preferredShippingMethod:
                  $ref: '#/components/examples/404-3-unknown-preferredShippingMethod'
                Multiple Issues:
                  $ref: '#/components/examples/404-m-multiple-issues'
        '406':
          $ref: '#/components/responses/406-not-acceptable'
        '409':
          description: Conflict
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/error-response'
              examples:
                409-1:
                  $ref: '#/components/examples/409-1-duplicate-orderOrderNumber'
        '415':
          $ref: '#/components/responses/415-unsupported-media-type'
  /v3/orders/{id}:
    get:
      summary: v3/orders/:id
      operationId: get-v3-orders-by-id
      x-json-api: true
      x-internal: false
      tags:
        - v3/orders
      description: >
        # GET v3/orders/:id

        Returns a specific order by the `id` assigned by Active Ants.


        ### Including related resources

        The endpoint also supports -to some degree- the inclusion of information
        of related resources. 

        The resources that can be included in the response are limited to the
        `orderItems`, the `deliveryAddress`, the `billingAddress` and the
        `pickUpPoint`. To get the details of related entities the `include`
        parameter must be added to the URI in the following way:
          
        - `GET {host}/v3/orders?include=orderItems` will return for each `order`
        the list of `orderItems` with their details.

        - `GET
        {host}/v3/orders?include=deliveryAddress,billingAddress,pickUpPoint`
        will return all three types of addresses of each `order` if applicable. 

        Note that the `deliveryAddress` and `billingAddress` are both of type
        `address` whereas the `pickUpPoint` is of type `pickUpPoint`.
      parameters:
        - schema:
            type: string
          name: id
          in: path
          required: true
          description: The unique id (integer) of the `order` to retrieve.
      responses:
        '200':
          description: OK
          content:
            application/vnd.api+json:
              schema:
                allOf:
                  - type: object
                    properties:
                      data:
                        $ref: '#/components/schemas/order'
                  - $ref: '#/components/schemas/orderLinksSelf'
              examples:
                '1':
                  $ref: '#/components/examples/get-v3-orders-by-id-001-response'
        '401':
          $ref: '#/components/responses/401-unauthorized'
        '404':
          $ref: '#/components/responses/404-not-found'
        '406':
          $ref: '#/components/responses/406-not-acceptable'
        '415':
          $ref: '#/components/responses/415-unsupported-media-type'
    delete:
      summary: v3/orders/:id
      operationId: delete-v3-orders-by-id
      x-json-api: true
      x-internal: false
      tags:
        - v3/orders
      description: >
        # DELETE v3/orders/:id

        Invoking this endpoint will cause the server to make an effort to cancel
        an `order` by cancelling each of its `orderItems`. This may succeed when
        there is no `shipment` fulfilling any of the `orderItems` yet. Otherwise
        the cancellation will be at best partially successfull. 

        Depending on the result the server response will be slightly different.
        (See below and the examples)


        ### Including related resources

        The endpoint also supports -to some degree- the inclusion of information
        of related resources. The resources that can be included in the response
        are limited to the `orderItems`, the `deliveryAddress`, the
        `billingAddress` and the `pickUpPoint`. To get the details of related
        entities the `include` parameter must be added to the URI in the
        following way:

        - `DELETE {host}/v3/orders?include=orderItems` will attempt to cancel
        the order and return the `order` and all its `orderItems` in their new
        state.


        ### Responses


        #### Partial or Complete Cancellation

        If the `order` was partially or completely cancelled (for example, if it
        was already partially fulfilled), the server will respond with a field
        `meta.modified` attribute set to `true`. This indicates that the `order`
        was modified. To determine which `orderItems` were modified as a result
        of *this* request, the server response will include an array of ids of
        `orderItems` in the element `meta.modifiedItems`. To determine the
        completeness of the cancellation, refer to the quantities on the
        `orderItems`.


        #### No Change

        If none of the `orderItems` of the `order` could be cancelled because
        they were already completely fulfilled, the server will still respond
        with a `200: OK`. However, the attribute `meta.modified` will be set to
        `false`, indicating that the `order` was **not modified** as a result of
        **this** request.
      parameters:
        - $ref: '#/components/parameters/for-orders'
        - schema:
            type: string
          name: id
          in: path
          required: true
          description: The unique id (integer) of the `order` to (partially) cancel.
      responses:
        '200':
          description: >
            The `200: OK` response includes information about the result of

            the cancellation request. As indicated the order might be cancelled
            in its

            entirety, partially or not at all. To understand if anything changed
            as a

            result of the request, the field `meta.modified` will be set to
            `true`.

            Additionally an array of modified `orderItems` is returned in the

            `meta.modifiedItems` element in the response.
          content:
            application/vnd.api+json:
              schema:
                allOf:
                  - type: object
                    properties:
                      data:
                        $ref: '#/components/schemas/order'
                      meta:
                        type: object
                        properties:
                          modified:
                            type: boolean
                            description: >
                              Indicates if the `order` was modified in any way.
                              When `true` the

                              modified `orderItems` are listed in the
                              `modifiedItems`.
                          modifiedItems:
                            $ref: '#/components/schemas/orderItemsRelation'
              examples:
                '1':
                  $ref: '#/components/examples/delete-v3-orders-by-id-001-response'
                '2':
                  $ref: '#/components/examples/delete-v3-orders-by-id-002-response'
                '3':
                  $ref: '#/components/examples/delete-v3-orders-by-id-003-response'
        '401':
          $ref: '#/components/responses/401-unauthorized'
        '404':
          $ref: '#/components/responses/404-not-found'
        '406':
          $ref: '#/components/responses/406-not-acceptable'
        '415':
          $ref: '#/components/responses/415-unsupported-media-type'
    put:
      summary: v3/orders/:id
      operationId: put-v3-orders-by-id
      x-json-api: true
      x-internal: false
      tags:
        - v3/orders
      description: >-
        # PUT /v3/orders/:id


        This endpoint enables a client to make some changes to an existing
        `order` within certain limits. The `order` 

        cannot be modified after it is fulfilled in its entirety (i.e. there is
        nothing left to ship). The mutability of the attributes is indicated in
        the tables below.


        ### Request


        When submitting changes for an `order`, the entire `order` in its
        desired state must be submitted; otherwise, the omitted fields may be
        erased.


        #### Mutable attributes on `order` level


        | attribute               | nullable | remarks |

        |-------------------------|----------|-------------|

        | `externalOrderNumber`   | no       | The new value must also be
        unique. |

        | `reference`             | yes      | Use an empty string to erase
        current value. |

        | `consumerReference`     | yes      | Use an empty string to erase
        current value. |

        | `promotionCode`         | yes      | Use an empty string to erase
        current value. |

        | `email`                 | yes      | When `null` or omitted,
        noreply@activeants.nl default will be used. |

        | `locale`                | no       |  |

        | `phoneNumber`           | yes      |  |

        | `vatNumber`             | yes      |  |

        | `fulfillFrom`           | yes      | New `warehouseCode` must be part
        of the fulfillment strategy. |

        | `preferredShippingDate` | yes      | New date must be today or later.
        |

        | `allowPartialDelivery`  | yes      | When `null` or omitted, the
        default for the `orderType` will take effect. |

        | `onHold`                | no       |  |

        | `metadata/*`            | yes      | Note that not providing the full
        set will erase previous data. |


        #### Immutable attributes on `order` level


        | attribute               | remarks |

        |-------------------------|---------|

        | `currency`              |  |

        | `channelIdentifier`     |  |


        ### Response


        Upon successful modification of the `order`, the server responds with
        the complete `order` resource and related resources in a similar fashion
        as if invoked by a `GET
        v3/orders/:id?include=orderItems,deliveryAddress,billingAddress,pickUpPoint`.
        It is the responsibility of the caller to validate that the changes made
        to the `order` are having the expected results.


        ### Limitations of PUT /v3/orders/:id


        When using this endpoint, the following limitations apply:


        - Invoking the endpoint requires the use of the `order`'s resource id.
        If not known, this can be obtained by invoking the `GET
        v3/orders?filter[externalOrderNumber]={YOUR_ORDER_NUMBER}`.

        - It is not possible to modify the `orderItems`.

        - It is not possible to modify the `deliveryAddress`, `billingAddress`,
        or `pickUpPoint`.

        - It is not possible to modify the related `preferredShippingMethod`.

        - It is not possible to modify the related `orderType`.
      requestBody:
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  allOf:
                    - $ref: '#/components/schemas/orderIdentification'
                    - $ref: '#/components/schemas/orderAttributes-clientMutable'
      parameters:
        - $ref: '#/components/parameters/for-orders'
        - schema:
            type: string
          name: id
          in: path
          required: true
          description: The unique id (integer) of the `order` to put.
      responses:
        '200':
          description: >
            Upon successfulmodification of the `order` the server responds

            with the complete `order` resource and related resources in a
            similar

            fashion as if invoked by a `GET
            v3/orders/{id}?include=orderItems,deliveryAddress,billingAddress,pickUpPoint`.
          content:
            application/vnd.api+json:
              schema:
                allOf:
                  - type: object
                    properties:
                      data:
                        $ref: '#/components/schemas/order'
                  - $ref: '#/components/schemas/orderLinksSelf'
        '401':
          $ref: '#/components/responses/401-unauthorized'
        '406':
          $ref: '#/components/responses/406-not-acceptable'
        '415':
          $ref: '#/components/responses/415-unsupported-media-type'
        '422':
          description: >
            ### 422 Unprocessable Content

            A `422 Unprocessable Content`

            response is given when the `order` cannot be modified because it has
            been

            fulfilled already. This means that none of the requested changes
            have

            been applied to the order.
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/error-response'
              examples:
                '422':
                  value:
                    errors:
                      - code: '422'
                        title: Unprocessable Content
                        detail: |-
                          The order is already filfilled and cannot be modified
                          any longer.
  /v3/orderItems:
    get:
      summary: v3/orderItems/:id
      operationId: get-v3-orderItems-by-id
      x-json-api: true
      description: |-
        # GET v3/orderItem/:id
        Returns a specific `orderItem` by it's id.

        ### Including related resources
        The does not support inclusion of related resources.
      tags:
        - v3/orders
      responses:
        '200':
          description: OK
          content:
            application/vnd.api+json:
              schema:
                allOf:
                  - type: object
                    properties:
                      data:
                        $ref: '#/components/schemas/orderItem'
                  - $ref: '#/components/schemas/orderItemLinksSelf'
        '401':
          $ref: '#/components/responses/401-unauthorized'
        '404':
          $ref: '#/components/responses/404-not-found'
        '406':
          description: Not Acceptable
        '415':
          $ref: '#/components/responses/415-unsupported-media-type'
    delete:
      summary: v3/orderItems/:id
      operationId: delete-v3-orderItems-by-id
      x-json-api: true
      description: >-
        # DELETE v3/orderItems/:id

        Invoking this endpoint will cause the server to make an effort to cancel
        an `orderItem`. This may succeed when there are no `shipments`
        fulfilling the `orderItem` yet. Otherwise the cancellation will be at
        best partially successfull. Depending on the outcome the server response
        will be (sligtly) different as outlined below


        ### Responses

        #### Partial or Complete Cancellation

        If the `orderItem` was partially or completely cancelled (for example,
        if it was already partially fulfilled), the server will respond with a
        field `meta.modified` attribute set to `true`. This indicates that the
        `orderItem` was modified. If the value of the `quantity` attribute
        equals zero then the `orderItem` was successfully cancelled. Otherwise,
        when the value is larger than zero, the `orderItem` was partially
        cancelled.


        #### No Change

        If the `orderItem` could not be cancelled, because it has already been
        fulfilled, the server will still respond also with a `200: OK`. However,
        the attribute `meta.modified` will be set to `false`, indicating that
        the `orderItem` was **not modified** as a result of **this** request.
      tags:
        - v3/orders
      responses:
        '200':
          description: Response
          content:
            application/vnd.api+json:
              schema:
                type: object
                required:
                  - data
                properties:
                  data:
                    allOf:
                      - $ref: '#/components/schemas/orderItemIdentification'
                      - $ref: '#/components/schemas/orderItemAttributes'
                      - $ref: '#/components/schemas/orderItemLinksSelf'
                  meta:
                    type: object
                    properties:
                      modified:
                        type: boolean
                        description: >
                          Flag indicating if the operation affected the
                          `orderItem` or if it ultimately was not able to delete
                          any of it.
              examples:
                001 - success:
                  $ref: '#/components/examples/delete-v3-orderItem-by-id-001-response'
                002 - partial success:
                  $ref: '#/components/examples/delete-v3-orderItem-by-id-002-response'
                003 - failure:
                  $ref: '#/components/examples/delete-v3-orderItem-by-id-003-response'
        '401':
          $ref: '#/components/responses/401-unauthorized'
        '404':
          $ref: '#/components/responses/404-not-found'
        '406':
          $ref: '#/components/responses/406-not-acceptable'
        '409':
          $ref: '#/components/responses/409-conflict'
        '415':
          $ref: '#/components/responses/415-unsupported-media-type'
  /v3/orderAttachments:
    post:
      summary: v3/orderAttachments
      operationId: post-v3-orderAttachments
      x-json-api: false
      tags:
        - v3/orders
      description: >
        # POST v3/orderAttachments

        The `POST /v3/orderAttachments` endpoint allows linking an attachment to
        an 

        order for printing during the picking process.


        ## ⚠ orderAttachments is part of the POST /v3/orders.

        ⚠ See endpoint [POST /v3/orders](/#post-/v3/orders). 


        ### Request

        When submitting an `orderAttachment`, the `order` to which it will be
        attached must be created prior to 

        attaching, but before the `order` is fulfilled. 


        ### Response

        Upon successfulcreation of the `orderAttachment` the response will
        contain the 

        created `orderAttachment` resource and the relation to the `order`. The
        contents of the attachment is 

        suppressed from the response..


        ### Limitations to `POST v3/orderAttachments`

        There are limitations to what and when `orderAttachments` can be
        attached to `orders`:

        * As long as the `order` is not completely fulfilled and some items
        remain to be shipped, 

        an `orderAttachment` can be added to the order. Attempting to add an
        `orderAttachment` afterwards 

        will result in an error.

        * Only valid `pdf` documents can be submitted as `orderAttachment`.

        * Only document with a single page sizes in `A4` or `A5` are supported.
        So mixing of `A4` 

        with `A5` formats is not possible in a single `orderAttachment`.

        * There is a file sizelimit and page limit to each `orderAttachment`.
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                data:
                  allOf:
                    - $ref: '#/components/schemas/orderAttachmentIdentification'
                    - $ref: '#/components/schemas/orderAttachmentAttributes'
                    - $ref: '#/components/schemas/orderAttachmentRelationships'
                    - type: object
                      properties:
                        attributes:
                          type: object
                          properties:
                            externalOrderNumber:
                              description: >-
                                To attach the `orderAttachment` to the correct
                                `order` it is possible to provide the `id` of
                                the `order` as one of the related items (see
                                `data.relationships.order.data.id`) or provide
                                the  `externalOrderNumber` of the `order` using
                                this attribute.
                              $ref: '#/components/schemas/externalOrderNumber'
            examples:
              '1':
                $ref: '#/components/examples/post-v3-orderAttachments-001-request'
      responses:
        '200':
          description: >
            Upon successful submission of the `orderAttachment` the details are
            returned, excluding the 

            attachment's `contents`. If the `externalOrderNumber` was provided
            it is also not returned, 

            but instead its relation to the `order` is added under
            `relationships`.
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    allOf:
                      - type: object
                        properties:
                          data:
                            $ref: '#/components/schemas/orderAttachment'
        '401':
          $ref: '#/components/responses/401-unauthorized'
        '404':
          description: >-
            When referenced resources are not found the server will return with
            a `HTTP:404` error.
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/error-response'
              examples:
                404-5:
                  summary: '`orderId` not found'
                  $ref: '#/components/examples/404-5-unknown-orderId'
                404-6:
                  summary: '`externalOrderNumber` not found'
                  $ref: '#/components/examples/404-6-unknown-externalOrderNumber'
        '406':
          $ref: '#/components/responses/406-not-acceptable'
        '415':
          $ref: '#/components/responses/415-unsupported-media-type'
        '422':
          description: >-
            In case of business rule violations the server will respond with a
            `HTTP:422` error.
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/error-response'
              examples:
                422-1:
                  summary: Order already fulfilled
                  $ref: '#/components/examples/422-1-order-fulfilled'
  /v3/shipments:
    get:
      summary: v3/shipments
      operationId: get-v3-shipments
      x-json-api: true
      x-internal: false
      tags:
        - v3/shipments
      description: >

        # GET v3/shipments

        Returns a collection of up to 100 `shipment` resources, non older than
        90 days, that match the provided filerting criteria and allows for
        iterating over pages of more `shipment` resources if there are more
        available. The endpoint supports pagination and filtering as described
        in the chapters below.


        ### Pagination

        The endpoint supports pagination to split the large collection of
        resources into smaller, more manageable chunks or pages. This helps to
        reduce the response size and to improve performance. The endpoint
        supports only cursor-based technique for pagination. 

        - See also this article on
        [pagination](/docs/shopapi/v3/general-concepts/pagination).


        ### Filters

        The `GET v3/shipments` endpoint supports filtering on the following
        attributes: `shippedOn`, `orderType`, `status`, `orderId`,
        `externalOrderNumber`. Each of these are explained below. Filters can be
        used in combination with eachother and with pagination as to allow full
        access to the desired subset of shipments.


        #### Filtering on `shippedOn`

        The results returned by this service can be filtered based on the
        shipping date of the shipments. To do so make use of the
        `filter[shippedOn]` parameter in the following manner:
          * `GET {host}/v3/shipments?filter[shippedOn][lt]={date}` will return shipments that have shipped **before** the provided date. Shipments that shipped on that date are not included in the results.
          * `GET {host}/v3/shipments?filter[shippedOn][gt]={date}` will return shipments that have shipped **after** the provided date. Shipments that shipped on that date are not included in the results.
          * `GET {host}/v3/shipments?filter[shippedOn][gt]={date_1}&filter[shippedOn][lt]={date_2}` will return shipments that have shipped **between** dates {date_1} and {date_1}. Shipments that shipped on either date are not included in the results.

        #### Filtering on `status`

        The results returned by this service can be filtered based on the status
        of the shipments. To do so make use of the `filter[status][in]`
        parameter in the following manner:
          * `GET {host}/v3/shipments?filter[status][in]=READY_TO_SHIP,SHIPPED` will return shipments that have been picked and packed and are awaiting pickup by the carrier or have been picked up by the carrier.
          * `GET {host}/v3/shipments?filter[status][in]=READY_TO_PICK` will return shipments that are waiting for physical processing in the warehouse.
          
        #### Filtering on `orderType`

        The endpoint allows filtering on one or more `orderType` values of the
        order(s) that form the bases of the shipments. An `orderType` is a
        required paramter on the `order` and determines various asects of how
        the order should be processed. To filter on `orderType` use the
        `filter[orderType][in]` query parameter as follows:
          * `GET {host}/v3/shipments?filter[orderType][in]=1` will return all shipments that belong to an `order` with the `orderType` set to 1.
          * `GET {host}/v3/shipments?filter[orderType][in]=5,6,7` will return all shipments that belong to an `order` with the `orderType` set to 5, 6 or 7.


        #### Filtering on `orderId`, `externalOrderNumber` and `reference`

        The endpoint allows filtering on both `orderId`, `externalOrderNumber`
        and `reference` of the order(s) that the shipments are created for. 

        To filter using one or more of these filters follow the examples below:
          * `GET {host}/v3/shipments?filter[orderId][in]=123` will return all shipments are created for an order with id equal to 123.
        To filter on `externalOrderNumber` use the
        `filter[externalOrderNumber][in]` query parameter as follows:
          * `GET {host}/v3/shipments?filter[externalOrderNumber][in]=abc,123,1a2b` will return all shipments that are created for orders with external order numbers set to corresponding values.
          * `GET {host}/v3/shipments?filter[orderId][in]=123&filter[externalOrderNumber][in]=abc` will return all shipments that are created for orders with `orderId = 123` **and** `externalOrderNumber=abc`.
          * `GET {host}/v3/shipments?filter[reference][in]=cust1,cust2,cust3` will return all shipments that are created for orders with reference set to corresponding values.


        ### Including related resources

        The endpoint also supports -to some degree- the inclusion of information
        of related resources. To get the details of related entities the
        `include` parameter must be added to the URI in the following way:

        - `GET {host}/v3/shipments?include=shipmentItems` will return the
        `shipment` with all `shipmentItems` details.


        ### Limitations of `GET v3/shipments`

        When using this endpoint, expect the following limits on the result set:
          * Shipments older than 90 days are not returned using this method.
          * At most 100 shipments will be returned regardless of the `page[size]` settings provided in the request.
          * Ordering is based on the `id` of the `shipment` in ascending order.
          * Some shipment statusses are suppressed from the results when retreiving shipments in bulk using the `GET v3/shipments`.
      parameters:
        - $ref: '#/components/parameters/pagination-size'
        - $ref: '#/components/parameters/pagination-cursor'
        - $ref: '#/components/parameters/filter-shipmentStatus-in'
        - $ref: '#/components/parameters/filter-shippedOn-before'
        - $ref: '#/components/parameters/filter-shippedOn-after'
        - $ref: '#/components/parameters/filter-orderType-in'
        - $ref: '#/components/parameters/filter-reference-in'
        - name: include
          in: query
          description: >-
            Comma-separated list of related resources to include into the
            response.
          required: false
          schema:
            type: array
            items:
              type: string
              enum:
                - shipmentItems
            uniqueItems: true
          style: form
          explode: false
        - schema:
            type: string
          in: query
          name: filter[orderId]
          description: A comma-separated list of order id's to filter by
        - schema:
            type: string
          in: query
          name: filter[externalOrderNumber]
          description: A comma-separated list of external order numbers to filter by
      responses:
        '200':
          description: >-
            A successful response consists of zero or more `shipment` resources
            being returned as part of the `data` element in the response body
            that match the filterng and pagination query parameters provided in
            the request. Also a set of pagination links will be returned to
            assist with further invokations of the endpoint.
          content:
            application/vnd.api+json:
              schema:
                description: Succesful response of the `GET v3/shipments` endpoint
                allOf:
                  - type: object
                    properties:
                      data:
                        type: array
                        minItems: 0
                        maxItems: 100
                        items:
                          $ref: '#/components/schemas/shipment'
                  - $ref: '#/components/schemas/pagination-links'
              examples:
                '1':
                  $ref: '#/components/examples/get-v3-shipments-001-response'
        '401':
          $ref: '#/components/responses/401-unauthorized'
        '406':
          $ref: '#/components/responses/406-not-acceptable'
        '415':
          $ref: '#/components/responses/415-unsupported-media-type'
  /v3/shipment/{id}:
    get:
      summary: v3/shipments/:id
      operationId: get-v3-shipments-by-id
      x-json-api: true
      x-internal: false
      tags:
        - v3/shipments
      description: >

        # GET v3/shipments/:id

        This endpoint returns a single `shipment` resource. The request requires
        a path parameter which is the `id` of the `shipment` to fetch. It
        returns only a `shipment` if it can be be found and the associated `id`
        belongs to a `shipment` that was generated as a result of an `order`.


        ### Including related resources

        The endpoint also supports -to some degree- the inclusion of information
        of related resources. To get the details of related entities the
        `include` parameter must be added to the URI in the following way:

        - `GET {host}/v3/shipments?include=shipmentItems` will return the
        `shipment` with all `shipmentItems` details.


        ### Limitations of `GET v3/shipments/:id`

        When using this endpoint, expect the following limits on the result set

        * Shipments older than 90 days are not returned using this method.

        * Some shipment statusses are blocked when retreiving shipments in bulk
        using the `GET v3/shipments` but when requesting the shipment through
        `GET v3/shipments/:id` direcly may yield results.
      parameters:
        - name: include
          in: query
          description: >-
            Comma-separated list of related resources to include into the
            response.
          required: false
          schema:
            type: array
            items:
              type: string
              enum:
                - shipmentItems
            uniqueItems: true
          style: form
          explode: false
        - schema:
            type: string
          name: id
          in: path
          required: true
          description: The unique id (integer) of the `shipment` to retrieve.
      responses:
        '200':
          description: >
            A successful response consists of exactly one `shipment` resource
            being returned as part of the 

            data element in the response body. If no `shipment` was found under
            the specified `id` a 

            `404 Not Found` message would be returned.
          content:
            application/vnd.api+json:
              schema:
                allOf:
                  - type: object
                    properties:
                      data:
                        $ref: '#/components/schemas/shipment'
                  - $ref: '#/components/schemas/shipmentLinksSelf'
                description: Succesful response of the `GET v3/shipments/{id}` endpoint.
              examples:
                '1':
                  $ref: '#/components/examples/get-v3-shipments-by-id-001-response'
        '401':
          $ref: '#/components/responses/401-unauthorized'
        '404':
          $ref: '#/components/responses/404-not-found'
        '406':
          $ref: '#/components/responses/406-not-acceptable'
        '415':
          $ref: '#/components/responses/415-unsupported-media-type'
  /v3/inbounds/{id}:
    get:
      summary: v3/inbounds/:id
      operationId: get-v3-inbounds-by-id
      x-json-api: true
      x-internal: false
      tags:
        - v3/inbounds
      description: >

        # GET v3/inbounds/:id

        Allows the retreival of a specific `inbound` and its related details.


        ### Including related resources

        The endpoint also supports the inclusion of information of its related
        `inboundItems` negating the 

        need to access these directly.

        - `GET {host}/v3/inbounds?include=inboundItems` will return for each
        `inbound` the list 

        of `inboundItems` with their details.
      parameters:
        - $ref: '#/components/parameters/for-inbounds'
        - schema:
            type: string
          name: id
          in: path
          required: true
          description: The unique id (integer) of the `inbound` to retrieve.
      responses:
        '200':
          description: OK
          content:
            application/vnd.api+json:
              schema:
                allOf:
                  - type: object
                    properties:
                      data:
                        $ref: '#/components/schemas/inbound'
                  - $ref: '#/components/schemas/inboundLinksSelf'
        '401':
          $ref: '#/components/responses/401-unauthorized'
        '404':
          $ref: '#/components/responses/404-not-found'
        '406':
          $ref: '#/components/responses/406-not-acceptable'
        '415':
          $ref: '#/components/responses/415-unsupported-media-type'
  /v3/inbounds:
    get:
      summary: v3/inbounds
      operationId: get-v3-inbounds
      x-json-api: true
      x-internal: false
      tags:
        - v3/inbounds
      description: >
        # GET v3/inbounds

        Allows the retreival of multiple `inbounds` and their related details.
        This endpoint support pagination and various filters as indicated below.


        ### Pagination

        The endpoint supports pagination to split the large collection of
        resources into smaller, more manageable chunks or pages. This helps to
        reduce the response size and to improve performance. 

        The endpoint supports only cursor-based technique for pagination. 

        - See also this article on
        [pagination](/docs/shopapi/v3/general-concepts/pagination).


        ### Filters

        The `GET v3/inbounds` endpoint supports filtering on the following
        attributes: `status`.


        #### Filtering on `status`

        The end point allows to set a filter on the `status` of the `inbounds`.
        The filter accepts 

        multiple `status` values, each of which must be URL encoded and
        separated by a comma. 

        *Be aware that the `status` values must be URL encoded to avoid being
        interpreted incorrecly.*

        - `GET {host}/v3/inbounds?filter[status][in]=ABC,DEF` will return the
        `inbounds` with `status` `ABC` and `DEF`.

        - `GET  {host}/v3/inbounds?filter[status][in]=ABC%2CDEF` will return the
        `inbounds` with the `status` `ABC,DEF`.


        ### Including related resources

        The endpoint also supports the inclusion of information of its related
        `inboundItems` negating 

        the need to access these directly.
          `GET {host}/v3/inbounds?include=inboundItems` will return for each `inbound` the list of `inboundItems` with their details. 

        ### Limitations of GET v3/inbounds

        When using this endpoint, expect the following limits on the result set

        - At most 100 `inbounds` will be returned regardless of the `page[size]`
        settings provided in  the request.

        - Ordering is based on the `id` of the `inbound` in ascending order.
      parameters:
        - $ref: '#/components/parameters/inboundStatus-in'
        - $ref: '#/components/parameters/for-inbounds'
      responses:
        '200':
          description: >
            A successful response will yield an array of `inbounds` resources
            (either empty or populated).

            The `next` link can be used to retreive the next set of `inbounds`
            that match the request.
          content:
            application/vnd.api+json:
              schema:
                allOf:
                  - type: object
                    properties:
                      data:
                        type: array
                        items:
                          $ref: '#/components/schemas/inbound'
                  - $ref: '#/components/schemas/pagination-links'
        '401':
          $ref: '#/components/responses/401-unauthorized'
        '406':
          $ref: '#/components/responses/406-not-acceptable'
        '415':
          $ref: '#/components/responses/415-unsupported-media-type'
  /v3/inboundItems/{id}:
    get:
      summary: v3/inboundItems/:id
      operationId: get-v3-inboundItems-by-id
      x-json-api: true
      tags:
        - v3/inbounds
      description: '# GET v3/inboundItems/:id'
      parameters:
        - name: id
          in: path
          required: true
          description: The unique id (integer) of the `inboundItem` to retrieve.
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/vnd.api+json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/inboundItem'
                  - $ref: '#/components/schemas/inboundItemRelationships'
                  - $ref: '#/components/schemas/inboundItemLinksSelf'
        '401':
          $ref: '#/components/responses/401-unauthorized'
        '404':
          $ref: '#/components/responses/404-not-found'
        '406':
          $ref: '#/components/responses/406-not-acceptable'
        '415':
          $ref: '#/components/responses/415-unsupported-media-type'
  /v3/inboundPackingSlips:
    get:
      summary: v3/inboundPackingSlips
      operationId: get-v3-inboundPackingSlips
      x-json-api: true
      x-internal: false
      tags:
        - v3/inboundPackingSlips
      description: >

        # GET v3/inboundPackingSlips

        Allows the retrieval of `inboundPackingSlips` and their current status.
        This endpoint support pagination and various filters as indicated below.


        ### Pagination

        The endpoint supports pagination to split the large collection of
        resources into smaller, more manageable chunks or pages. 

        This helps to reduce the response size and to improve performance. The
        endpoint supports only the cursor-based technique for pagination.

        - See also this article on
        [pagination](/docs/shopapi/v3/general-concepts/pagination).


        ### Filters

        The `GET v3/inboundPackingSlips` endpoint supports filtering on the
        following attributes: `status`, `receivedOn` and `completedOn`. Each of
        these are explained below. Filters can be used in combination with each
        other and with pagination to allow full access to the desired subset of
        `inboundPackingSlip` resources.


        #### Filtering on `status`

        The end point allows to set a filter on the current `status` of
        `inboundPackingSlips`. For more details on the various statusses see
        [`inboundPackingSlipStatus`](alfqon6jbso6b-inbound-packing-slip-status).

        * `GET
        {host}/v3/inboundPackingSlips?filter[status][in]=EXPECTED,COMPLETED`
        will return all `inboundPackingSlips` that have either the status
        `EXPECTED` or `COMPLETED`.


        #### Filtering on `receivedOn`

        To filter `inboundPackingSlips` for which the `inbound` has been
        received before or after a particular date it is possible to specify the
        `filter[receivedOn][lt]` and `filter[receivedOn][lt]`. The received on
        date represents the date at which the `inbound` has started.


        #### Filtering on `completedOn`

        To filter `inboundPackingSlips` for which the `inbound` has been
        completely processed and completed before or after a particular date it
        is possible to specify the `filter[completedOn][lt]` and
        `filter[completedOn][lt]`. The value of the `completedOn` attribute
        represents the date at which the `inbound` was completed and no further
        items are expected.


        ### Including related resources

        The endpoint also supports -to some degree- the inclusion of information
        of related resources. The resources that can be included in the response
        are limited to `inboundPackingSlipItems`. 

        To get the details of related entities included in the response make use
        of the `include` query-parameter in the following way:
          - `GET {host}/v3/inboundPackingSlips?include=inboundPackingSlipItems` will return for each `inboundPackingSlip` the list of `inboundPackingSlipItems` with their details.
          
        ### Limitations of GET v3/inboundPackingSlips

        When using this endpoint, expect the following limits on the result set

        - `inboundPackingSlips` older than 90 days are not returned using this
        method.

        - At most 100 `inboundPackingSlips` will be returned regardless of the
        page[size] settings provided in the request.

        - Ordering is based on the id of the `inboundPackingSlip` in ascending
        order.
      parameters:
        - $ref: '#/components/parameters/for-inboundPackingSlips'
        - $ref: '#/components/parameters/pagination-cursor'
        - $ref: '#/components/parameters/pagination-size'
        - $ref: '#/components/parameters/receivedOn-gt'
        - $ref: '#/components/parameters/receivedOn-lt'
        - $ref: '#/components/parameters/completedOn-gt'
        - $ref: '#/components/parameters/completedOn-lt'
        - $ref: '#/components/parameters/inboundPackingSlipStatus-in'
      responses:
        '200':
          description: OK
          content:
            application/vnd.api+json:
              schema:
                allOf:
                  - type: object
                    properties:
                      data:
                        type: array
                        items:
                          $ref: '#/components/schemas/inboundPackingSlip'
                  - $ref: '#/components/schemas/pagination-links'
        '401':
          $ref: '#/components/responses/401-unauthorized'
        '406':
          $ref: '#/components/responses/406-not-acceptable'
        '415':
          $ref: '#/components/responses/415-unsupported-media-type'
    post:
      summary: v3/inboundPackingSlips
      operationId: post-v3-inboundPackingSlips
      x-json-api: true
      x-internal: false
      tags:
        - v3/inboundPackingSlips
      description: >
        # POST v3/inboundPackingSlips

        Using this endpoint it is possible to create a new `inboundPackingSlip`
        for an `inbound` that is to be expected in one of the warehouses of
        Active Ants.

        Note that an `inboundPackingSlip` and its related
        `inboundPackingSlipItems` can be created in one invocation by making use
        of the `included` relationship as shown in the example request body.


        ### Limitations of `POST /v3/inboundPackingSlips`

        - Each `inboundPackingSlip` must have a unique `reference` not used
        before.

        - Each `sku` must be of a `product` that exists prior to creating the
        `inboundPackingSlip`.

        - Each `sku` can occur only once on an `inboundPackingSlip`, adding
        multiple `inboundPackingSlipItems` 
          for the same `sku` will result in a single `inboundPackingSlipItem` with the sum of the `quantities`.
        - The `quantity` must be 1 or larger.

        - The `warehouseCode` provided in the `expectedIn` must exist and must
        be a valid warehouse to receive goods in. (For more information contact
        your account manager).
      requestBody:
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  allOf:
                    - $ref: '#/components/schemas/inboundPackingSlipIdentification'
                    - $ref: '#/components/schemas/inboundPackingSlipAttributes'
                    - $ref: '#/components/schemas/inboundPackingSlipIncludables'
            examples:
              '1':
                $ref: '#/components/examples/post-v3-inboundPackingSlips-001-request'
      responses:
        '201':
          description: |
            Upon successful creation of the `inboundPackingSlip` in the
            systems, the endpoint returns the `inboundPackingSlip` 
            with all the IDs set to the assigned values.
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/inboundPackingSlip'
              examples:
                '1':
                  $ref: >-
                    #/components/examples/post-v3-inboundPackingSlips-001-response
        '400':
          $ref: '#/components/responses/400-bad-request'
        '401':
          $ref: '#/components/responses/401-unauthorized'
        '406':
          $ref: '#/components/responses/406-not-acceptable'
        '409':
          $ref: '#/components/responses/409-conflict'
        '415':
          $ref: '#/components/responses/415-unsupported-media-type'
  /v3/inboundPackingSlips/{id}:
    get:
      summary: v3/inboundPackingSlips/:id
      operationId: get-v3-inboundPackingSlip-by-id
      x-json-api: true
      x-internal: false
      tags:
        - v3/inboundPackingSlips
      description: >
        # GET v3/inboundPackingSlips/:id

        Allows the retreival of a `inboundPackingSlip` by its id along with its
        current status and optionally all `inboundPackingSlipItems` that are
        part of the `inboundPackingSlip`.


        ### Including related resources

        The endpoint also supports -to some degree- the inclusion of information
        of related resources. 

        The resources that can be included in the response are limited to
        `inboundPackingSlipItems`. 

        To get the details of related entities included in the response make use
        of the `include` query-parameter in the following way:

        - `GET {host}/v3/inboundPackingSlips?include=inboundPackingSlipItems`
        will return for each `inboundPackingSlip` the list of
        `inboundPackingSlipItems` with their details.
      parameters:
        - schema:
            type: string
          name: id
          in: path
          required: true
          description: The unique id (integer) of the `inboundPackingSlip` to retrieve.
        - $ref: '#/components/parameters/for-inboundPackingSlips'
      responses:
        '200':
          description: OK
          content:
            application/vnd.api+json:
              schema:
                allOf:
                  - type: object
                    properties:
                      data:
                        $ref: '#/components/schemas/inboundPackingSlip'
                  - $ref: '#/components/schemas/inboundPackingSlipLinksSelf'
        '401':
          $ref: '#/components/responses/401-unauthorized'
        '404':
          $ref: '#/components/responses/404-not-found'
        '406':
          $ref: '#/components/responses/406-not-acceptable'
        '415':
          $ref: '#/components/responses/415-unsupported-media-type'
  /v3/products:
    get:
      summary: v3/products
      operationId: get-v3-products
      x-json-api: true
      x-internal: false
      description: >
        # GET v3/products

        Allows the retrieval of multiple `products` and their related details.
        This endpoint supports pagination and various filters as indicated
        below.


        ### Pagination

        The endpoint supports pagination to split the large collection of
        resources into smaller, more manageable chunks or pages. This helps to
        reduce the response size and to improve performance. The endpoint
        supports only cursor-based pagination. 

        - See also this article on
        [pagination](/docs/shopapi/v3/general-concepts/pagination).


        ### Filters

        The `GET v3/products` endpoint supports filtering on the following
        attributes: `sku` and `barcode`. Each of these is explained below.
        Filters can be used in combination with each other and with pagination
        to allow full access to the desired subset of `product` resources.


        #### Filtering on `sku`

        The endpoint allows setting a filter on the `sku` of `products`. The
        filter accepts multiple `sku` values, each of which must be URL encoded
        and separated by a comma. Each `sku` returns at most one `product`
        resource but could also return none. *Be aware that the SKUs must be URL
        encoded to avoid being interpreted incorrectly.*

        - `GET {host}/v3/products?filter[sku][in]=ABC,DEF` will return the
        `products` with sku `ABC` and `DEF`.

        - `GET {host}/v3/products?filter[sku][in]=ABC%2CDEF` will return the
        `product` with the sku `ABC,DEF`.


        #### Filtering on `barcode`

        The endpoint allows setting a filter on the `barcode` of `products`. The
        filter accepts multiple `barcode` values, each of which must be URL
        encoded and separated by a comma. Each `barcode` returns at most one
        `product` resource but could also return none. *Be aware that the
        `barcodes` must be URL encoded to avoid being interpreted incorrectly.*

        - `GET {host}/v3/products?filter[barcode][in]=848017,748222` will return
        the `products` with barcodes `848017` and `748222`.

        - `GET {host}/v3/products?filter[barcode][in]=848017%2C748222` will
        return the `product` with the barcode `848017,748222`.


        ### Including related resources

        This endpoint does not support inclusion of other resources.


        ### Limitations of GET v3/products 

        When using this endpoint, expect the following limits on the result set:

        - At most 100 `products` will be returned regardless of the `page[size]`
        settings provided in the request.

        - Ordering is based on the `id` of the `product` in ascending order.

        - When providing multiple filters they will all be applied (so both
        `filter[sku][in]` and `filter[barcode][in]`, will result in products
        having both these values).

        - Users are rate-limited to 500 requests per hour on this service.
      parameters:
        - $ref: '#/components/parameters/filter-sku-in'
        - $ref: '#/components/parameters/filter-barcode-in'
      responses:
        '200':
          description: >
            A successful response consists of zero or more `product` resources
            being returned as part of the `data` 

            element in the response body that match the filtering and pagination
            query parameters provided in the 

            request. Also, a set of pagination links will be returned to assist
            with further invocations of the endpoint.
          content:
            application/vnd.api+json:
              schema:
                allOf:
                  - type: object
                    properties:
                      data:
                        type: array
                        items:
                          $ref: '#/components/schemas/product'
                  - $ref: '#/components/schemas/pagination-links'
              examples:
                '1':
                  $ref: '#/components/examples/get-v3-products-001-response'
        '401':
          $ref: '#/components/responses/401-unauthorized'
        '406':
          $ref: '#/components/responses/406-not-acceptable'
        '415':
          $ref: '#/components/responses/415-unsupported-media-type'
        '429':
          $ref: '#/components/responses/429-too-many-requests'
      tags:
        - v3/products
    post:
      summary: v3/products
      operationId: post-v3-products
      x-json-api: true
      x-internal: false
      tags:
        - v3/products
      description: >
        # POST v3/products


        ### Limitations of POST /v3/products ###

        When using this endpoint, expect the following limitations are
        applicable

        - The `sku` must be unique and never used before in the context of the
        user.

        - The `barcode` must be unique and never used before in the context of
        the user.

        - The `name` is used both internally and towards consumer communication,
        however it is possible to specify a different name during ordering on
        the `orderItem` which will be used within that `order` and related
        `shipment(s)`

        - `hsCode` limitations:
            - To specify the 'default' or'fallback' `hsCodes` make use of country `XX` to denote the     default `hsCode` to use in most scenarios. 
            - When at least one `hsCode` is provided, but none have country `XX`, the system will copy `EU`, `NL` or the first entry as the default/fallback `hsCode`.
            - `hsCodes` are not formatted and consist of digits only. Other characters will be stripped from the code.
        - Products that are perishable and for which the expiration date must be
        registered during processing of inbound must have:
          - `expirationDate` set to `SCAN_AT_INBOUND`.
          - `expirationDateMargin` to a positive number.
          - `expirationDateWarning` to be number equal or larger than `expirationDateMargin`.
      requestBody:
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  allOf:
                    - $ref: '#/components/schemas/productIdentifier'
                    - $ref: '#/components/schemas/productAttributes'
            examples:
              '1':
                $ref: '#/components/examples/post-v3-products-001-request'
              '2':
                $ref: '#/components/examples/post-v3-products-002-request'
      responses:
        '201':
          description: OK
          content:
            application/vnd.api+json:
              schema:
                allOf:
                  - type: object
                    properties:
                      data:
                        $ref: '#/components/schemas/product'
                  - $ref: '#/components/schemas/productLinksSelf'
        '401':
          $ref: '#/components/responses/401-unauthorized'
        '406':
          $ref: '#/components/responses/406-not-acceptable'
        '409':
          $ref: '#/components/responses/409-conflict'
        '415':
          $ref: '#/components/responses/415-unsupported-media-type'
  /v3/products/{id}:
    get:
      summary: v3/products/:id
      operationId: get-v3-products-by-id
      x-json-api: true
      x-internal: false
      tags:
        - v3/products
      description: >
        # GET v3/products/:id

        Allows the retreival of a specific `product` and its related details by
        its `id`.


        ### Including related resources

        This endpoint does not support inclusion of other resources.
      parameters:
        - schema:
            type: string
          name: id
          in: path
          required: true
          description: The unique id (integer) of the `product` to retrieve.
      responses:
        '200':
          description: >
            A successful response consists of a single `product` resource being
            returned as part of the `data` 

            element in the response body.
          content:
            application/vnd.api+json:
              schema:
                allOf:
                  - type: object
                    properties:
                      data:
                        $ref: '#/components/schemas/product'
                  - $ref: '#/components/schemas/productLinksSelf'
              examples:
                '1':
                  $ref: '#/components/examples/get-v3-products-by-id-001-response'
        '401':
          $ref: '#/components/responses/401-unauthorized'
        '404':
          $ref: '#/components/responses/404-not-found'
        '406':
          $ref: '#/components/responses/406-not-acceptable'
        '415':
          $ref: '#/components/responses/415-unsupported-media-type'
        '429':
          $ref: '#/components/responses/429-too-many-requests'
    put:
      summary: v3/products/:id
      operationId: put-v3-products-by-id
      x-json-api: true
      x-internal: false
      tags:
        - v3/products
      description: >
        # GET v3/products/:id

        Enables updating and modifying `product` information related details by
        its `id`. Note that not all attributes can be modified once the
        `product` is created and others are not mutable through the API.


        ### Including related resources

        This endpoint does not support inclusion of other resources.


        ### Limitations of PUT /v3/products/:id

        When using this endpoint, expect the following limitations

        - The following attributes of a `product` can not be modified, or only
        under certain conditions and result in a `409 Conflict`:
            - `sku` sku changes are not supported.
            - `barcode` can be changed as long as there is no stock for that `product`. 
            - `weight` this attribute is determined during the first inbound.
            - `length`, `width` and `height` these attributes are determined during the first inbound.
      parameters:
        - schema:
            type: string
          name: id
          in: path
          required: true
          description: The unique id (integer) of the `product` to retrieve.
      requestBody:
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  $ref: '#/components/schemas/product'
      responses:
        '200':
          description: OK
          content:
            application/vnd.api+json:
              schema:
                allOf:
                  - type: object
                    properties:
                      data:
                        $ref: '#/components/schemas/product'
                  - $ref: '#/components/schemas/productLinksSelf'
        '401':
          $ref: '#/components/responses/401-unauthorized'
        '404':
          $ref: '#/components/responses/404-not-found'
        '406':
          $ref: '#/components/responses/406-not-acceptable'
        '409':
          $ref: '#/components/responses/409-conflict'
        '415':
          $ref: '#/components/responses/415-unsupported-media-type'
  /v3/products/{id}/image:
    post:
      summary: v3/products/:id/image
      operationId: post-v3-productImages-by-productId
      x-json-api: false
      x-internal: false
      tags:
        - v3/products
      description: >
        # POST v3/products/:id/image

        Allows the user to add or update the commercial image of a single
        `products`. The commercial image is used as reference image in when
        searching products in Maya and has no functional implications.
        Internally different images of the product are used for recognition and
        processing, however the commercial image may be relevant when dealing
        with consumer related issues about the product.



        ### Limitations of POST /v3/propducts/:id/image

        - Each product can have only one commercially assigned image

        - The size of the file must be less than 10MiB

        - Only the following file types are supported:
          - `image/png`
          - `image/x-png`
          - `image/apng`
          - `image/jpg`
          - `image/jpeg`
          - `image/pjpeg`
          - `image/gif` (not recommended)
          - `image/bmp` (not recommended)
          - `image/webp` (partially, may cause issues)
          - `application/x-photoshop` (can't be rendered properly, but is accepted)
      parameters:
        - name: id
          in: path
          required: true
          description: >-
            The `id` of the `product` for which the image is to be set. Note
            that the id must be the internally assigned id and not the
            user-assigned id
          schema:
            type: integer
            examples:
              - 1267733
      requestBody:
        required: true
        content:
          application/octet-stream:
            schema:
              type: string
              format: binary
              description: >
                The (commercial) product image to attach to the product for
                reference.
      responses:
        '200':
          description: >
            Upon successful submission of the `productImage` a success message
            is returned, containing the product details, but not the image
            itself.
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    allOf:
                      - type: object
                        properties:
                          data:
                            $ref: '#/components/schemas/product'
              examples:
                200-1:
                  $ref: '#/components/examples/200-1-success-productImage-posted'
        '400':
          description: >-
            When the image is too large or of an invalid format the following
            error is returned.
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/error-response'
              examples:
                404-7:
                  summary: product image rejected
                  $ref: '#/components/examples/404-8-image-rejected'
        '401':
          $ref: '#/components/responses/401-unauthorized'
        '406':
          $ref: '#/components/responses/406-not-acceptable'
        '415':
          $ref: '#/components/responses/415-unsupported-media-type'
  /v3/returnItems:
    get:
      summary: v3/returnItems
      operationId: get-v3-returnItems
      x-json-api: true
      x-internal: false
      tags:
        - v3/returns
      description: >-

        # GET v3/returnItems

        The `GET v3/returnItems` endpoint returns all returns that have been
        processed by one of the warehouses of Active Ants. Returns that have
        been delivered to, but not processed by, Active Ants are not returned by
        this endpoint yet until these returns are processed.


        ### Pagination

        The endpoint supports pagination to split the large collection of
        resources into smaller, more manageable chunks or pages. This helps to
        reduce the response size and to improve performance. The endpoint
        supports only cursor-based technique for pagination

        - See also this article on
        [pagination](/docs/shopapi/v3/general-concepts/pagination).


        ### Filters

        The `GET v3/returnItem` endpoint supports filtering on `processedOn`.
        Each of these are explained below. Filters can be used in combination
        with eachother and with pagination to allow full access to the desired
        subset of returnItems.

        <div class="admonition admonition--note"> 

        Attribute <code>restockOn</code> and the filters
        <code>filter[restockOn][before]</code> and
        <code>filter[restockOn][after]</code>

        are under development.

        </div>


        #### Filtering on `processedOn`

        The results returned by this service can be filtered based on the date
        the `returnItem` was processed in the warehouse. To do so make use of
        the `filter[processedOn]` parameter in the following manner:

        - `GET {host}/v3/returnItems?filter[processedOn][lt]={date}` will return
        returned items that have been created **before** the provided date.
        Returned items that has been processed on that date are not included in
        the results.

        - `GET {host}/v3/returnItems?filter[processedOn][gt]={date}` will return
        returned items that have been created **after** the provided date.
        Returned items that have been processed on that date are not included in
        the results.

        - `GET
        {host}/v3/returnItems?filter[processedOn][gt]={date_1}&filter[processedOn][lt]={date_2}`
        will return returned itemsthat have created **between** dates {date_1}
        and {date_1}. Returned items that have been processed on either date are
        not included in the results.


        ### Including related resources

        There are currently no resources to include in the response.


        ### Limitations of `GET v3/returnItems`

        - At most 100 `returnItems` resources are returned regardless of the
        value provided by the `page[size]` query parameter.

        - Ordering is by `id` and in ascending order.
      parameters:
        - $ref: '#/components/parameters/filter-processedOn-after'
        - $ref: '#/components/parameters/filter-processedOn-before'
      responses:
        '200':
          description: OK
          content:
            application/vnd.api+json:
              schema:
                allOf:
                  - type: object
                    properties:
                      data:
                        type: array
                        items:
                          $ref: '#/components/schemas/returnItem'
                  - $ref: '#/components/schemas/pagination-links'
              examples:
                '1':
                  $ref: '#/components/examples/get-v3-returnItems-001-response'
        '401':
          $ref: '#/components/responses/401-unauthorized'
        '406':
          $ref: '#/components/responses/406-not-acceptable'
        '415':
          $ref: '#/components/responses/415-unsupported-media-type'
  /v3/stock:
    get:
      summary: v3/stock
      operationId: get-v3-stock
      tags:
        - v3/stock
      x-json-api: true
      x-internal: false
      description: >
        # GET v3/stock

        The `GET v3/stock` endpoint will return up to 100 `stock` records at a
        time. The definition of stock is `products` at a `stockLocation` with
        **shared characteristics**. This means that whenever two identical
        `products` are located at the same `stockLocation`, that both share all
        related attributes such as `lotNumber`, `expirationDate`, etc.


        ### Pagination

        The endpoint supports pagination to split the large collection of
        resources into smaller, more manageable chunks or pages. This helps to
        reduce the response size and to improve performance. The endpoint
        supports only cursor-based technique for pagination. 

        - See also this article on
        [pagination](/docs/shopapi/v3/general-concepts/pagination).


        ### Filters

        The `GET v3/stock` endpoint supports filtering on the attributes `sku`,
        [`locationType`](reference/v3/stockLocation/stockLocationType.yaml) and
        `modifiedOn`. Each of these are explained below. Filters can be used in
        combination with eachother and with pagination to allow full access to
        the desired subset of stock.


        #### Filtering on `modifiedOn`

        The results returned by this service can be filtered based on the
        modification date of the stock. To do so make use of the
        `filter[modifiedOn]` parameter in the following manner:
          - `GET {host}/v3/stock?filter[modifiedOn][lt]={date}` will return stock that have been created **before** the provided date. Stock that has been created on that date are not included in the results.
          - `GET {host}/v3/stock?filter[createdOn][gt]={date}` will return stock that have been created **after** the provided date. Stock that has been created on that date are not included in the results.
          - `GET {host}/v3/stock?filter[createdOn][gt]={date_1}&filter[createdOn][lt]={date_2}` will return stock that have created **between** dates {date_1} and {date_1}. Stock that has been created on either date are not included in the results.

        #### Filtering on `locationType`

        By specifying one or more `locationType` values the stock returned will
        be filtered on that type. See the documentation of
        [`locationType`](reference/v3/stockLocation/stockLocationType.yaml) for
        more details on the options.

        -  `GET {host}/v3/stock?filter[locationType][in]=INBOUND,PALLET` will
        return all stock 

        on either location.


        #### Filtering on `sku`

        By specifying the product `sku` it is possible to look for stock of that
        product specifically. *Be aware that the SKU's must be URL encoded to
        avoid being interpreted incorrecly.*

        - `GET {host}/v3/stock?filter[sku][in]=09238532,TRS-001-1` will return
        the stock for the  specified `sku`.


        #### Filtering on `expirationStatus`

        By specifying one or more `expirationStatus` values the stock returned
        will be filtered on that status. See the documentation of
        [`expirationStatus`](reference/v3/stock/expirationStatus.yaml) for more
        details on the options.


        ### Including related resources

        The endpoint also supports -to some degree- the inclusion of information
        of related resources. This option is provided to allow clients used to
        the v2 version of the stock endpoint to be able to use the v3 version
        more seemlessly. To get the details of related entities the `include`
        parameter must be added to the URI in the following way:

        - `GET {host}/v3/stock?include=stockLocation` will return the stock with
        some `stockLocation` related details


        Note: inclusion of `product` has been deprecated


        ### Limitations of `GET v3/stock`

        - At most 100 `stock` resources are returned regardles of the value
        provided by the `page[size]` query parameter.

        - Ordering is by `id` and in ascending order.
      parameters:
        - $ref: '#/components/parameters/pagination-cursor'
        - $ref: '#/components/parameters/pagination-size'
        - $ref: '#/components/parameters/filter-locationType-in'
        - $ref: '#/components/parameters/filter-sku-in'
        - $ref: '#/components/parameters/filter-modifiedOn-after'
        - $ref: '#/components/parameters/filter-modifiedOn-before'
        - $ref: '#/components/parameters/filter-expirationStatus-in'
        - $ref: '#/components/parameters/for-stock'
      responses:
        '200':
          description: Response for the `GET v3/stock` endpoint
          content:
            application/vnd.api+json:
              schema:
                allOf:
                  - type: object
                    properties:
                      data:
                        type: array
                        minItems: 0
                        maxItems: 100
                        items:
                          $ref: '#/components/schemas/stock'
                  - $ref: '#/components/schemas/pagination-links'
              examples:
                '1':
                  $ref: '#/components/examples/get-v3-stock-001-response'
                '2':
                  $ref: '#/components/examples/get-v3-stock-002-response'
        '401':
          $ref: '#/components/responses/401-unauthorized'
        '406':
          $ref: '#/components/responses/406-not-acceptable'
        '415':
          $ref: '#/components/responses/415-unsupported-media-type'
  /v3/stock/{id}:
    get:
      summary: v3/stock/:id
      operationId: get-v3-stock-by-id
      tags:
        - v3/stock
      x-internal: false
      x-json-api: true
      description: >-
        # GET v3/stock/:id

        The `GET v3/stock/:id` endpoint will return a specific `stock` record.
        Note that the endpoint returns information about a single `stock` record
        which will no longer exist once all `products` have been moved away from
        it. Stock is transient and may be moved around at any time. It is
        therefor recommended not to persist `stock` and `id` in your systems.


        ### Including related resources

        The endpoint also supports -to some degree- the inclusion of information
        of related resources. This option is provided to allow clients used to
        the v2 version of the stock endpoint to be able to use the v3 version
        more seemlessly. To get the details of related entities the `include`
        parameter must be added to the URI in the following way:

        - `GET {host}/v3/stock?include=stockLocation` will return the stock with
        some `stockLocation` related details.


        Note: inclusion of `product` has been deprecated.
      parameters:
        - $ref: '#/components/parameters/for-stock'
        - schema:
            type: string
          name: id
          in: path
          required: true
          description: The unique id (integer) of the `stock` to retrieve.
      responses:
        '200':
          description: OK
          content:
            application/vnd.api+json:
              schema:
                description: Response for the `GET v3/stock/{id}` endpoint
                allOf:
                  - type: object
                    properties:
                      data:
                        $ref: '#/components/schemas/stock'
                  - $ref: '#/components/schemas/stockLinksSelf'
        '401':
          $ref: '#/components/responses/401-unauthorized'
          description: Unauthorized
        '404':
          $ref: '#/components/responses/404-not-found'
        '406':
          $ref: '#/components/responses/406-not-acceptable'
        '415':
          $ref: '#/components/responses/415-unsupported-media-type'
  /v3/stockLevels:
    get:
      summary: v3/stockLevels
      operationId: get-v3-stockLevels
      x-json-api: true
      x-internal: false
      tags:
        - v3/stock
      description: >-
        # GET v3/stockLevels

        Returns the various `stockLevels` of the `product` indicated by the id
        in the url. The `GET v3/stockLevels` endpoint will return up to 100
        `stockLevel` resource at a time. Each `stockLevel` is related to a
        single `product` by its `id` and may contain multiple levels for each
        warehouse the `product` is located in.


        ### Pagination

        The endpoint supports pagination to split the large collection of
        resources into smaller, more manageable chunks or pages. This helps to
        reduce the response size and to improve performance. The endpoint
        supports two forms of cursor-based pagination, both are explained below.

        - See also this article on
        [pagination](/docs/shopapi/v3/general-concepts/pagination).


        #### Iterating over all stock levels of all `product`s

        By default the end-point will enable the user to iterate over all stock
        levels of all products in ascending order of `id` (product-id). To begin
        iterating start by making the following request: `GET v3/stockLevels`.
        It is possible to specify a `page[size]` to reduce the number of items
        returned from 100. To iterate, invoke the URL provided in the `next`
        parameter of the response. Each response will contain another `next`
        parameter pointing to the next 'page'. This process can be continued
        until the response either contains fewer `stockLevel` resources than
        requested using the `page[size]` parameter or there is no `next`
        paramter in the response to invoke.


        #### Iterating over stock levels that changed on or after a certain
        point in time

        The end-point also supports iteration over the stock levels of
        `product`s that have changed on or since a certain point in time. To
        start this iteration, invoke the endpoint using the filter
        `filter[mutatedOn][gte]={timestamp}`. The parameter `page[size]` can
        also be used in this case. For example `GET
        v3/stockLevels?filter[mutatedOn][gte]=2023-07-28T11:25:00` will return
        the stockLevels of the first 100 `sku`s that have changed since 11:25 on
        2023-07-28. The response will also have a `next` parameter that will
        point to the next 'page' and by repeatedly invoking the `next` of each
        response will guarnatee that all stock levels changed since the
        prodivded timestamp are returned. The final response will contain fewer
        `stockLevel` resources than requested using the `page[size]` parameter
        or will have no `next` paramter to invoke at which point the `product`
        whose stock level was mutated latest has been returned. Note however
        that during this process, stock mutations may have occurred on
        `product`s whose stock level was already returned in a previous
        response. The server will return these updated stock levels for those
        `product`s again on more recent 'pages' (i.e. more towards the end of
        the iteration process) because these `product`s now have a more recent
        `mutatedOn` value.


        ### Filters

        The `GET v3/stockLevels` endpoint supports filtering on the following
        attributes: `sku`;\


        #### Filtering on `sku`

        By specifying the product `sku` it is possible to look for stock of that
        product specifically. *Be aware that the SKU's must be URL encoded to
        avoid being interpreted incorrecly.* `stockLevels` for:

        - `GET {host}/v3/stockLevels?filter[sku][in]=ABC,DEF` will return the
        `stockLevels` for the `products` with sku `ABC` and `DEF`.

        - `GET {host}/v3/stockLevels?filter[sku][in]=ABC%2CDEF` will return the
        `stockLevels` for the `product` with sku `ABC,DEF`.


        #### Filtering on `mutatedOn`

        By specifying a timestamp to the filter `filter[mutatedOn][gte]` it
        becomes possible to iterate over all stockLevels that have changed since
        that timestamp. (See the section above for a more detailed explanation
        of this process.) The filter on `mutatedOn` supports only the 'greater
        than or equal' comparitor: `filter[mutatedOn][gte]={timestamp}` and will
        cause the sorting of the response to adhere to `sort=mutadedOn,id`
        regardless what was provided or requested. The `sort` query paramter is
        implicitly set to `mutatedOn,id` when using this filter.


        **Note that the timestamp is considered to be in UTC**


        ### Ordering

        The endpoint has two orderings of the result sets, however this ordering
        cannot be specified by the user.


        ### Limitations of `GET v3/stockLevels`

        - At most 100 `stockLevel` resources are returned regardles of the value
        provided by the `page[size]` query parameter.

        - The `id` of the `stockLevel` is the same as the `product`.

        - Ordering of results:
          - By default or when using `page[cursor]`, the ordering is set to `sort=id`. This is by `id` of the `sku`\\\\`product` and in ascending order to guarantee that each `sku` appears exactly once.
        - When using `filter[mutatedOn][gte]` the ordering is set to
        `sort=mutatedOn,id`. This ordering is fixed for this filter to guarantee
        that no `stockLevels` are omitted from the results when iterating over
        the set of `stockLevels` that changed since the provided timestamp.

        - `filter[mutatedOn][gte]` expectes a timestamp in UTC.

        - Users are rate-limited to 500 requests per hour on this service.
      parameters:
        - $ref: '#/components/parameters/pagination-cursor'
        - $ref: '#/components/parameters/pagination-size'
        - $ref: '#/components/parameters/filter-sku-in'
        - $ref: '#/components/parameters/filter-mutatedOn-on-or-after'
        - schema:
            type: string
            enum:
              - id
              - mutatedOn,id
            default: id
            example: mutatedOn,id
          in: query
          name: sort
          description: >
            Specifies the sorting to be used on the result set, note that this
            parameter is silently 

            overwritten/set depending on the use-case. See documentation for
            more details.
      responses:
        '200':
          description: OK
          content:
            application/vnd.api+json:
              schema:
                allOf:
                  - type: object
                    properties:
                      data:
                        type: array
                        items:
                          $ref: '#/components/schemas/stockLevel'
                  - $ref: '#/components/schemas/pagination-links'
        '401':
          $ref: '#/components/responses/401-unauthorized'
        '404':
          $ref: '#/components/responses/404-not-found'
        '406':
          $ref: '#/components/responses/406-not-acceptable'
        '415':
          $ref: '#/components/responses/415-unsupported-media-type'
  /v3/stockLevels/{id}:
    get:
      summary: v3/stockLevels/:id
      operationId: get-v3-stockLevels-by-id
      x-json-api: true
      x-internal: false
      tags:
        - v3/stock
      description: >-
        # GET v3/stockLevels/:id

        Returns the various `stockLevels` of the `product` indicated by the id
        in the url.


        ### Limitations of `GET v3/stockLevels/:id`

        - Users are rate-limited to 500 requests per hour on this service.
      parameters:
        - schema:
            type: string
          name: id
          in: path
          required: true
          description: The unique id (integer) of the `stockLevel` to retrieve.
      responses:
        '200':
          description: OK
          content:
            application/vnd.api+json:
              schema:
                allOf:
                  - type: object
                    properties:
                      data:
                        $ref: '#/components/schemas/stockLevel'
                  - $ref: '#/components/schemas/stockLevelLinksSelf'
        '401':
          $ref: '#/components/responses/401-unauthorized'
        '404':
          $ref: '#/components/responses/404-not-found'
        '406':
          $ref: '#/components/responses/406-not-acceptable'
        '415':
          $ref: '#/components/responses/415-unsupported-media-type'
  /v3/stockMutations:
    get:
      summary: v3/stockmutations
      operationId: get-v3-stockmutations
      x-json-api: true
      x-internal: false
      tags:
        - v3/stock
      description: >-
        # GET v3/stockMutations

        This endpoint allows you to retrieve a list of up to 100 stock mutations
        at a time, sorted in ascending order by the createdOn attribute.
        However, this endpoint will only return stock mutations that are less
        than 7 days old¹. Note that any stock mutations related to shipments or
        damaged eturns cannot be accessed through this endpoint. Instead,
        mutations related to shipments must be inferred from the GET
        v3/shipments endpoint.


        ### Pagination

        The endpoint supports pagination to split the large collection of
        resources into smaller, more manageable chunks or pages. This helps to
        reduce the response size and to improve performance. The endpoint
        supports both cursor-based and number-based techniques for pagination,
        but it is recommended to use cursor-based as this is more performant and
        reliable due to page-shifting. 

        - See also this article on
        [pagination](docs/articles/concepts/pagination.md).


        ### Filters

        The `GET v3/stockmutations` endpoint supports filtering on the following
        attributes: `createdOn`,
        [`type`](reference/v3/stockmutation/stockmutationType.yaml) and
        `synced`. Each of these are explained below. Filters can be used in
        combination with eachother and with pagination as to allow full access
        to the desired subset of stockmutations.


        #### Filtering on `createdOn`

        The results returned by this service can be filtered based on the
        creation date of the stockmutation. To do so make use of the
        `filter[createdOn]` parameter in the following manner:

        - `GET {host}/v3/stockmutations?filter[createdOn][lt]={date}` will
        return stockmutations that have been created **before** the provided
        date. Stockmutations that have been created on that date are not
        included in the results.

        - `GET {host}/v3/stockmutations?filter[createdOn][gt]={date}` will
        return stockmutations that have been created **after** the provided
        date. Stockmutations that were created on that date are not included in
        the results.

        - `GET
        {host}/v3/stockmutations?filter[createdOn][gt]={date_1}&filter[createdOn][lt]={date_2}`
        will return stockmutations that have created **between** dates {date_1}
        and {date_1}. Stockmutations that were created on either date are not
        included in the results.


        #### Filtering on `type`

        The endpoint allows filtering on one or more
        [`stockmutationType`](reference/v3/stockmutation/stockmutationType.yaml)
        values. To filter on `stockmutationType` use the `filter[type]` query
        parameter as follows:

        - `GET {host}/v3/stockmutations?filter[type][in]=RETURN` will return all
        stockmutations that relate to a `RETURN`.

        - `GET {host}/v3/stockmutations?filter[type][in]=RETURN,PRODUCTION` will
        return all stockmutations that belong to `RETURN` or `PRODUCTION`.


        #### Filtering on `synced` (obsolete)

        To support legacy stockmutation synchronization, the endpoint allows
        users to request unsynced or synced `stockmutations`. Internally a
        stockmutation is marked as unsynced whenever it is created. To fetch the
        stockmutations that require synchronization invoke the endpoint as
        follows:

        * `GET {host}/v3/stockmutations?filter[synced]=false` will return all
        stockmutations that have changed since last time these were
        'synchronized'. To mark them as synced use the old v2 endpoint.


        ### Example invokations

        * `GET {host}/v3/stockmutations` Returns the 100 oldest stockmutations
        up to 7 days back. Note that the service has a limit of 7 days. This
        invokation is equivalent to `GET
        {host}/v3/stockmutations?page[size]=100&page[cursor]=0` and `GET
        {host}/v3/stockmutations?page[size]=100&page[number]=1`

        * `GET {host}/v3/stockmutations?filter[createdOn][gt]=2023-01-01`
        Returns up to 100 stockmutations that were created after 2023-01-01. The
        stockmutations returned are never older than 7 days, regardless of the
        date provided in the request.

        * `GET {host}/v3/stockmutation?filter[type][in]=INBOUND,PRODUCTION`
        Returns only stockmutations that are related to inbounds or productions

        * `GET {host}/v3/stockmutations?filter[synced]=false` Returns all
        stockmutations that haven't been synchronized. This corresponds to the
        old way of 

        synchronizing information. Note that this feature will be removed when
        stockmutation WebHooks become available.


        ### Limitations of the `GET v3/stockmutations`

        - No `stockmutation` older than 7 days¹ are returned.

        - At most 100 `stockmutation` resources are returned per request,
        regardless of the value  provided in the `page[size]` query parameter.

        - Ordering is by `id` of the `stockmutation` in ascending order.

        ¹ Note this limit may change over time without notice!
      parameters:
        - $ref: '#/components/parameters/pagination-cursor'
        - $ref: '#/components/parameters/pagination-number'
        - $ref: '#/components/parameters/pagination-size'
        - $ref: '#/components/parameters/filter-synched'
        - $ref: '#/components/parameters/filter-createdOn-before'
        - $ref: '#/components/parameters/filter-createdOn-after'
        - $ref: '#/components/parameters/filter-stockmutation-type'
      responses:
        '200':
          description: OK
          content:
            application/vnd.api+json:
              schema:
                description: Succesful response of the `GET v3/stockmutations` endpoint.
                allOf:
                  - type: object
                    properties:
                      data:
                        type: array
                        minItems: 0
                        maxItems: 100
                        items:
                          $ref: '#/components/schemas/stockmutation'
                  - $ref: '#/components/schemas/pagination-links'
              examples:
                '1':
                  $ref: '#/components/examples/get-v3-stockMutations'
        '401':
          $ref: '#/components/responses/401-unauthorized'
        '406':
          $ref: '#/components/responses/406-not-acceptable'
        '415':
          $ref: '#/components/responses/415-unsupported-media-type'
  /v3/webhooks:
    get:
      summary: v3/webhooks
      operationId: get-v3-webhooks
      tags:
        - v3/webhooks
      x-json-api: true
      x-internal: false
      description: >
        # GET v3/webhooks

        The `GET v3/webhooks` endpoint returns all `webhooks` that have been
        registered.


        ### Pagination

        The endpoint supports pagination to split the large collection of
        resources into smaller, more 

        manageable chunks or pages. This helps to reduce the response size and
        to improve performance. 

        The endpoint supports only cursor-based technique for pagination

        - See also this article on
        [pagination](/docs/shopapi/v3/general-concepts/pagination).


        ### Filters

        There are currently no filters applicable to this endpoint.


        ### Including related resources

        There are currently no resources to include in the response.


        ### Limitations of `GET v3/webhooks`

        - At most 100 `webhook` resources are returned regardless of the value
        provided by 

        the `page[size]` query parameter.

        - Ordering is by `id` and in ascending order.
      responses:
        '200':
          description: OK
          content:
            application/vnd.api+json:
              schema:
                allOf:
                  - type: object
                    properties:
                      data:
                        type: array
                        items:
                          $ref: '#/components/schemas/webhook'
                  - $ref: '#/components/schemas/pagination-links'
        '401':
          $ref: '#/components/responses/401-unauthorized'
        '406':
          $ref: '#/components/responses/406-not-acceptable'
        '415':
          $ref: '#/components/responses/415-unsupported-media-type'
    post:
      summary: v3/webhooks
      operationId: post-v3-webhooks
      tags:
        - v3/webhooks
      x-json-api: true
      x-internal: false
      description: >+
        # POST v3/webhooks

        The `POST v3/webhooks` endpoint allows for registering a new `webhook`
        to an specific `eventType` of a specific `entityType`.


        ### Including related resources

        There are currently no resources to be included in the request or
        response.


        ### Limitations of `POST v3/webhooks`

        - Only valid `entity` and `event` pairs are supported, see the
        definition of
        [`webhookEvent`](../../reference/v3/stockmutation/webhookEvent.yaml).

      requestBody:
        content:
          application/vnd.api+json:
            schema:
              allOf:
                - type: object
                  properties:
                    data:
                      $ref: '#/components/schemas/webhook'
      responses:
        '201':
          description: Created
          content:
            application/vnd.api+json:
              schema:
                allOf:
                  - type: object
                    properties:
                      data:
                        $ref: '#/components/schemas/webhook'
                  - $ref: '#/components/schemas/webhookLinksSelf'
        '400':
          $ref: '#/components/responses/400-bad-request'
        '401':
          $ref: '#/components/responses/401-unauthorized'
        '406':
          $ref: '#/components/responses/406-not-acceptable'
        '415':
          $ref: '#/components/responses/415-unsupported-media-type'
  /v3/webhooks/{id}:
    get:
      summary: v3/webhooks/:id
      operationId: get-v3-webhooks-by-id
      tags:
        - v3/webhooks
      x-json-api: true
      x-internal: false
      description: >
        # GET v3/webhooks/:id


        The `GET v3/webhooks/:id` endpoint allows the retrieval of one specific
        `webhooks` that has been registered.


        ### Including related resources

        There are currently no resources to include in the response.


        ### Limitations of `GET v3/webhooks/:id`

        None
      parameters:
        - schema:
            type: string
          name: id
          in: path
          required: true
          description: The unique id (integer) of the `webhook` to retrieve.
      responses:
        '200':
          description: OK
          content:
            application/vnd.api+json:
              schema:
                allOf:
                  - type: object
                    properties:
                      data:
                        type: array
                        items:
                          $ref: '#/components/schemas/webhook'
                  - $ref: '#/components/schemas/pagination-links'
        '401':
          $ref: '#/components/responses/401-unauthorized'
        '404':
          $ref: '#/components/responses/404-not-found'
        '406':
          $ref: '#/components/responses/406-not-acceptable'
        '415':
          $ref: '#/components/responses/415-unsupported-media-type'
    put:
      summary: v3/webhooks/:id
      operationId: put-v3-webhooks-by-id
      x-json-api: true
      x-internal: false
      tags:
        - v3/webhooks
      description: >

        # PUT v3/webhooks/:id

        The `PUT /v3/webhooks/:id` endpoint allows for modifying the `targetUrl`
        and enabled state (`isActive`) of an existing `webhook`.


        ### Including related resources

        There are currently no resources to be included in the request or
        response.


        ### Limitations of `PUT v3/webhooks/:id`

        - Attributes `entity` and `event` can not be modified using this
        operation, change these create a new `webhook` using `POST /v3/webhooks`
        and delete this one using `DELETE /v3/webhooks/:id` instead.
      parameters:
        - schema:
            type: string
          name: id
          in: path
          required: true
          description: The unique id (integer) of the `webhook` to retrieve.
      requestBody:
        content:
          application/vnd.api+json:
            schema:
              allOf:
                - type: object
                  properties:
                    data:
                      $ref: '#/components/schemas/webhook'
      responses:
        '200':
          description: OK
          content:
            application/vnd.api+json:
              schema:
                allOf:
                  - type: object
                    properties:
                      data:
                        $ref: '#/components/schemas/webhook'
                  - $ref: '#/components/schemas/webhookLinksSelf'
        '400':
          $ref: '#/components/responses/400-bad-request'
        '401':
          $ref: '#/components/responses/401-unauthorized'
        '404':
          $ref: '#/components/responses/404-not-found'
        '406':
          $ref: '#/components/responses/406-not-acceptable'
        '415':
          $ref: '#/components/responses/415-unsupported-media-type'
    delete:
      summary: v3/webhooks/:id
      operationId: delete-v3-webhooks-by-id
      x-json-api: true
      x-internal: false
      tags:
        - v3/webhooks
      description: >-
        # DELETE v3/webhooks/:id

        The `DELETE v3/webhooks/:id` endpoint allows for complete removal of an
        existing `webhook`.
      parameters:
        - schema:
            type: string
          name: id
          in: path
          required: true
          description: The unique id (integer) of the `webhook` to delete.
      responses:
        '201':
          description: Created
        '401':
          $ref: '#/components/responses/401-unauthorized'
        '404':
          $ref: '#/components/responses/404-not-found'
        '406':
          $ref: '#/components/responses/406-not-acceptable'
        '415':
          $ref: '#/components/responses/415-unsupported-media-type'
webhooks:
  shipment.readyToShip.3:
    x-internal: false
    post:
      summary: shipment.readyToShip.3
      operationId: event-shipment-readyToShip-3
      x-json-api: true
      x-internal: false
      tags:
        - v3/events
      description: >-
        Triggered whenever a shipment has been picked, packed and sorted, ready
        for pick-up by the carrier

        The message model of the webhook will follow the `GET
        v3/shipments/:id?include=shipmentItems` endpoint.
      requestBody:
        description: >-
          This is the message we send you whenever a new shipment has been
          picked, packed and sorted
        content:
          application/vnd.api+json:
            schema:
              $ref: '#/components/schemas/shipment'
      responses:
        '200':
          description: Return a `HTTP/200` to indicate the data was received successfully
  shipment.shipped.3:
    x-internal: false
    post:
      summary: shipment.shipped.3
      operationId: event-shipment-shipped-3
      x-json-api: true
      x-internal: false
      tags:
        - v3/events
      description: >-
        Triggered whenever a shipment has been handed over to the carrier.

        The message model of the webhook will follow the `GET
        v3/shipments/:id?include=shipmentItems` endpoint.
      requestBody:
        description: >-
          This is the message we send you whenever a new shipment has been
          handed over to the carrier
        content:
          application/vnd.api+json:
            schema:
              $ref: '#/components/schemas/shipment'
      responses:
        '200':
          description: Return a `HTTP/200` to indicate the data was received successfully
  inbound.processing:
    x-internal: false
    post:
      summary: inbound.processing
      operationId: event-inbound-processing
      x-json-api: true
      x-internal: false
      tags:
        - v3/events
      description: Happens when an inbound is created.
      requestBody:
        description: This is the message we send you whenever an inbound has been created
        content:
          application/vnd.api+json:
            schema:
              $ref: '#/components/schemas/inbound'
      responses:
        '200':
          description: Return a `HTTP/200` to indicate the data was received successfully
  inbound.checking:
    x-internal: false
    post:
      summary: inbound.checking
      operationId: event-inbound-checking
      x-json-api: true
      x-internal: false
      tags:
        - v3/events
      description: >-
        Happens after the operator clicks 'complete entire inbound', happens
        once per inbound and regardless if there are differences with the
        packing slip.
      requestBody:
        description: This is the message we send you whenever an inbound has been completed
        content:
          application/vnd.api+json:
            schema:
              $ref: '#/components/schemas/inbound'
      responses:
        '200':
          description: Return a `HTTP/200` to indicate the data was received successfully
  inbound.checkingUpdate:
    x-internal: false
    post:
      summary: inbound.checkingUpdate
      operationId: event-inbound-checkingUpdate
      x-json-api: true
      x-internal: false
      tags:
        - v3/events
      description: >-
        Happens every time an inbound changes state from
        'DIFFERENCE_GOODS_RECEIVING' (aka 'INBOUND RECOUNT') to either 'OK' or
        'INBOUND CHECKED'.
      requestBody:
        description: >-
          This is the message we send you whenever an inbound changes state from
          'DIFFERENCE_GOODS_RECEIVING' (aka 'INBOUND RECOUNT') to either 'OK' or
          'INBOUND CHECKED'
        content:
          application/vnd.api+json:
            schema:
              $ref: '#/components/schemas/inbound'
      responses:
        '200':
          description: Return a `HTTP/200` to indicate the data was received successfully
  inbound.checked:
    x-internal: false
    post:
      summary: inbound.checked
      operationId: event-inbound-checked
      x-json-api: true
      x-internal: false
      tags:
        - v3/events
      description: >-
        Happens when all locations of the inbound have been checked. Note:
        changes to the inbound are still possible!
      requestBody:
        description: >-
          This is the message we send you when all locations of an inbound have
          been checked
        content:
          application/vnd.api+json:
            schema:
              $ref: '#/components/schemas/inbound'
      responses:
        '200':
          description: Return a `HTTP/200` to indicate the data was received successfully
  inbound.processed:
    x-internal: false
    post:
      summary: inbound.processed
      operationId: event-inbound-processed
      x-json-api: true
      x-internal: false
      tags:
        - v3/events
      description: >-
        Happens when the inbound is closed. No more changes are possible and
        this is the final state.
      requestBody:
        description: This is the message we send you whenever an inbound has been closed
        content:
          application/vnd.api+json:
            schema:
              $ref: '#/components/schemas/inbound'
      responses:
        '200':
          description: Return a `HTTP/200` to indicate the data was received successfully
components:
  securitySchemes:
    Bearer Token:
      type: http
      scheme: bearer
      bearerFormat: Opaque
  examples:
    post-token:
      value:
        grant_type: password
        username: shopapi-user
        password: your-secret-is-safe
    get-status-get-001-response:
      value:
        messageCode: OK
        message: Status is OK.
        result: null
    get-v3-orders-001-request:
      value:
        data:
          - id: 24006341
            type: order
            attributes:
              externalOrderNumber: '1656-07-15'
              orderedOn: '1656-07-01'
              promotionCode: BIRTHDAY_BOY
              currency: EUR
              locale: nl-NL
              email: frans.hals@gmail.com
              phoneNumber: '+31650607080'
              preferredShippingDate: '2019-08-24'
              allowPartialDelivery: false
              onHold: false
              metadata:
                extra1: Happy Birthday Rembrandt!
            relationships:
              orderType:
                data:
                  id: 10045
                  type: orderType
                  links:
                    self: https://shopapi.activeants.nl/v3/orderTypes/10045
              orderItems:
                data:
                  - id: 53150128
                    type: orderItem
                    links:
                      self: https://shopapi.activeants.nl/v3/orderItems/53150128
                  - id: 53150129
                    type: orderItem
                    links:
                      self: https://shopapi.activeants.nl/v3/orderItems/53150129
                  - id: 53150130
                    type: orderItem
                    links:
                      self: https://shopapi.activeants.nl/v3/orderItems/53150130
              deliveryAddress:
                data:
                  id: 1
                  type: address
              billingAddress:
                data:
                  id: 2
                  type: address
              preferredShippingMethod:
                data:
                  id: 12
                  type: shippingMethod
            included:
              - id: 53150128
                type: orderItem
                attributes:
                  sku: VDB-400
                  quantity: 3
                  fulfillFrom: NR
                  price: 13.95
                  vat: 0.21
                  name: Van Dyke Brown - 400ml tube
                links:
                  self: https://shopapi.activeants.nl/v3/orderItems/53150128
              - id: 53150129
                type: orderItem
                attributes:
                  sku: TPB-100
                  quantity: 2
                  fulfillFrom: NR
                  price: 58
                  vat: 0.21
                  name: Phthalo Blue - 100ml tube
                links:
                  self: https://shopapi.activeants.nl/v3/orderItems/53150129
              - id: 53150130
                type: orderItem
                attributes:
                  sku: BRUSH-DAV-3
                  quantity: 1
                  price: 24.99
                  vat: 0.21
                  name: Da Vinci Maestro Series 35 Brush Set
                links:
                  self: https://shopapi.activeants.nl/v3/orderItems/53150130
              - id: 1
                type: address
                attributes:
                  firstName: Rembrandt
                  lastName: Rijn
                  prefix: van
                  street1: Weddesteeg
                  postcode: 2312 VD
                  houseNumber: '4'
                  city: Leiden
                  countryCode: NL
              - id: 2
                type: address
                attributes:
                  firstName: Frans
                  lastName: Hals
                  street1: Groot Heiligland
                  postcode: 2011 ES
                  houseNumber: '62'
                  city: Haarlem
                  countryCode: NL
          - id: 24044341
            type: order
            attributes:
              externalOrderNumber: '1653-07-99'
              orderedOn: '1656-07-01'
              promotionCode: BIRTHDAY_BOY
              currency: EUR
              locale: nl-NL
              email: vincent@vangogh.com
              phoneNumber: '+3364604404380'
              preferredShippingDate: '2019-08-24'
              allowPartialDelivery: true
              onHold: false
              metadata:
                extra1: Hurray! Another year for my buddy!
            relationships:
              orderType:
                data:
                  id: 10045
                  type: orderType
                  links:
                    self: https://shopapi.activeants.nl/v3/orderTypes/10045
              orderItems:
                data:
                  - id: 53150199
                    type: orderItem
                    links:
                      self: https://shopapi.activeants.nl/v3/orderItems/53150199
              deliveryAddress:
                data:
                  id: 1
                  type: address
              billingAddress:
                data:
                  id: 2
                  type: address
              preferredShippingMethod:
                data:
                  id: 12
                  type: shippingMethod
            included:
              - id: 53150199
                type: orderItem
                attributes:
                  sku: EAZLE_PEAZLE
                  quantity: 3
                  fulfillFrom: NN
                  price: 13.95
                  vat: 0.21
                  name: Eazle Peazle - portable easel 150cm
                links:
                  self: https://shopapi.activeants.nl/v3/orderItems/53150199
              - id: 1
                type: address
                attributes:
                  firstName: Rembrandt
                  lastName: Rijn
                  prefix: van
                  street1: Weddesteeg
                  postcode: 2312 VD
                  houseNumber: '4'
                  city: Leiden
                  countryCode: NL
              - id: 2
                type: address
                attributes:
                  firstName: Vincent
                  prefix: van
                  lastName: Gogh
                  street1: 2 Rue de Bruxelles
                  postcode: '89340'
                  houseNumber: '2'
                  city: Auvers-sur-Oise
                  countryCode: FR
        links:
          self: >-
            http://shopapi.activeants.nl/v3/orders?include=orderItems,billingAddress,deliveryAddress,pickUpPoint&page[cursor]=24823623
          first: >-
            http://shopapi.activeants.nl/v3/orders?include=orderItems,billingAddress,deliveryAddress,pickUpPoint&page[cursor]=0
          next: >-
            http://shopapi.activeants.nl/v3/orders?include=orderItems,billingAddress,deliveryAddress,pickUpPoint&page[cursor]=24823636
    post-v3-orders-001-request:
      summary: Basic Order
      value:
        data:
          id: 24006341
          type: order
          included:
            - id: 1
              type: orderItem
              attributes:
                sku: VDB-400
                vat: 0.21
                name: Van Dyke Brown - 400ml tube
                price: 13.95
                quantity: 3
                fulfillFrom: NR
            - id: 2
              type: orderItem
              attributes:
                sku: TPB-100
                vat: 0.21
                name: Phthalo Blue - 100ml tube
                price: 58
                quantity: 2
                fulfillFrom: NR
            - id: 3
              type: orderItem
              attributes:
                sku: BRUSH-DAV-3
                vat: 0.21
                name: Da Vinci Maestro Series 35 Brush Set
                price: 24.99
                quantity: 1
            - id: 1
              type: address
              attributes:
                city: Leiden
                prefix: van
                street1: Weddesteeg
                lastName: Rijn
                postcode: 2312 VD
                firstName: Rembrandt
                countryCode: NL
                houseNumber: '4'
                houseNumberExtension: ''
            - id: 2
              type: address
              attributes:
                city: Haarlem
                street1: Groot Heiligland
                lastName: Hals
                postcode: 2011 ES
                firstName: Frans
                countryCode: NL
                houseNumber: '62'
          attributes:
            email: frans.hals@gmail.com
            locale: nl-NL
            onHold: false
            currency: EUR
            metadata:
              extra1: Happy Birthday Rembrandt!
            orderedOn: '1656-07-01'
            phoneNumber: '+31650607080'
            promotionCode: BIRTHDAY_BOY
            externalOrderNumber: '1656-07-15'
            allowPartialDelivery: false
            preferredShippingDate: '2019-08-24'
          relationships:
            orderType:
              data:
                id: 10045
                type: orderType
            orderItems:
              data:
                - id: 1
                  type: orderItem
                - id: 2
                  type: orderItem
                - id: 3
                  type: orderItem
            billingAddress:
              data:
                id: 2
                type: address
            deliveryAddress:
              data:
                id: 1
                type: address
    post-v3-orders-002-request:
      summary: Order - using pick-up point
      value:
        data:
          id: 24006341
          type: order
          included:
            - id: 1
              type: orderItem
              attributes:
                sku: VDB-400
                vat: 0.21
                name: Van Dyke Brown - 400ml tube
                price: 13.95
                quantity: 3
                fulfillFrom: NR
            - id: 2
              type: orderItem
              attributes:
                sku: TPB-100
                vat: 0.21
                name: Phthalo Blue - 100ml tube
                price: 58
                quantity: 2
                fulfillFrom: NR
            - id: 3
              type: orderItem
              attributes:
                sku: BRUSH-DAV-3
                vat: 0.21
                name: Da Vinci Maestro Series 35 Brush Set
                price: 24.99
                quantity: 1
            - id: 1
              type: address
              attributes:
                city: Leiden
                prefix: van
                street1: Weddesteeg
                lastName: Rijn
                postcode: 2312 VD
                firstName: Rembrandt
                countryCode: NL
                houseNumber: '4'
                houseNumberExtension: ''
            - id: 2
              type: address
              attributes:
                city: Haarlem
                street1: Groot Heiligland
                lastName: Hals
                postcode: 2011 ES
                firstName: Frans
                countryCode: NL
                houseNumber: '62'
            - id: 3
              type: pickUpPoint
              attributes:
                identifier: 0801-2011-HRLM
                name: Van der Pigge
                city: Haarlem
                street1: Gierstraat
                postcode: 2011 GA
                countryCode: NL
                houseNumber: '3'
          attributes:
            email: frans.hals@gmail.com
            locale: nl-NL
            onHold: false
            currency: EUR
            metadata:
              extra1: Happy Birthday Rembrandt!
            orderedOn: '1656-07-01'
            phoneNumber: '+31650607080'
            promotionCode: BIRTHDAY_BOY
            externalOrderNumber: '1656-07-15'
            allowPartialDelivery: false
            preferredShippingDate: '2019-08-24'
          relationships:
            orderType:
              data:
                id: 10045
                type: orderType
            orderItems:
              data:
                - id: 1
                  type: orderItem
                - id: 2
                  type: orderItem
                - id: 3
                  type: orderItem
            billingAddress:
              data:
                id: 2
                type: address
            deliveryAddress:
              data:
                id: 1
                type: address
            pickUpPoint:
              data:
                id: 3
                type: pickUpPoint
            preferredShippingMethod:
              data:
                id: 12
                type: shippingMethod
    post-v3-orders-001-response:
      value:
        data:
          id: 24006341
          type: order
          attributes:
            externalOrderNumber: '1656-07-15'
            orderedOn: '1656-07-01'
            promotionCode: BIRTHDAY_BOY
            currency: EUR
            locale: nl-NL
            email: frans.hals@gmail.com
            phoneNumber: '+31650607080'
            preferredShippingDate: '2019-08-24'
            allowPartialDelivery: false
            onHold: false
            metadata:
              extra1: Happy Birthday Rembrandt!
          relationships:
            orderType:
              data:
                id: 10045
                type: orderType
            orderItems:
              data:
                - id: 1
                  type: orderItem
                - id: 2
                  type: orderItem
                - id: 3
                  type: orderItem
            deliveryAddress:
              data:
                id: 1
                type: address
            billingAddress:
              data:
                id: 2
                type: address
            preferredShippingMethod:
              data:
                id: 12
                type: shippingMethod
          included:
            - id: 1
              type: orderItem
              attributes:
                sku: VDB-400
                quantity: 3
                fulfillFrom: NR
                price: 13.95
                vat: 0.21
                name: Van Dyke Brown - 400ml tube
            - id: 2
              type: orderItem
              attributes:
                sku: TPB-100
                quantity: 2
                fulfillFrom: NR
                price: 58
                vat: 0.21
                name: Phthalo Blue - 100ml tube
            - id: 3
              type: orderItem
              attributes:
                sku: BRUSH-DAV-3
                quantity: 1
                price: 24.99
                vat: 0.21
                name: Da Vinci Maestro Series 35 Brush Set
            - id: 1
              type: address
              attributes:
                firstName: Rembrandt
                lastName: Rijn
                prefix: van
                street1: Weddesteeg
                postcode: 2312 VD
                houseNumber: '4'
                houseNumberExtension: ''
                city: Leiden
                countryCode: NL
            - id: 2
              type: address
              attributes:
                firstName: Frans
                lastName: Hals
                street1: Groot Heiligland
                postcode: 2011 ES
                houseNumber: '62'
                city: Haarlem
                countryCode: NL
    404-1-unknown-sku:
      value:
        errors:
          - code: 404-1
            title: sku not found
            detail: The sku '#VDB-400' could not be found.
          - code: 404-1
            title: sku not found
            detail: The sku '#TPB-100' could not be found.
    404-2-unknown-orderType:
      value:
        errors:
          - code: 404-2
            title: orderType not found
            detail: The orderType '14' could not be found.
    404-3-unknown-preferredShippingMethod:
      value:
        errors:
          - code: 404-3
            title: preferredShippingMethodnot found
            detail: The preferredShippingMethod '999' could not be found.
    404-m-multiple-issues:
      value:
        errors:
          - code: 404-2
            title: orderType not found
            detail: The orderType '14' could not be found.
          - code: 404-3
            title: preferredShippingMethod not found
            detail: The preferredShippingMethod '999' could not be found.
          - code: 404-1
            title: sku not found
            detail: The sku '#VDB-400' could not be found.
          - code: 404-1
            title: sku not found
            detail: The sku '#TPB-100' could not be found.
    409-1-duplicate-orderOrderNumber:
      value:
        errors:
          - code: 409-1
            title: externalOrderNumber already exists
            detail: The externalOrderNumber '#UK-1003' already exists
            links:
              related: >-
                https://shopapi.activeants.nl/v3/orders?externalOrderNumber=%23UK-1003
    get-v3-orders-by-id-001-response:
      value:
        data:
          id: 24006341
          type: order
          attributes:
            externalOrderNumber: '1656-07-15'
            orderedOn: '1656-07-01'
            promotionCode: BIRTHDAY_BOY
            currency: EUR
            locale: nl-NL
            email: frans.hals@gmail.com
            phoneNumber: '+31650607080'
            preferredShippingDate: '2019-08-24'
            allowPartialDelivery: false
            onHold: false
            metadata:
              extra1: Happy Birthday Rembrandt!
          relationships:
            orderType:
              data:
                id: 10045
                type: orderType
                links:
                  self: https://shopapi.activeants.nl/v3/orderTypes/10045
            orderItems:
              data:
                - id: 53150128
                  type: orderItem
                  links:
                    self: https://shopapi.activeants.nl/v3/orderItems/53150128
                - id: 53150129
                  type: orderItem
                  links:
                    self: https://shopapi.activeants.nl/v3/orderItems/53150129
                - id: 53150130
                  type: orderItem
                  links:
                    self: https://shopapi.activeants.nl/v3/orderItems/53150130
            deliveryAddress:
              data:
                id: 1
                type: address
            billingAddress:
              data:
                id: 2
                type: address
            preferredShippingMethod:
              data:
                id: 12
                type: shippingMethod
          included:
            - id: 53150128
              type: orderItem
              attributes:
                sku: VDB-400
                quantity: 3
                fulfillFrom: NR
                price: 13.95
                vat: 0.21
                name: Van Dyke Brown - 400ml tube
              links:
                self: https://shopapi.activeants.nl/v3/orderItems/53150128
            - id: 53150129
              type: orderItem
              attributes:
                sku: TPB-100
                quantity: 2
                fulfillFrom: NR
                price: 58
                vat: 0.21
                name: Phthalo Blue - 100ml tube
              links:
                self: https://shopapi.activeants.nl/v3/orderItems/53150129
            - id: 53150130
              type: orderItem
              attributes:
                sku: BRUSH-DAV-3
                quantity: 1
                price: 24.99
                vat: 0.21
                name: Da Vinci Maestro Series 35 Brush Set
              links:
                self: https://shopapi.activeants.nl/v3/orderItems/53150130
            - id: 1
              type: address
              attributes:
                firstName: Rembrandt
                lastName: Rijn
                prefix: van
                street1: Weddesteeg
                postcode: 2312 VD
                houseNumber: '4'
                city: Leiden
                countryCode: NL
            - id: 2
              type: address
              attributes:
                firstName: Frans
                lastName: Hals
                street1: Groot Heiligland
                postcode: 2011 ES
                houseNumber: '62'
                city: Haarlem
                countryCode: NL
    delete-v3-orders-by-id-001-response:
      value:
        data:
          id: 24006341
          type: order
          attributes:
            externalOrderNumber: '1656-07-15T00:00:00.000Z'
            orderedOn: '1656-07-01T00:00:00.000Z'
            promotionCode: BIRTHDAY_BOY
            currency: EUR
            locale: nl-NL
            email: frans.hals@gmail.com
            phoneNumber: '+31650607080'
            preferredShippingDate: '2019-08-24T00:00:00.000Z'
            allowPartialDelivery: false
            onHold: false
            metadata:
              extra1: Happy Birthday Rembrandt!
          relationships:
            orderType:
              data:
                id: 10045
                type: orderType
                links:
                  self: https://shopapi.activeants.nl/v3/orderTypes/10045
            orderItems:
              data:
                - id: 53150128
                  type: orderItem
                  links:
                    self: https://shopapi.activeants.nl/v3/orderItems/53150128
                - id: 53150129
                  type: orderItem
                  links:
                    self: https://shopapi.activeants.nl/v3/orderItems/53150129
                - id: 53150130
                  type: orderItem
                  links:
                    self: https://shopapi.activeants.nl/v3/orderItems/53150130
            deliveryAddress:
              data:
                id: 1
                type: address
            billingAddress:
              data:
                id: 2
                type: address
            preferredShippingMethod:
              data:
                id: 12
                type: shippingMethod
          included:
            - id: 53150128
              type: orderItem
              attributes:
                sku: VDB-400
                quantity: 0
                fulfillFrom: NR
                price: 13.95
                vat: 0.21
                name: Van Dyke Brown - 400ml tube
              links:
                self: https://shopapi.activeants.nl/v3/orderItems/53150128
            - id: 53150129
              type: orderItem
              attributes:
                sku: TPB-100
                quantity: 0
                fulfillFrom: NR
                price: 58
                vat: 0.21
                name: Phthalo Blue - 100ml tube
              links:
                self: https://shopapi.activeants.nl/v3/orderItems/53150129
            - id: 53150130
              type: orderItem
              attributes:
                sku: BRUSH-DAV-3
                quantity: 0
                price: 24.99
                vat: 0.21
                name: Da Vinci Maestro Series 35 Brush Set
              links:
                self: https://shopapi.activeants.nl/v3/orderItems/53150130
        meta:
          modified: true
          modifiedItems:
            data:
              - id: 53150128
                type: orderItem
              - id: 53150129
                type: orderItem
              - id: 53150130
                type: orderItem
    delete-v3-orders-by-id-002-response:
      value:
        data:
          id: 24006341
          type: order
          attributes:
            externalOrderNumber: '1656-07-15T00:00:00.000Z'
            orderedOn: '1656-07-01T00:00:00.000Z'
            promotionCode: BIRTHDAY_BOY
            currency: EUR
            locale: nl-NL
            email: frans.hals@gmail.com
            phoneNumber: '+31650607080'
            preferredShippingDate: '2019-08-24T00:00:00.000Z'
            allowPartialDelivery: false
            onHold: false
            metadata:
              extra1: Happy Birthday Rembrandt!
          relationships:
            orderType:
              data:
                id: 10045
                type: orderType
                links:
                  self: https://shopapi.activeants.nl/v3/orderTypes/10045
            orderItems:
              data:
                - id: 53150128
                  type: orderItem
                  links:
                    self: https://shopapi.activeants.nl/v3/orderItems/53150128
                - id: 53150129
                  type: orderItem
                  links:
                    self: https://shopapi.activeants.nl/v3/orderItems/53150129
                - id: 53150130
                  type: orderItem
                  links:
                    self: https://shopapi.activeants.nl/v3/orderItems/53150130
            deliveryAddress:
              data:
                id: 1
                type: address
            billingAddress:
              data:
                id: 2
                type: address
            preferredShippingMethod:
              data:
                id: 12
                type: shippingMethod
          included:
            - id: 53150128
              type: orderItem
              attributes:
                sku: VDB-400
                quantity: 0
                fulfillFrom: NR
                price: 13.95
                vat: 0.21
                name: Van Dyke Brown - 400ml tube
              links:
                self: https://shopapi.activeants.nl/v3/orderItems/53150128
            - id: 53150129
              type: orderItem
              attributes:
                sku: TPB-100
                quantity: 1
                fulfillFrom: NR
                price: 58
                vat: 0.21
                name: Phthalo Blue - 100ml tube
              links:
                self: https://shopapi.activeants.nl/v3/orderItems/53150129
            - id: 53150130
              type: orderItem
              attributes:
                sku: BRUSH-DAV-3
                quantity: 1
                price: 24.99
                vat: 0.21
                name: Da Vinci Maestro Series 35 Brush Set
              links:
                self: https://shopapi.activeants.nl/v3/orderItems/53150130
        meta:
          modified: true
          modifiedItems:
            data:
              - id: 53150128
                type: orderItem
              - id: 53150129
                type: orderItem
    delete-v3-orders-by-id-003-response:
      value:
        data:
          id: 24006341
          type: order
          attributes:
            externalOrderNumber: '1656-07-15T00:00:00.000Z'
            orderedOn: '1656-07-01T00:00:00.000Z'
            promotionCode: BIRTHDAY_BOY
            currency: EUR
            locale: nl-NL
            email: frans.hals@gmail.com
            phoneNumber: '+31650607080'
            preferredShippingDate: '2019-08-24T00:00:00.000Z'
            allowPartialDelivery: false
            onHold: false
            metadata:
              extra1: Happy Birthday Rembrandt!
          relationships:
            orderType:
              data:
                id: 10045
                type: orderType
                links:
                  self: https://shopapi.activeants.nl/v3/orderTypes/10045
            orderItems:
              data:
                - id: 53150128
                  type: orderItem
                  links:
                    self: https://shopapi.activeants.nl/v3/orderItems/53150128
                - id: 53150129
                  type: orderItem
                  links:
                    self: https://shopapi.activeants.nl/v3/orderItems/53150129
                - id: 53150130
                  type: orderItem
                  links:
                    self: https://shopapi.activeants.nl/v3/orderItems/53150130
            deliveryAddress:
              data:
                id: 1
                type: address
            billingAddress:
              data:
                id: 2
                type: address
            preferredShippingMethod:
              data:
                id: 12
                type: shippingMethod
          included:
            - id: 53150128
              type: orderItem
              attributes:
                sku: VDB-400
                quantity: 3
                fulfillFrom: NR
                price: 13.95
                vat: 0.21
                name: Van Dyke Brown - 400ml tube
              links:
                self: https://shopapi.activeants.nl/v3/orderItems/53150128
            - id: 53150129
              type: orderItem
              attributes:
                sku: TPB-100
                quantity: 2
                fulfillFrom: NR
                price: 58
                vat: 0.21
                name: Phthalo Blue - 100ml tube
              links:
                self: https://shopapi.activeants.nl/v3/orderItems/53150129
            - id: 53150130
              type: orderItem
              attributes:
                sku: BRUSH-DAV-3
                quantity: 1
                price: 24.99
                vat: 0.21
                name: Da Vinci Maestro Series 35 Brush Set
              links:
                self: https://shopapi.activeants.nl/v3/orderItems/53150130
        meta:
          modified: false
    delete-v3-orderItem-by-id-001-response:
      value:
        data:
          id: 52008118
          type: orderItem
          attributes:
            sku: TSH-000-S
            quantity: 0
            fulfillFrom: NR
            price: 0
            vat: 0
            name: string
            metadata:
              serviceLevel: premium
              purchases: '140'
              reference: '#74571'
              extra6: string
              extra7: string
          links:
            self: https://shopapi.activeants.nl/v3/orderItems/52008118
        meta:
          modified: true
    delete-v3-orderItem-by-id-002-response:
      value:
        data:
          id: 52008118
          type: orderItem
          attributes:
            sku: TSH-000-S
            quantity: 5
            fulfillFrom: NR
            price: 0
            vat: 0
            name: string
            metadata:
              serviceLevel: premium
              purchases: '140'
              reference: '#74571'
              extra6: string
              extra7: string
          links:
            self: https://shopapi.activeants.nl/v3/orderItems/52008118
        meta:
          modified: true
    delete-v3-orderItem-by-id-003-response:
      value:
        data:
          id: 52008118
          type: orderItem
          attributes:
            sku: TSH-000-S
            quantity: 10
            fulfillFrom: NR
            price: 0
            vat: 0
            name: string
            metadata:
              serviceLevel: premium
              purchases: '140'
              reference: '#74571'
              extra6: string
              extra7: string
          links:
            self: https://shopapi.activeants.nl/v3/orderItems/52008118
        meta:
          modified: false
    post-v3-orderAttachments-001-request:
      value:
        data:
          id: 52005678
          type: orderAttachment
          attributes:
            externalOrderNumber: '#1003-UK'
            filename: string
            contentType: application/pdf
            printStrategy: REQUIRED
          relationships:
            order:
              data:
                id: 24006341
                type: order
                links:
                  self: https://shopapi.activeants.nl/v3/orders/24006341
    404-5-unknown-orderId:
      value:
        errors:
          - code: 404-5
            title: order not found
            detail: The order with id '65436924' could not be found.
    404-6-unknown-externalOrderNumber:
      value:
        errors:
          - code: 404-6
            title: order not found
            detail: >-
              The order with external order number '#5295-UK' could not be
              found.
    422-1-order-fulfilled:
      value:
        errors:
          - code: 422-1
            title: order already fulfilled
            detail: >-
              The request cannot be completed because the order with id 6348732
              already has been fulfilled
    get-v3-shipments-001-response:
      value:
        data:
          - id: 68076953
            type: shipment
            attributes:
              status: READY_TO_PICK
              readyToPickOn: '2023-11-10T12:04:00.110'
              warehouseCode: NR
              basketPicture: http://example.com
              tracking:
                number: 0
                stage: LABELLED
                status: OK
                url: http://example.com
              colli:
                - number: string
                  parcelNumber: string
                  trackingUrl: http://example.com
              returnLabel: string
            relationships:
              order:
                data:
                  id: 24006341
                  type: order
                  links:
                    self: https://shopapi.activeants.nl/v3/orders/24006341
              orderType:
                data:
                  id: 10045
                  type: orderType
                  links:
                    self: https://shopapi.activeants.nl/v3/orderTypes/10045
              shipmentItems:
                data:
                  - id: 15368865
                    type: shipmentItem
                    links:
                      self: https://shopapi.activeants.nl/v3/shipmentItem/15368865
              shippingMethod:
                data:
                  id: 12
                  type: shippingMethod
                  links:
                    self: https://shopapi.activeants.nl/v3/shippingMethod/12
            included:
              - id: 15368865
                type: shipmentItem
                attributes:
                  sku: TSH-000-S
                  quantity: 2
                  lotNumber: M008686
                  expirationDate: '2028-10-14'
                  serialNumbers:
                    - '2204190861003991'
                links:
                  self: https://shopapi.activeants.nl/v3/shipmentItem/72841554
                relationships:
                  orderItem:
                    data:
                      id: 52008118
                      type: orderItem
                      links:
                        self: https://shopapi.activeants.nl/v3/orderItems/52008118
                  product:
                    data:
                      id: 1267733
                      type: product
                      links:
                        self: https://shopapi.activeants.nl/v3/products/1267733
            links:
              self: https://shopapi.activeants.nl/v3/shipment/68076953
          - id: 68076999
            type: shipment
            attributes:
              status: SHIPPED
              readyToPickOn: '2023-11-10T12:04:00.110'
              readyToShipOn: '2023-11-10T15:17:22.299'
              shippedOn: '2020-08-24T20:45:54.570'
              warehouseCode: GN
              basketPicture: http://example.com
              tracking:
                number: 0
                stage: LABELLED
                status: OK
                url: http://example.com
              colli:
                - number: string
                  parcelNumber: string
                  trackingUrl: http://example.com
              returnLabel: string
            relationships:
              order:
                data:
                  id: 24006873
                  type: order
                  links:
                    self: https://shopapi.activeants.nl/v3/orders/24006873
              orderType:
                data:
                  id: 10045
                  type: orderType
                  links:
                    self: https://shopapi.activeants.nl/v3/orderTypes/10045
              shipmentItems:
                data:
                  - id: 15368865
                    type: shipmentItem
                    links:
                      self: https://shopapi.activeants.nl/v3/shipmentItem/15368865
              shippingMethod:
                data:
                  id: 12
                  type: shippingMethod
                  links:
                    self: https://shopapi.activeants.nl/v3/shippingMethod/12
            included:
              - id: 15363222
                type: shipmentItem
                attributes:
                  sku: TSH-000-S
                  quantity: 2
                  lotNumber: M008686
                  expirationDate: '2028-10-14'
                  serialNumbers:
                    - '2204190861003991'
                links:
                  self: https://shopapi.activeants.nl/v3/shipmentItem/15363222
                relationships:
                  orderItem:
                    data:
                      id: 52007743
                      type: orderItem
                      links:
                        self: https://shopapi.activeants.nl/v3/orderItems/52007743
                  product:
                    data:
                      id: 1267733
                      type: product
                      links:
                        self: https://shopapi.activeants.nl/v3/products/1267733
            links:
              self: https://shopapi.activeants.nl/v3/shipment/68076999
        links:
          self: https://shopapi.activeants.nl/v3/shipments
          first: >-
            https://shopapi.activeants.nl/v3/shipments?page[cursor]=68076999&page[size]=100
          next: >-
            https://shopapi.activeants.nl/v3/shipments?page[cursor]=0&page[size]=100
    get-v3-shipments-by-id-001-response:
      value:
        data:
          id: 68076953
          type: shipment
          attributes:
            status: SHIPPED
            readyToPickOn: '2023-11-10T12:04:00.110'
            readyToShipOn: '2023-11-10T15:17:22.299'
            shippedOn: '2020-08-24T20:45:54.570'
            warehouseCode: NR
            basketPicture: http://example.com
            tracking:
              number: 0
              stage: LABELLED
              status: OK
              url: http://example.com
            colli:
              - number: string
                parcelNumber: string
                trackingUrl: http://example.com
            returnLabel: string
          relationships:
            order:
              data:
                id: 24006341
                type: order
                links:
                  self: https://shopapi.activeants.nl/v3/orders/24006341
            orderType:
              data:
                id: 10045
                type: orderType
                links:
                  self: https://shopapi.activeants.nl/v3/orderTypes/10045
            shipmentItems:
              data:
                - id: 15368865
                  type: shipmentItem
                  links:
                    self: https://shopapi.activeants.nl/v3/shipmentItem/15368865
            shippingMethod:
              data:
                id: 12
                type: shippingMethod
                links:
                  self: https://shopapi.activeants.nl/v3/shippingMethod/12
          included:
            - id: 15368865
              type: shipmentItem
              attributes:
                sku: TSH-000-S
                quantity: 2
                lotNumber: M008686
                expirationDate: '2028-10-14'
                serialNumbers:
                  - '2204190861003991'
              links:
                self: https://shopapi.activeants.nl/v3/shipmentItem/72841554
              relationships:
                orderItem:
                  data:
                    id: 52008118
                    type: orderItem
                    links:
                      self: https://shopapi.activeants.nl/v3/orderItems/52008118
                product:
                  data:
                    id: 1267733
                    type: product
                    links:
                      self: https://shopapi.activeants.nl/v3/products/1267733
          links:
            self: https://shopapi.activeants.nl/v3/shipment/68076953
        links:
          self: https://shopapi.activeants.nl/v3/shipments/68076953
    post-v3-inboundPackingSlips-001-request:
      value:
        data:
          type: inboundPackingSlip
          attributes:
            expectedIn: NR
            expectedOn: '2023-01-01'
            reference: summer-collection-2023
            comments: careful please, this is the new summer collection
            metadata:
              season: summer
              year: '2023'
          relationships: {}
          included:
            - id: 1
              type: inboundPackingSlipItem
              attributes:
                sku: TROUSERS
                quantity: 100
            - id: 2
              type: inboundPackingSlipItem
              attributes:
                sku: SKIRT
                quantity: 120
            - id: 3
              type: inboundPackingSlipItem
              attributes:
                sku: BLOUSE
                quantity: 150
            - id: 4
              type: inboundPackingSlipItem
              attributes:
                sku: SHIRTS
                quantity: 100
    post-v3-inboundPackingSlips-001-response:
      value:
        data:
          id: 9067
          type: inboundPackingSlip
          attributes:
            expectedIn: NR
            expectedOn: '2023-01-01'
            reference: summer-collection-2023
            comments: careful please, this is the new summer collection
            status: EXPECTED
            metadata:
              season: summer
              year: '2023'
          relationships:
            inboundPackingSlipItems:
              data:
                - type: inboundPackingSlipItem
                  id: 12441
                - type: inboundPackingSlipItem
                  id: 12442
                - type: inboundPackingSlipItem
                  id: 12443
                - type: inboundPackingSlipItem
                  id: 12444
          included:
            - id: 12441
              type: inboundPackingSlipItem
              attributes:
                sku: TROUSERS
                quantity: 100
            - id: 12442
              type: inboundPackingSlipItem
              attributes:
                sku: SKIRT
                quantity: 120
            - id: 12443
              type: inboundPackingSlipItem
              attributes:
                sku: BLOUSE
                quantity: 150
            - id: 12444
              type: inboundPackingSlipItem
              attributes:
                sku: SHIRTS
                quantity: 100
          links:
            self: https://shopapi.activeants.nl/v3/inboundPackingSlips/9067
    get-v3-products-001-response:
      value:
        data:
          - id: 540935
            links:
              self: http://shopapi.activeants.nl/v3/products/540935
            type: product
            attributes:
              sku: VDB-400
              status: AVAILABLE
              stockLevelType: AVAILABLE
              type: DEFAULT
              weight: 326
              length: 310
              width: 220
              height: 29
              name: Van Dyke Brown - 400ml tube
              hasBarcode: true
              barcode: '8719558651276'
              hasLotNumber: true
              hasSerialNumber: false
              hasExpirationDate: false
              expirationDateMargin: 0
              expirationDateWarning: 0
              countryOfOrigin: NL
              hsCodes:
                - country: XX
                  hsCode: '3213109000'
          - id: 540936
            links:
              self: http://shopapi.activeants.nl/v3/products/540936
            type: product
            attributes:
              sku: TPB-100
              status: AVAILABLE
              stockLevelType: AVAILABLE
              type: DEFAULT
              weight: 325
              length: 310
              width: 220
              height: 29
              name: Phthalo Blue - 100ml tube
              hasBarcode: true
              barcode: '8719558651283'
              hasLotNumber: true
              hasSerialNumber: false
              hasExpirationDate: false
              expirationDateMargin: 0
              expirationDateWarning: 0
              countryOfOrigin: NL
              hsCodes:
                - country: XX
                  hsCode: '3213109000'
          - id: 540937
            links:
              self: http://shopapi.activeants.nl/v3/products/540937
            type: product
            attributes:
              sku: BRUSH-DAV-3
              status: AVAILABLE
              stockLevelType: AVAILABLE
              type: DEFAULT
              weight: 333
              length: 310
              width: 220
              height: 29
              name: Da Vinci Maestro Series 35 Brush Set
              hasBarcode: true
              barcode: '8719558651290'
              hasLotNumber: true
              hasSerialNumber: false
              hasExpirationDate: false
              expirationDateMargin: 0
              expirationDateWarning: 0
              countryOfOrigin: PT
              hsCodes:
                - country: XX
                  hsCode: '9603304000'
        included: null
        links:
          self: http://shopapi.activeants.nl/v3/products?page[size]=4
          first: http://shopapi.activeants.nl/v3/products?page[cursor]=0&page[size]=4
          next: >-
            http://shopapi.activeants.nl/v3/products?page[cursor]=540938&page[size]=4
    post-v3-products-001-request:
      value:
        data:
          id: 1267733
          type: product
          attributes:
            sku: VDB-400
            status: AVAILABLE
            stockLevelType: ECONOMIC
            name: Van Dyke Brown - 400ml tube
            description: >-
              Introducing Van Dyke Brown - the ultimate artist's companion. This
              400ml tube of pure artistic excellence brings a new level of depth
              and richness to your creations. Crafted with precision and
              passion, Van Dyke Brown is a luxurious oil paint designed to
              inspire and captivate. Its intense, earthy hue evokes a sense of
              warmth and nostalgia, lending a timeless appeal to your artwork.
              With exceptional lightfastness and unmatched pigment
              concentration, this tube ensures your masterpieces will stand the
              test of time. Whether you're a professional artist or an aspiring
              enthusiast, Van Dyke Brown is the perfect choice for expressing
              your creativity.
            hasBarcode: true
            barcode: '8001001'
            hasLotNumber: true
            hasSerialNumber: false
            hasExpirationDate: false
            countryOfOrigin: NL
            hsCodes:
              - country: EU
                hsCode: '32139000'
              - country: GB
                hsCode: '321300'
    post-v3-products-002-request:
      value:
        data:
          id: 1267733
          type: product
          attributes:
            sku: TSH-000-S
            status: AVAILABLE
            stockLevelType: ECONOMIC
            name: Dog Shampoo 100ml
            description: >-
              Experience the ultimate pampering for your furry friend with our
              premium 100ml Dog Shampoo. Specially designed with your canine
              companion in mind, this gentle and nourishing formula will leave
              their coat looking and feeling fabulous. Every drop of our shampoo
              is packed with the finest natural ingredients, carefully selected
              to provide optimal cleansing without causing any irritation or
              dryness.
            hasBarcode: true
            barcode: TSH-000-S
            hasLotNumber: true
            hasSerialNumber: false
            hasExpirationDate: true
            expirationDateMargin: 120
            expirationDateWarning: 180
            countryOfOrigin: CN
            hsCodes:
              - country: XX
                hsCode: '33079011'
              - country: GB
                hsCode: '33079011'
              - country: US
                hsCode: '3305900000'
    get-v3-products-by-id-001-response:
      value:
        data:
          id: 540935
          links:
            self: http://shopapi.activeants.nl/v3/products/540935
          type: product
          attributes:
            sku: VDB-400
            status: AVAILABLE
            stockLevelType: AVAILABLE
            type: DEFAULT
            weight: 326
            length: 310
            width: 220
            height: 29
            name: Van Dyke Brown - 400ml tube
            hasBarcode: true
            barcode: '8719558651276'
            hasLotNumber: true
            hasSerialNumber: false
            hasExpirationDate: false
            expirationDateMargin: 0
            expirationDateWarning: 0
            countryOfOrigin: NL
            hsCodes:
              - country: XX
                hsCode: '3213109000'
        included: null
        links:
          self: http://shopapi.activeants.nl/v3/products/540935
    200-1-success-productImage-posted:
      code: 200-1
      title: image accepted
      detail: The image for product with id '76533677' has been updated.
    404-8-image-rejected:
      value:
        errors:
          - code: 400-8
            title: Image rejected
            detail: >-
              Size of file with name: 1f9986c2-f467-4c45-bc6e-a3a4735f499b.png
              is greater then the maximum of 102400 bytes
    get-v3-returnItems-001-response:
      value:
        data:
          - id: 5432554
            type: returnItem
            attributes:
              sku: TSH-000-S
              quantity: 0
              condition: RETURN
              processedOn: '2023-01-17'
              processedIn: NR
              restockIn: NR
              restockOn: '2023-06-27T10:03:07.463'
              comment: string
              redeliver: true
              externalOrderNumber: '#1003-UK'
            relationships:
              order:
                data:
                  id: 24006341
                  type: order
                  links:
                    self: https://shopapi.activeants.nl/v3/orders/24006341
              orderItem:
                data:
                  id: 52008118
                  type: orderItem
                  links:
                    self: https://shopapi.activeants.nl/v3/orderItems/52008118
              product:
                data:
                  id: 1267733
                  type: product
                  links:
                    self: https://shopapi.activeants.nl/v3/products/1267733
              return:
                data:
                  id: 54346
                  type: return
                  links:
                    self: https://shopapi.activeants.nl/v3/returns/54346
              returnAuthorizationItem:
                data:
                  id: 13501
                  type: returnAuthorizationItem
                  links:
                    self: >-
                      https://shopapi.activeants.nl/v3/returnAuthorizationItems/13501
              returnReason:
                data:
                  id: 16
                  type: returnReason
                  links:
                    self: https://shopapi.activeants.nl/v3/returnReasons/16
              shipmentItem:
                data:
                  id: 15368865
                  type: shipmentItem
                  links:
                    self: https://shopapi.activeants.nl/v3/shipmentItem/15368865
            links:
              self: https://shopapi.activeants.nl/v3/returnItems/5432554
        links:
          self: https://shopapi.activeants.nl/v3/shipments?page[cursor]=33216650
          next: https://shopapi.activeants.nl/v3/shipments?page[cursor]=3321685950
          first: https://shopapi.activeants.nl/v3/shipments?page[cursor]=0
    get-v3-stock-001-response:
      value:
        data:
          - id: 654322
            type: stock
            attributes:
              sku: TSH-000-S
              quantity: 1
              modifiedOn: '2019-08-24T14:15:22Z'
              expirationDate: '2019-08-24'
              lotNumber: M008686
              quarantined: false
              receivedOn: '2022-02-14'
            relationships:
              stockLocation:
                data:
                  id: 1008713
                  type: stockLocation
              product:
                data:
                  id: 1267733
                  type: product
                  links:
                    self: https://shopapi.activeants.nl/v3/products/1267733
              inboundItem:
                data:
                  id: 673333
                  type: inboundItem
                  links:
                    self: https://shopapi.activeants.nl/v3/inboundItems/673333
            links:
              self: https://shopapi.activeants.nl/v3/stock/654322
        links:
          self: https://shopapi.activeants.nl/v3/shipments
          next: https://shopapi.activeants.nl/v3/shipments?page[cursor]=3321685950
          first: https://shopapi.activeants.nl/v3/shipments?page[cursor]=0
    get-v3-stock-002-response:
      value:
        data:
          - id: 654322
            type: stock
            attributes:
              sku: TSH-000-S
              quantity: 1
              modifiedOn: '2019-08-24T14:15:22Z'
              expirationDate: '2019-08-24'
              lotNumber: M008686
              quarantined: false
              receivedOn: '2022-02-14'
            relationships:
              stockLocation:
                data:
                  id: 1008713
                  type: stockLocation
              product:
                data:
                  id: 1267733
                  type: product
                  links:
                    self: https://shopapi.activeants.nl/v3/products/1267733
              inboundItem:
                data:
                  id: 673333
                  type: inboundItem
                  links:
                    self: https://shopapi.activeants.nl/v3/inboundItems/673333
            included:
              - id: 1008713
                type: stockLocation
                attributes:
                  warehouseCode: NR
                  locationType: PALLET
                  locationCode: ZAB06E
            links:
              self: https://shopapi.activeants.nl/v3/stock/654322
        links:
          self: https://shopapi.activeants.nl/v3/shipments
          next: https://shopapi.activeants.nl/v3/shipments?page[cursor]=3321685950
          first: https://shopapi.activeants.nl/v3/shipments?page[cursor]=0
    get-v3-stockMutations:
      value:
        data:
          - id: 67983223
            type: stockmutation
            attributes:
              createdOn: '2023-03-09T14:23:39.418'
              warehouseCode: NR
              sku: SKU_37447
              locationType: INBOUND
              quantity: 20
              expirationDate: '2024-03-14'
              lotNumber: LOT_2023_001
            relationships:
              product:
                data:
                  id: 451154
                  type: product
                  links:
                    self: https://shopapi.activeants.nl/v3/products/451154
          - id: 67983224
            type: stockmutation
            attributes:
              createdOn: '2023-03-09T14:23:39.418'
              warehouseCode: NR
              sku: SKU_31337
              locationType: AUTOSTORE
              quantity: -2
              expirationDate: '2024-03-14'
              lotNumber: LOT_2023_001
            relationships:
              product:
                data:
                  id: 451154
                  type: product
                  links:
                    self: https://shopapi.activeants.nl/v3/products/451154
          - id: 67983224
            type: stockmutation
            attributes:
              createdOn: '2023-03-09T14:23:39.418'
              warehouseCode: NR
              sku: SKU_31337_DUO_PACK
              locationType: AUTOSTORE
              quantity: 1
            relationships:
              product:
                data:
                  id: 451199
                  type: product
                  links:
                    self: https://shopapi.activeants.nl/v3/products/451199
        links:
          next: >-
            https://shopapi.activeants.nl/v3/stockmutations?page[size]=4&page[cursor]=67983225
          first: >-
            https://shopapi.activeants.nl/v3/stockmutations?page[size]=4&page[cursor]=0
          self: >-
            https://shopapi.activeants.nl/v3/stockmutations?page[size]=4&page[cursor]=67983222
  schemas:
    error-response:
      title: error-response
      type: object
      properties:
        errors:
          type: array
          items:
            type: object
            required:
              - code
              - title
              - detail
            properties:
              status:
                type: integer
                example: 404
              code:
                type: string
                example: 404-1
              title:
                type: string
                example: customer id not found
              detail:
                type: string
                example: the customer with id 1234 could not be found
              links:
                type: object
                required:
                  - related
                properties:
                  related:
                    type: string
                    format: uri
                    example: https://shopapi.activeants.nl/customers/1235
      description: >
        The errors object provide additional information about problems
        encountered while performing an operation.  The object consists of a
        list which allows for mulitple errors to be returned in case the server
        was able to report more than one.
    get-status-get-response:
      type: object
      properties:
        messageCode:
          type: string
          example: OK
        message:
          type: string
          example: Status is OK.
        result:
          type:
            - object
            - 'null'
          example: null
    externalOrderNumber:
      type: string
      title: externalOrderNumber
      description: The externalOrderNumber as specified during creation of the `order`.
      maxLength: 50
      examples:
        - '#1003-UK'
    orderIdentification:
      type: object
      title: orderIdentification
      description: Identifies a resource as an `order`.
      properties:
        id:
          type: integer
          description: >-
            The `id` is an internally assigned `id` of an `order`. Only during
            and `POST v3/orders` is it possible to use arbitrary integer value
            which might be used to cross-reference within the message itself.
            However the system will not honour any value assigned by external
            systems.
          examples:
            - 24006341
        type:
          const: order
          default: order
    localeCode:
      type: string
      title: localeCode
      description: >-
        A `localeCode` is a code that defines a language, notation formats and
        other cultural conventions applicable to a region or language. Usually a
        `localeCode` consists of at least a `languageCode` and a `countryCode`.
        Within Active Ants the `localeCode` is used to capture and determine the
        language and country of a consumer in a single field. Note that the
        locale in Active Ants is very similar to a browser locale and hence can
        also be only a `languageCode` only.
      pattern: ^([a-zA-Z]+(?:-[a-zA-Z]+)?)
      examples:
        - nl-NL
        - nl-BE
        - en-GB
        - fr-BE
    phoneNumber:
      type: string
      title: phoneNumber
      description: >-
        A `phoneNumber` field represents a phone number that can be expressed as
        a series of  digits, spaces, plus signs, parentheses, dashes, periods,
        backslashes, and forward slashes. As there are many variations and local
        conventions for phone numbers the field has no strict validation logic
        assigned to it. It is the expectation that a human operator will be able
        to make sense of the number if it is required to be dialed.
      pattern: ^[\d\s\+\(\)-\.\\\/]+$
      maxLength: 32
    warehouseCode:
      type: string
      enum:
        - NR
        - NN
        - GN
        - BW
        - DD
        - FP
      title: warehouseCode
      description: >
        The code for the warehouse used to uniquely refer to an Active Ants
        warehouse.


        The following warehouses are currently defined:

        | code | country         | city        | customs region             | 

        | ---- | --------------- | ----------- | -------------------------- |

        | BW   | Belgium         | Willebroek  | EU - Common Customs Tariff |

        | DD   | Germany         | Dorsten     | EU - Common Customs Tariff |

        | GN   | Great Brittain  | Northampton | GB - UK Global Tariff      |

        | NN   | The Netherlands | Nieuwegein  | EU - Common Customs Tariff |

        | NR   | The Netherlands | Roosendaal  | EU - Common Customs Tariff |

        | FP   | France          | Pantin      | EU - Common Customs Tariff |
    orderAttributes-clientMutable:
      type: object
      title: orderAttributes
      description: Representes the 'owned' attributes of the `order` resource.
      properties:
        attributes:
          type: object
          properties:
            externalOrderNumber:
              $ref: '#/components/schemas/externalOrderNumber'
            reference:
              type: string
              description: Optional field to store an internal reference to the order
            orderedOn:
              type: string
              format: date
              description: >-
                An optional field to place the date the consumer placed the
                order, this may be a date in the past. For example when the
                order was forwarded much later to the shop api.
            consumerReference:
              type: string
              description: Optional reference provided by the consumer of this  order`
            promotionCode:
              type: string
              description: 'Any promotion code the consumer used when placing the order. '
              examples:
                - BLACKFRIDAY
            locale:
              $ref: '#/components/schemas/localeCode'
              description: >-
                The `locale` defines (among other things) the language used in
                communications, inserts and possibly packaging relating to this
                `order`. The `locale` has to be a full locale like `en-GB`
            email:
              type: string
              description: >-
                The email address of the consumer. This email address could be
                used by Active Ants, the carrier o customs in various
                notification messages regarding the `shipments`(s) related to
                this `order`.
              format: email
              examples:
                - consumer@example.com
            phoneNumber:
              $ref: '#/components/schemas/phoneNumber'
              description: >-
                The consumer's phone number which might be used by the carrier
                or customs to contact the consumer regarding the `shipment`(s)
                related to this `order`.
            vatNumber:
              type: string
            fulfillFrom:
              $ref: '#/components/schemas/warehouseCode'
              description: >-
                When provided indicates the warehouse from which each
                `orderItem` must be fulfilled. When not provided the system will
                select the warehouse based on the warehouse strategy
                configuration for your company. Note that this value can also be
                set at `orderItem`-level which supercedes the specification at
                `order`-level or the warehouse strategy.
            preferredShippingDate:
              type: string
              description: >-
                Allows the specification of a future date at which the `order`
                is to be shipped.
              format: date
            allowPartialDelivery:
              type: boolean
              description: >-
                When set to `true` the order may be split into multiple
                `shipments` in case there is insufficient stock to filfill the
                `order` in a single `shipment` or from a single warehouse. 
              default: false
            onHold:
              type: boolean
              description: >-
                When set to `true` prevents the order from being shipped until
                released.
              default: false
            metadata:
              description: >-
                Allows the specification of arbitrary name-value pairs. **note**
                currently only the names 'extra1', 'extra2', 'extra3', 'extra4'
                and 'extra5' are supported and are linked to functionality
                (contact support for more information).
              allOf:
                - type: object
                  properties:
                    extra1:
                      type: string
                    extra2:
                      type: string
                    extra3:
                      type: string
                    extra4:
                      type: string
                    extra5:
                      type: string
          required:
            - externalOrderNumber
            - locale
    channelOrderIdentifier:
      title: channelOrderIdentifier
      description: >-
        The `channelIdentifier` is the (technical) id for the `order` as
        assigned by the external channel. For example Shopify, Amazon, Bol,
        Zalando, etc. may assign a unique id for communication and
        synchronization purposes.
      type: string
      maxLength: 250
      examples:
        - 2b55dd3c-b1d4-4107-acd2-56903ae5722b
    currencyCode:
      type: string
      title: currencyCode
      description: >-
        Denotes a (valid) currency using the
        [ISO:4217](https://en.wikipedia.org/wiki/ISO_4217) notation for
        currencies.
      pattern: '[A-Z]{3}'
      minLength: 3
      maxLength: 3
      examples:
        - EUR
        - GBP
        - USD
    orderAttributes:
      type: object
      title: orderAttributes
      description: Representes the 'owned' attributes of the `order` resource.
      allOf:
        - $ref: '#/components/schemas/orderAttributes-clientMutable'
        - type: object
          properties:
            attributes:
              type: object
              properties:
                channelIdentifier:
                  $ref: '#/components/schemas/channelOrderIdentifier'
                currency:
                  $ref: '#/components/schemas/currencyCode'
                  description: >-
                    Defines the currency of the `order` and all its
                    `orderItems`. If omitted, the value `EUR` is assumed. The
                    `currency` is used to convert the price of each `orderItem`
                    to an acceptable currency when a shipment must be declaring
                    its value to customs agencies.
                  default: EUR
    orderTypeIdentifier:
      type: object
      title: orderTypeIdentifier
      description: Identifies a resource as an `orderType`.
      properties:
        id:
          type: integer
          examples:
            - 10045
        type:
          type: string
          pattern: orderType
          default: orderType
    orderTypeLinksSelf:
      type: object
      title: orderTypeLinksSelf
      description: Represents a self-link of an `orderType` resource.
      properties:
        links:
          type: object
          properties:
            self:
              type: string
              format: uri
              readOnly: true
              examples:
                - https://shopapi.activeants.nl/v3/orderTypes/10045
    orderTypeRelation:
      type: object
      title: orderTypeRelation
      description: Represents a relationship to an `orderType` resource.
      properties:
        data:
          allOf:
            - $ref: '#/components/schemas/orderTypeIdentifier'
            - $ref: '#/components/schemas/orderTypeLinksSelf'
    orderItemIdentification:
      type: object
      title: orderItemIdentification
      description: Identifies a resource as an `orderItem`.
      properties:
        id:
          type: integer
          description: >-
            The `id` is the internally assigned `id` of an `orderItem`. Only
            during and `POST v3/orders` is it possible to use arbitrary integer
            values to cross-reference within the message itself. However the
            system will not honour any value assigned by external systems.
          examples:
            - 52008118
        type:
          const: orderItem
          default: orderItem
          examples:
            - orderItem
      required:
        - type
    orderItemLinksSelf:
      type: object
      title: orderItemLinksSelf
      description: Represents a self-link of an `orderItem` resource.
      properties:
        links:
          type: object
          properties:
            self:
              type: string
              format: uri
              readOnly: true
              examples:
                - https://shopapi.activeants.nl/v3/orderItems/634006341
    orderItemsRelation:
      type: object
      title: orderItemsRelation
      description: Represents a relationship to multiple `orderItem` resources.
      properties:
        data:
          type: array
          items:
            allOf:
              - $ref: '#/components/schemas/orderItemIdentification'
              - $ref: '#/components/schemas/orderItemLinksSelf'
    addressIdentification:
      type: object
      title: addressIdentification
      description: Identifies a resource as an `address`.
      properties:
        id:
          type: integer
        type:
          const: address
          default: address
      required:
        - type
    addressRelation:
      type: object
      title: addressRelation
      description: Represents a relationship to an `address` resource.
      properties:
        data:
          allOf:
            - $ref: '#/components/schemas/addressIdentification'
    pickUpPointIdentifier:
      type: object
      title: pickUpPointIdentifier
      description: Identifies a resource as an `pickUpPoint`.
      properties:
        id:
          type: integer
        type:
          const: pickUpPoint
          default: pickUpPoint
      required:
        - type
    pickUpPointRelation:
      type: object
      title: pickUpPointRelation
      description: Represents a relationship to an `pickUpPoint` resource.
      properties:
        data:
          allOf:
            - $ref: '#/components/schemas/pickUpPointIdentifier'
    shippingMethodIdentifier:
      type: object
      title: shippingMethodIdentifier
      description: Identifies a resource as a `shippingMethod`.
      properties:
        id:
          type: integer
          examples:
            - 12
        type:
          const: shippingMethod
          readOnly: true
    shippingMethodLinksSelf:
      type: object
      title: shippingMethodLinksSelf
      description: Represents a self-link of a `shippingMethod` resource.
      properties:
        links:
          type: object
          properties:
            self:
              type: string
              format: uri
              readOnly: true
              examples:
                - https://shopapi.activeants.nl/v3/shippingMethod/12
    shippingMethodRelation:
      type: object
      title: shippingMethodRelation
      description: Represents a relationship to a `shippingMethod` resource.
      properties:
        data:
          allOf:
            - $ref: '#/components/schemas/shippingMethodIdentifier'
            - $ref: '#/components/schemas/shippingMethodLinksSelf'
    orderRelationships:
      type: object
      title: orderRelationships
      description: Defines the relationships of the `order` resource.
      properties:
        relationships:
          type: object
          properties:
            orderType:
              $ref: '#/components/schemas/orderTypeRelation'
            orderItems:
              $ref: '#/components/schemas/orderItemsRelation'
            deliveryAddress:
              $ref: '#/components/schemas/addressRelation'
              description: >-
                Denotes the address and name where the `order` must be
                delivered, unless a `pickUpPoint` has been specified in which
                case the `order` will be delivered to the pick-up point instead
            billingAddress:
              $ref: '#/components/schemas/addressRelation'
              description: >-
                Optional address that can be used as billing address. When not
                provided it is assumed to be the same as the `deliveryAddress`.
            pickUpPoint:
              $ref: '#/components/schemas/pickUpPointRelation'
              description: >-
                Optional: specify the address of the pick-up point in case the
                `order` is to be delivered at a pick-up point. Note that the
                `deliveryAddress` is still required.
            preferredShippingMethod:
              $ref: '#/components/schemas/shippingMethodRelation'
              description: >-
                Optional identifier to the `shippingMethod` preferred for this
                `order`. Note that this method is preferred, but not guaranteed
                since the method might not be available at the warehouse from
                where the `order` might be fulfilled, or the `shipment` may not
                be compatible with the preferred method. *IMPORTANT:* the v3
                endpoints use the `mainShippingMethodId` as returned by the `GET
                settings/get` endpoints  under `/MainShippingMethods/id`. 
          required:
            - orderType
            - deliveryAddress
    productSku:
      type: string
      title: productSku
      description: 'SKU (stock keeping unit) of a product used to identify products. '
      pattern: ^[\x21-\x7E][\x20-\x7E]*[\x21-\x7E]$
      minLength: 2
      maxLength: 80
      examples:
        - TSH-000-S
        - '8720874770299'
        - HK-HNTSSTNG 6X
        - 'BK-14-LARGE: 31x41x14'
        - TRRE-PSU6*003;2023-10:special
    channelOrderItemIdentifier:
      type: string
      title: channelOrderItemIdentifier
      description: >-
        The `channelIdentifier` is the (technical) id for the `orderItem` as
        assigned by the external channel. For example Shopify, Amazon, Bol,
        Zalando, etc. may assign a unique id for communication and
        synchronization purposes. 
      maxLength: 250
      examples:
        - 338fd344-c902-4b1c-8733-1e7fcd01495a
    metadata:
      type: object
      title: metadata
      description: >-
        The `metadata` object is a flexible mechanism that allows clients to
        include arbitrary key-value pairs in the resource. It can be used to
        include additional information about the resource that has no meaning
        within Active Ants, but provides additional context to the client. The
        server will ignore the keys that it does not recognize, allowing clients
        to include custom metadata without affecting the behavior of the API.
        Note that only name-value pairs of type string-string are allowed!
      examples:
        - serviceLevel: premium
          purchases: '140'
          reference: '#74571'
    orderItemAttributes:
      type: object
      title: orderItemAttributes
      description: Representes the 'owned' attributes of the `orderItem` resource.
      properties:
        attributes:
          type: object
          properties:
            sku:
              $ref: '#/components/schemas/productSku'
            channelIdentifier:
              $ref: '#/components/schemas/channelOrderItemIdentifier'
            quantity:
              type: integer
            fulfillFrom:
              $ref: '#/components/schemas/warehouseCode'
              description: >-
                When specified indicates that the item can only be fulfilled
                from the indicated warehouse.
            price:
              type: number
              description: >-
                Specifies the price of a single unit of the `product` as sold to
                the consumer / recipient. Note that all products sold to
                consumers and shipped internationally must have a price greater
                than 0.00, as many customs agencies do not accept negative
                values. Furthermore, some carriers may impose a minimum
                price—typically around 1.000 in the order’s currency.
              multipleOf: 0.01
            vat:
              type: number
              description: >-
                This field represents the VAT percentage that was included in
                the price. If omitted, the value 0.000 is assumed as the
                percentage. The value must be between [0.000 and 1.000⟩, with an
                accuracy of up to three decimal places after the comma.
              minimum: 0
              exclusiveMaximum: 1
              multipleOf: 0.001
              default: 0
              examples:
                - '0.210'
                - '0.075'
                - '0.190'
            name:
              type: string
              description: >-
                The name / description for this `product` on this `orderItem`.
                If no value is provided here, then the name of the product will
                be used instead whenever a name is required (for example when
                declaring to customs)
            metadata:
              description: >-
                Allows the specification of arbitrary name-value pairs. **note**
                currently only the names 'extra6' and 'extra7' are supported.
              allOf:
                - $ref: '#/components/schemas/metadata'
                - type: object
                  properties:
                    extra6:
                      type: string
                    extra7:
                      type: string
          required:
            - sku
            - quantity
    orderLinksSelf:
      type: object
      title: orderLinksSelf
      description: Represents a self-link of an `order` resource.
      properties:
        links:
          type: object
          properties:
            self:
              type: string
              format: uri
              readOnly: true
              examples:
                - https://shopapi.activeants.nl/v3/orders/24006341
    orderRelation:
      type: object
      title: orderRelation
      description: Represents a relationship to an `order` resource.
      properties:
        data:
          allOf:
            - $ref: '#/components/schemas/orderIdentification'
            - $ref: '#/components/schemas/orderLinksSelf'
    productIdentifier:
      type: object
      title: productIdentifier
      description: Identifies a resource as a `product`.
      properties:
        id:
          type: integer
          description: >-
            The `id` is an internally assigned `id` of a `product`. It is
            possible to assign an arbitrary value in a `POST` request to
            cross-reference within the message itself. However the system will
            not honour any value assigned by external systems.
          readOnly: true
          examples:
            - 1267733
        type:
          const: product
          default: product
    productLinksSelf:
      type: object
      title: productLinksSelf
      description: Represents a self-link of a `product` resource.
      properties:
        links:
          type: object
          properties:
            self:
              type: string
              format: uri
              readOnly: true
              examples:
                - https://shopapi.activeants.nl/v3/products/1267733
    productRelation:
      type: object
      title: productRelation
      description: Represents a relationship to a `product` resource.
      properties:
        data:
          allOf:
            - $ref: '#/components/schemas/productIdentifier'
            - $ref: '#/components/schemas/productLinksSelf'
    orderItemRelationships:
      type: object
      title: orderItemRelationships
      description: Defines the relationships of the `orderItem` resource.
      properties:
        relationships:
          type: object
          properties:
            order:
              $ref: '#/components/schemas/orderRelation'
            product:
              $ref: '#/components/schemas/productRelation'
    countryCode:
      type: string
      title: countryCode
      description: >-
        A valid [ISO:3166-1
        alpha-2](https://www.iso.org/obp/ui#iso:pub:PUB500001:en) country code
        denoting the country or subdivision.
      pattern: ^[A-Z]{2,2}(-[A-Z0-9]{2,3})?$
      examples:
        - NL
        - AT
        - BE
        - FR
        - DE
        - GB
        - IT
        - US
        - SK
        - SE
        - ES
    addressAttributes:
      type: object
      title: addressAttributes
      description: Representes the 'owned' attributes of the `address` resource.
      properties:
        attributes:
          type: object
          description: >-
            An `address` in the context of Active Ants, is a specific physical
            location combined with information of a recipient that can be
            visited and/or where shipments can be delivered to.
          properties:
            firstName:
              type: string
              description: The first (given) name of the addressee
            lastName:
              type: string
              description: The last (family) name of the addressee
            prefix:
              type: string
              description: >-
                Any particles that may appear between the first and last name.
                In a Dutch names "van" or "de" are typical examples.
            company:
              type: string
              description: >-
                The name of the company or organization associated with the
                addressee.
            street1:
              type: string
              description: The name of the street or road where the address is located.
            street2:
              type: string
              description: >-
                Optional information reserved for any additional address
                information that doesn't fit in the `street1` first field, such
                as suite or apartment numbers, floor numbers, or building names.
            houseNumber:
              type: string
              description: >-
                The number associated with the address on the street or road.
                This is typically a numerical value.
            postcode:
              type: string
              description: The postcode, also known as zip, postal code, Eircode, etc.
            houseNumberExtension:
              type: string
              description: >-
                Additional information that is added to a house number to
                specify a more precise location within a building or property,
                such as an apartment number, unit number, or letter.
            translatedName:
              type: string
              description: >-
                Optional field for special situations where the `carrier`
                requires a translated versoin of the 'name fields'.

                For example Japanese addresses may require a translation of the
                name to latin-1 or Kana.
            city:
              type: string
            region:
              type: string
              description: >-
                A possible region name. Typically a province, a state, or a
                prefecture.
            countryCode:
              $ref: '#/components/schemas/countryCode'
      examples:
        - attributes:
            company: Tweede Kamer der Staten-Generaal
            street1: Prinses Irenestraat
            street2: Expeditie 1 – zij-ingang
            postcode: 2595 BD
            houseNumber: '6'
            city: Den Haag
            countryCode: NL
        - attributes:
            firstName: Johan
            lastName: Witt
            prefix: de
            street1: Oude Delft
            postcode: 2611 BC
            houseNumber: '57'
            city: Delft
            countryCode: NL
    pickUpPointAttributes:
      type: object
      title: pickUpPointAttributes
      description: Representes the 'owned' attributes of the `pickUpPoint` resource.
      properties:
        attributes:
          type: object
          description: >-
            Pick-up points are specific locations where consumers can go to
            collect or receive a shipment that they have ordered. These
            locations are usually convenient places for consumers. The pick-up
            point information required is depenent on the type of service being
            offered at that location. For example in unattended pick-up
            locations a code might be required to deliver and or pick-up the
            consignment.
          properties:
            identifier:
              type: string
              description: >-
                An identifier associated with the pick-up point at the address
                or carrier. Note that this identifier does not uniquely identify
                a `pickUpPoint`, however it does identify the `pickUpPoint` in
                the scope of the carrier, country and/or location.
              examples:
                - NL-105302
            registrationNumber:
              type: string
              description: >-
                An optional number that identifies the shipment recipient. For
                instance, DHL Packstation uses a "Postnummer" (registration
                number) to determine the intended consumer.
              examples:
                - 9045435454
            name:
              type: string
              description: 'Name of the location where the `pickUpPoint` is situated. '
            street1:
              type: string
              description: >-
                The name of the street or road where the location of the
                `pickUpPoint`.
            street2:
              type: string
              description: Optional additional information for the `pickUpPoint` location.
            postcode:
              type: string
              description: >-
                The postcode of the location where the `pickUpPoint` is
                situated.
            houseNumber:
              type: string
              description: >-
                The house number of the location where the `pickUpPoint` is
                situated.
            houseNumberExtension:
              type: string
              description: >-
                The 'additional information' of the housenumber of the location
                where the `pickUpPoint` is situated. The additional information
                that is added to a house number to specify a more precise
                location within a building or property, such as an apartment
                number, unit number, or letter.
            city:
              type: string
              description: The city of the `pickUpPoint` location.
            region:
              type: string
              description: >-
                A possible region name. Typically a province, a state, or a
                prefecture.
            countryCode:
              $ref: '#/components/schemas/countryCode'
    orderAttachmentIdentification:
      type: object
      title: orderAttachmentIdentification
      description: Identifies a resource as an `orderAttachment`.
      properties:
        id:
          type: integer
          description: >-
            The `id` is an internally assigned `id` of an `orderAttachment`.
            Only during and `POST v3/orders` or `POST v3/orderAttachments` is it
            possible to use arbitrary integer value which might be used to
            cross-reference within the message itself. However the system will
            not honour any value assigned by external systems.
          examples:
            - 52005678
        type:
          const: orderAttachment
          default: orderAttachment
          examples:
            - orderAttachment
      required:
        - type
    orderAttachmentPrintStrategy:
      type: string
      enum:
        - REQUIRED
        - BEST_EFFORT
      title: orderAttachmentPrintStrategy
      description: >-
        Defines the strategy to employ when printing the `orderAttachement`.
        Defaults to `REQUIRED`.


        | value       | description |

        |-------------|-------------|

        | REQUIRED    | (default) Makes the printing of the `orderAttachment` a
        required step in the fulfilment of each `shipment` of the `order`. |

        | BEST_EFFORT | Makes the printing of the `orderAttahment` optional,
        meaning that when printing fails for what ever reasons the `shipment`
        will not be blocked. |
      default: REQUIRED
      examples:
        - REQUIRED
        - BEST_EFFORT
    orderAttachmentAttributes:
      type: object
      title: orderAttachmentAttributes
      description: >
        Represents the 'owned' attributes of the `orderAttachment` resource.
        Note that the attachment is sent using `multipart/form-data` which means
        that the content of the attachment is not part of this structure.
      properties:
        attributes:
          type: object
          properties:
            filename:
              type: string
            contentType:
              type: string
              description: >
                MIME content type of a content property. 

                This parameter is important because will define the manner in
                which contents are processed, note however that at the moment
                only one value is supported: `application/pdf`
              enum:
                - application/pdf
              default: application/pdf
            printStrategy:
              $ref: '#/components/schemas/orderAttachmentPrintStrategy'
          required:
            - filename
            - contentType
    orderIncludables:
      type: object
      title: orderIncludables
      description: >-
        Represents the includable resources for the `order` resource which are
        one of more `orderItem`, one or more `address` and up to one
        `pickUpPoint` resources.
      properties:
        included:
          type: array
          description: >-
            An array of resources included with the `order`, use the `type`
            property to identify the resource's type.
          items:
            anyOf:
              - allOf:
                  - $ref: '#/components/schemas/orderItemIdentification'
                  - $ref: '#/components/schemas/orderItemAttributes'
                  - $ref: '#/components/schemas/orderItemRelationships'
              - allOf:
                  - $ref: '#/components/schemas/addressIdentification'
                  - $ref: '#/components/schemas/addressAttributes'
              - allOf:
                  - $ref: '#/components/schemas/pickUpPointIdentifier'
                  - $ref: '#/components/schemas/pickUpPointAttributes'
              - allOf:
                  - $ref: '#/components/schemas/orderAttachmentIdentification'
                  - $ref: '#/components/schemas/orderAttachmentAttributes'
    order:
      title: order
      x-tags:
        - v3/schemas
      description: >
        An `order` is a single request for fulfillment that is submitted to
        Active Ants. 

        An `order` will be 'converted' into one or more `shipments` that
        together consist of the same quantity of products delivered at the
        consumer.
      allOf:
        - $ref: '#/components/schemas/orderIdentification'
        - $ref: '#/components/schemas/orderAttributes'
        - $ref: '#/components/schemas/orderRelationships'
        - $ref: '#/components/schemas/orderIncludables'
        - $ref: '#/components/schemas/orderLinksSelf'
    pagination-links:
      type: object
      title: pagination-links
      description: >-
        For endpoints that support pagination the following links are provided
        for convenience and compliancy to the
        [JSON:API](https://jsonapi.org/format/#fetching-pagination)
        specification for pagination.
      properties:
        links:
          type: object
          description: >-
            Pagination links that provided for convenience and in compliancy to
            the [json:api](https://jsonapi.org/format/#fetching-pagination)
            specification for pagination.
          properties:
            self:
              type: string
              format: uri
              examples:
                - >-
                  https://shopapi.activeants.nl/v3/shipments?page[cursor]=33216650
            next:
              type: string
              format: uri
              examples:
                - >-
                  https://shopapi.activeants.nl/v3/shipments?page[cursor]=3321685950
            first:
              type: string
              format: uri
              examples:
                - https://shopapi.activeants.nl/v3/shipments?page[cursor]=0
    orderItem:
      title: orderItem
      x-tags:
        - v3/schemas
      description: >
        An `orderItem` refers to a specific `product` has been purchased and
        must be shipped to the consumer. 

        It is a line item that details the quantity, description, price, and
        other relevant information about the product.
      allOf:
        - $ref: '#/components/schemas/orderItemIdentification'
        - $ref: '#/components/schemas/orderItemAttributes'
        - $ref: '#/components/schemas/orderItemRelationships'
        - $ref: '#/components/schemas/orderItemLinksSelf'
    orderAttachmentRelationships:
      type: object
      title: orderAttachmentRelationships
      properties:
        relationships:
          type: object
          properties:
            order:
              $ref: '#/components/schemas/orderRelation'
    orderAttachmentLinksSelf:
      type: object
      title: orderAttachmentLinksSelf
      description: Represents a self-link of an `orderAttachment` resource.
      properties:
        links:
          type: object
          properties:
            self:
              type: string
              format: uri
              readOnly: true
    orderAttachment:
      title: orderAttachment
      x-tags:
        - v3/schemas
      allOf:
        - $ref: '#/components/schemas/orderAttachmentIdentification'
        - $ref: '#/components/schemas/orderAttachmentAttributes'
        - $ref: '#/components/schemas/orderAttachmentRelationships'
        - $ref: '#/components/schemas/orderAttachmentLinksSelf'
    shipmentStatus:
      type: string
      enum:
        - READY_TO_PICK
        - READY_TO_SORT
        - READY_TO_SHIP
        - SHIPPED
        - ERROR
      title: shipmentStatus
      description: >
        The `shipmentStatus` provides insight into the step in the process of
        fulfilling a `shipment` within a warehouse.


        | status          | Description  |

        | --------------- | ------------ |

        | `READY_TO_PICK` | The `shipment` has been fully planned and awaits the
        picking by an operator. |

        | `READY_TO_SORT` | The `shipment` has been picked and packed and awaits
        sorting for the carrier. |

        | `READY_TO_SHIP` | The `shipment` has been sorted and awaits pick-up by
        the carrier. |

        | `SHIPPED`       | The `shipment` has been handed over to the carrier
        and has dispatched from the warehouse. |

        | `ERROR`         | An issue with the `shipment` has occurred, for
        example some labelling issue. The `shipments` is awaiting intervention
        from an operator. |
    shipmentIdentifier:
      type: object
      title: shipmentIdentifier
      description: Identifies a resource as a `shipment`.
      properties:
        id:
          type: integer
          readOnly: true
          examples:
            - 68076953
        type:
          const: shipment
          readOnly: true
          examples:
            - shipment
    shipmentTrackingStage:
      type: string
      enum:
        - LABELLED
        - ACCEPTED
        - SORTED
        - IN_DELIVERY
        - AT_PUP
        - DELIVERED
        - 1ST_ATTEMPT
      title: shipmentTrackingStage
      description: >
        The `shipmentTrackingStage` provide a generalized set of tracking
        well-defined stages for shipments.


        The `shipmentTrackingStage` are generalized over all carriers. Each
        carrier can and has defined their own set of stages for tracking their
        consignments. To accommodate the main stages that are supported by most
        carriers the `shipmentTrackingStages` generalizes the carrier-specific
        stages. This could mean that some details of a particular carrier are
        not reflected by this enumeration. 


        | stage                  | id | Description  |

        | ---------------------- | -- | ------------ |

        | `NEW`                  |  0 | The shipment is newly created and has
        not been assigned to a carrier yet. | 

        | `LABELED`              |  1 | A label has created for the shipment. |

        | `ACCEPTED`             |  2 | The shipment has been accepted, received
        and scanned by the carrier. |

        | `SORTED`               |  3 | The shipment is been sorted before
        delivery. |

        | `IN_TRANSIT`           |  4 | The shipment is being delivered, but has
        not been delivered yet. |

        | `ATTEMPTED`            |  8 or 10 | An unsuccessful attempt to deliver
        the shipment has been made. |

        | `AVAILABLE_FOR_PICKUP` |  5 | The shipment has been delivered to the
        pick up point for the recipient to collect. |

        | `DELIVERED`            |  7 | The shipment has been delivered. |

        | `RETURNED`             | 19 | The shipment has been returned to the
        sender after a failing be delivered. |

        | `TRACKED_EXTERNALLY`   | 18 | There is no tracking information being
        shared with Active Ants for this shipment. |


        Note the id column corresponds to the v2 endpoint values for the stage
    shipmentAttributes:
      type: object
      title: shipmentAttributes
      description: Representes the 'owned' attributes of the `shipment` resource.
      properties:
        attributes:
          type: object
          properties:
            status:
              $ref: '#/components/schemas/shipmentStatus'
              readOnly: true
            readyToPickOn:
              type: string
              description: >-
                Indicates the date the shipment was fully planned and ready to
                be picked in a warehouse of Active Ants.
              format: date
              readOnly: true
            readyToShipOn:
              type: string
              description: >-
                Indicates the date the shipment was fully picked and packed in a
                warehouse of Active Ants, awaiting dispatch.
              format: date
              readOnly: true
            shippedOn:
              type: string
              description: >-
                Indicates the date the shipment has shipped from the warehouse
                of Active Ants.
              format: date
              readOnly: true
            warehouseCode:
              $ref: '#/components/schemas/warehouseCode'
            weight:
              type: integer
              description: >-
                The (actual) weight of the shipment in grams. This weight
                includes the products, packing materials and inserts.
              readOnly: true
            invoicingWeight:
              type: integer
              description: >-
                The weight used to calculate the tariff for this shipment. For
                some carriers this deviates from the (actual) `weight` as these
                carriers apply a 'volumetric' or 'dimensional' weight which is
                the largest of the actual weight and the dimensional weight of
                the shipment.
              readOnly: true
            basketPicture:
              type: string
              format: uri
              readOnly: true
              examples:
                - >-
                  https://basketpic.activeants.nl/images/scale/23588151e05e44c9-5138-469e-a1cf-5ab137d4bcd7.jpg
            tracking:
              type: object
              properties:
                carrier:
                  type: string
                  description: >
                    <span class="chip-blue"
                    href="https://dev.azure.com/activeants/ActiveAnts/_workitems/edit/13061"
                    >SOON</span>

                    Provides insight into which carrier is providing the
                    transport of the shipment to the `deliveryAddress` or
                    `pickUpPointAddress`. 

                    For example `FEDEX`, `POSTNL`, `BPOST`, `DHL`, `CORREOS`,
                    `POSTE ITALIANE`, `BRING`, `ROYAL MAIL`, and many
                    more.             
                  examples:
                    - FEDEX
                    - POSTNL
                    - BPOST
                    - DHL
                    - CORREOS
                    - POSTE ITALIANE
                    - BRING
                    - ROYAL MAIL
                number:
                  type: integer
                stage:
                  $ref: '#/components/schemas/shipmentTrackingStage'
                status:
                  type: string
                  enum:
                    - OK
                    - ERROR
                    - WARNING
                  examples:
                    - OK
                url:
                  type: string
                  format: uri
            colli:
              type: array
              items:
                type: object
                properties:
                  number:
                    type: string
                  parcelNumber:
                    type: string
                    description: The parcel number as assigned by the carrier
                  trackingUrl:
                    type: string
                    description: A tracking url specific to this collo
                    format: uri
                    readOnly: true
            returnLabel:
              type: string
            metadata:
              description: Repeats the metadata as specified on the `order`.
              readOnly: true
              x-beta: true
              x-tags:
                - betaaa
              allOf:
                - type: object
                  properties:
                    extra1:
                      type: string
                    extra2:
                      type: string
                    extra3:
                      type: string
                    extra4:
                      type: string
                    extra5:
                      type: string
    shipmentItemIdentifier:
      type: object
      title: shipmentItemIdentifier
      description: Identifies a resource as a `shipmentItem`.
      properties:
        id:
          type: integer
          readOnly: true
          examples:
            - 15368865
        type:
          const: shipmentItem
          readOnly: true
    shipmentItemLinksSelf:
      type: object
      title: shipmentItemLinksSelf
      description: Represents a self-link of a `shipmentItem` resource.
      properties:
        links:
          type: object
          properties:
            self:
              type: string
              format: uri
              readOnly: true
              examples:
                - https://shopapi.activeants.nl/v3/shipmentItem/15368865
    shipmentItemsRelation:
      type: object
      title: shipmentItemsRelation
      description: Represents a relationship to multiple `shipmentItem` resources.
      properties:
        data:
          type: array
          items:
            allOf:
              - $ref: '#/components/schemas/shipmentItemIdentifier'
              - $ref: '#/components/schemas/shipmentItemLinksSelf'
    shipmentRelationships:
      type: object
      title: shipmentRelationships
      description: Defines the relationships of the `shipment` resource.
      properties:
        relationships:
          type: object
          properties:
            order:
              $ref: '#/components/schemas/orderRelation'
            orderType:
              $ref: '#/components/schemas/orderTypeRelation'
            shipmentItems:
              $ref: '#/components/schemas/shipmentItemsRelation'
            shippingMethod:
              $ref: '#/components/schemas/shippingMethodRelation'
    lotNumber:
      type: string
      title: lotNumber
      description: >-
        A lot number is a unique identification number assigned to a specific
        batch or lot of a product during the manufacturing process. It is used
        to track and trace the product's manufacturing and distribution history,
        including when and where it was produced, which raw materials were used,
        and to which customers it was shipped.


        Lot numbers can be alphanumeric and may include information such as the
        date and time of production, the location of production, and the machine
        or equipment used. They are often printed on the product's packaging or
        label, as well as on associated documentation such as batch records and
        certificates of analysis.
      pattern: ^[\x21-\x7E][\x20-\x7E]*[\x21-\x7E]$
      examples:
        - M008686
        - M-45/61 21-190
    shipmentItemAttributes:
      type: object
      title: shipmentItemAttributes
      properties:
        attributes:
          type: object
          properties:
            sku:
              $ref: '#/components/schemas/productSku'
            quantity:
              type: integer
              minimum: 0
              examples:
                - 2
            lotNumber:
              $ref: '#/components/schemas/lotNumber'
            expirationDate:
              type: string
              format: date
              readOnly: true
              examples:
                - '2028-10-14'
            serialNumbers:
              type: array
              items:
                type: string
                minLength: 1
                examples:
                  - '2204190861003991'
    orderItemRelation:
      type: object
      title: orderItemRelation
      description: Represents a relationship to an `orderItem` resource.
      properties:
        data:
          allOf:
            - $ref: '#/components/schemas/orderItemIdentification'
            - $ref: '#/components/schemas/orderItemLinksSelf'
    shipmentLinksSelf:
      type: object
      title: shipmentLinksSelf
      description: Represents a self-link of a `shipment` resource.
      properties:
        links:
          type: object
          properties:
            self:
              type: string
              format: uri
              readOnly: true
              examples:
                - https://shopapi.activeants.nl/v3/shipments/68076953
    shipmentRelation:
      type: object
      title: shipmentRelation
      description: Represents a relationship to a `shipment` resource.
      properties:
        data:
          allOf:
            - $ref: '#/components/schemas/shipmentIdentifier'
            - $ref: '#/components/schemas/shipmentLinksSelf'
    shipmentItemRelationships:
      type: object
      title: shipmentItemRelationships
      properties:
        relationships:
          type: object
          properties:
            orderItem:
              $ref: '#/components/schemas/orderItemRelation'
            product:
              $ref: '#/components/schemas/productRelation'
            shipment:
              $ref: '#/components/schemas/shipmentRelation'
    shipmentIncludables:
      type: object
      title: shipmentIncludables
      properties:
        included:
          type: array
          items:
            anyOf:
              - allOf:
                  - $ref: '#/components/schemas/shipmentItemIdentifier'
                  - $ref: '#/components/schemas/shipmentItemAttributes'
                  - $ref: '#/components/schemas/shipmentItemRelationships'
    shipment:
      title: shipment
      x-tags:
        - v3/schemas
      description: >
        Represents a single `shipment` from a single warehouse that was
        generated for an order.
      allOf:
        - $ref: '#/components/schemas/shipmentIdentifier'
        - $ref: '#/components/schemas/shipmentAttributes'
        - $ref: '#/components/schemas/shipmentRelationships'
        - $ref: '#/components/schemas/shipmentIncludables'
        - $ref: '#/components/schemas/shipmentLinksSelf'
    inboundIdentification:
      type: object
      title: inboundIdentification
      description: Identifies a resource as an `inbound` also referred to as receipt.
      properties:
        id:
          type: integer
        type:
          const: inbound
    inboundStatus:
      type: string
      enum:
        - PROCESSING
        - CHECKING
        - CHECKED
        - COMPLETED
      title: inboundStatus
      description: >-
        The states of an `inbound` are


        State      | Description

        -----------|----------

        PROCESSING | The initial stage of the `inbound` in which `SKU`s are
        being counted and moved from the pallets to warehouse locations. At this
        moment `SKU`s are not counted as `stock`.

        CHECKING   | All `SKU`s have been counted and placed on warehouse
        locations. When th quantities on the `inbound` match those on the
        `inboundPackingSlip` the `locations` contianint that `SKU` are released
        and counted towards available stock levels. All `SKU`s with differences
        must first be checked.

        CHECKED    | All totals of the `SKU`s have checked and any differences
        between the `inbound` and `inboundPackingSlip` have been confirmed or
        corrected. Some misplaced `SKU`s might still be added to the `inbound`
        until it is `CLOSED`.

        COMPLETED  | The `inbound` is completed and no more changes can be made
        to the data.
      readOnly: true
      examples:
        - COMPLETED
    inboundAttributes:
      type: object
      title: inboundAttributes
      properties:
        attributes:
          type: object
          properties:
            reference:
              type: string
              description: Shorthand reference of the `inbound`.
              readOnly: true
            status:
              $ref: '#/components/schemas/inboundStatus'
              description: >-
                The states of an `inbound` are


                State      | Description

                -----------|----------

                PROCESSING | The initial stage of the `inbound` in which `SKU`s
                are being counted and moved from the pallets to warehouse
                locations. At this moment `SKU`s are not counted as `stock`.

                CHECKING   | All `SKU`s have been counted and placed on
                warehouse locations. When th quantities on the `inbound` match
                those on the `inboundPackingSlip` the `locations` contianint
                that `SKU` are released and counted towards available stock
                levels. All `SKU`s with differences must first be checked.

                CHECKED    | All totals of the `SKU`s have checked and any
                differences between the `inbound` and `inboundPackingSlip` have
                been confirmed or corrected. Some misplaced `SKU`s might still
                be added to the `inbound` until it is `CLOSED`.

                COMPLETED  | The `inbound` is completed and no more changes can
                be made to the data."
            receivedIn:
              $ref: '#/components/schemas/warehouseCode'
              description: Indicates the warehouse where the `inbound` is received.
            createdOn:
              type: string
              description: >-
                Timestamp of when the `inbound` was created which typically
                coincides with the `PROCESSING` status.
              format: date-time
              readOnly: true
            checkingOn:
              type: string
              description: Timestamp of when the `inbound` reached the `CHECKING` status.
              format: date-time
              readOnly: true
            completedOn:
              type: string
              description: Timestamp of when the `inbound` reached the `COMPLETED` status
              format: date-time
              readOnly: true
    inboundPackingSlipIdentification:
      type: object
      title: inboundPackingSlipIdentification
      description: Identifies a resource as a `inboundPackingSlip`.
      properties:
        id:
          type: integer
          description: >-
            The `id` is an internally assigned `id` of a `inboundPackingSlip`.
            It is possible to assign an arbitrary value in a `POST` request to
            cross-reference within the message itself. However the system will
            not honour any value assigned by external systems.
          examples:
            - 9067
        type:
          const: inboundPackingSlip
          default: inboundPackingSlip
    inboundPackingSlipLinksSelf:
      type: object
      title: inboundPackingSlipLinksSelf
      description: Represents a self-link of an `inboundPackingSlip` resource.
      properties:
        links:
          type: object
          properties:
            self:
              type: string
              format: uri
              readOnly: true
              examples:
                - https://shopapi.activeants.nl/v3/inboundPackingSlip/9067
    inboundPackingSlipRelations:
      type: object
      title: inboundPackingSlipRelations
      description: Represents a relationship to a `inboundPackingSlip` resource.
      properties:
        data:
          allOf:
            - $ref: '#/components/schemas/inboundPackingSlipIdentification'
            - $ref: '#/components/schemas/inboundPackingSlipLinksSelf'
    inboundRelationships:
      type: object
      title: inboundRelationships
      properties:
        relationships:
          type: object
          properties:
            inboundPackingSlip:
              $ref: '#/components/schemas/inboundPackingSlipRelations'
              description: >-
                An `inbound` can only be linked to at most one
                `inboundPackingSlip` which is used to determine the completeness
                of the `inbound`. If no `inboundPackingSlip` was linked, then
                the completeness of the inbound can not be verified and is
                assumed to be correct.
    inboundItemIdentification:
      type: object
      title: inboundItemIdentification
      description: Identifies a resource as an `inboundItem`.
      properties:
        id:
          type: integer
          examples:
            - 673333
        type:
          const: inboundItem
    inboundItemAttributes:
      type: object
      title: inboundItemAttributes
      properties:
        attributes:
          type: object
          properties:
            quantity:
              type: integer
              description: >-
                The quantity of the `sku` received. Note that the same `sku`
                could appear multiple times on the inbound depending on how the
                items have been unpacked and counted.
              exclusiveMinimum: 0
              readOnly: true
            sku:
              $ref: '#/components/schemas/productSku'
            lotNumber:
              $ref: '#/components/schemas/lotNumber'
            expirationDate:
              type: string
              description: 'If applicable, the '
              format: date
              readOnly: true
              examples:
                - '2050-01-02'
    inboundPackingSlipItemIdentifier:
      type: object
      title: inboundPackingSlipItemIdentifier
      description: Identifies a resource as a `inboundPackingSlipItem`.
      properties:
        id:
          type: integer
          description: >-
            The `id` is an internally assigned `id` of a
            `inboundPackingSlipItem`. It is possible to assign an arbitrary
            value in a `POST` request to cross-reference within the message
            itself. However the system will not honour any value assigned by
            external systems.
          examples:
            - 124431
        type:
          const: inboundPackingSlipItem
          examples:
            - inboundPackingSlipItem
    inboundPackingSlipItemLinksSelf:
      type: object
      title: inboundPackingSlipItemLinksSelf
      description: Represents a self-link of a `inboundPackingSlipItem` resource.
      properties:
        links:
          type: object
          properties:
            self:
              type: string
              format: uri
              readOnly: true
              examples:
                - >-
                  https://shopapi.activeants.nl/v3/inboundPackingSlipItems/124431
    inboundPackingSlipItemRelation:
      type: object
      title: inboundPackingSlipItemRelation
      description: Represents a relationship to a `inboundPackingSlipItem` resource.
      properties:
        data:
          allOf:
            - $ref: '#/components/schemas/inboundPackingSlipItemIdentifier'
            - $ref: '#/components/schemas/inboundPackingSlipItemLinksSelf'
    inboundItemRelationships:
      type: object
      title: inboundItemRelationships
      properties:
        relationships:
          type: object
          properties:
            product:
              $ref: '#/components/schemas/productRelation'
              description: >-
                Links to the `product` that was recieved as part of this
                `inboundItem`
            inboundPackingSlipItem:
              $ref: '#/components/schemas/inboundPackingSlipItemRelation'
              description: >-
                Links to the `inboundPackingSlipItem` that was expecting this
                `inboundItem`.
    inboundIncludables:
      type: object
      title: inboundIncludables
      description: >-
        Represents the includable resources for the `inbound` resource which are
        one of more `inboundItems`.
      properties:
        included:
          type: array
          items:
            anyOf:
              - allOf:
                  - $ref: '#/components/schemas/inboundItemIdentification'
                  - $ref: '#/components/schemas/inboundItemAttributes'
                  - $ref: '#/components/schemas/inboundItemRelationships'
    inboundLinksSelf:
      type: object
      title: inboundLinksSelf
      properties:
        links:
          type: object
          properties:
            self:
              type: string
              format: uri
              readOnly: true
              examples:
                - https://shopapi.activeants.nl/v3/inbounds/37334
    inbound:
      title: inbound
      description: >
        In the context of Active Ants, an `inbound`, is a consignment of goods
        received by or in the process of being received by a warehouse.
      allOf:
        - $ref: '#/components/schemas/inboundIdentification'
        - $ref: '#/components/schemas/inboundAttributes'
        - $ref: '#/components/schemas/inboundRelationships'
        - $ref: '#/components/schemas/inboundIncludables'
        - $ref: '#/components/schemas/inboundLinksSelf'
    inboundItemLinksSelf:
      type: object
      title: inboundItemLinksSelf
      description: Represents a relationship to an `inbound` resource.
      properties:
        links:
          type: object
          properties:
            self:
              type: string
              format: uri
              readOnly: true
              examples:
                - https://shopapi.activeants.nl/v3/inboundItems/673333
    inboundItem:
      title: inboundItem
      allOf:
        - $ref: '#/components/schemas/inboundItemIdentification'
        - $ref: '#/components/schemas/inboundItemAttributes'
        - $ref: '#/components/schemas/inboundItemRelationships'
        - $ref: '#/components/schemas/inboundItemLinksSelf'
    inboundPackingSlipStatus:
      type: string
      enum:
        - EXPECTED
        - IN_PROGRESS
        - CHECKING
        - COMPLETED
      title: inboundPackingSlipStatus
      description: >
        The `inboundPackingSlipStatus` describes the life-cycle of packing slip.


        All locations have been classified to the one of the following types:

        | value       | description |

        | ----------- | ----------- |

        | `EXPECTED`    | This status indicates that the inbound shipment is not
        (yet) being processed. It is still possible to make amendments to the
        `inboundPackingSlip`. |

        | `IN_PROGRESS` | The items of the `inboundPackingSlip` are being
        processed. The `inbound` has not been completed yet therefor the
        quantities on the `inboundPackingSlip` are not final. |

        | `CHECKING`    | All the goods of the `inbound` have been registered,
        but before the packingslip is `COMPLETED` it is being checked. Checking
        occurs when differences between the `inboundPackingSlip` and the
        `inbound` have been identified. Products that are correctly received are
        released for ordering. |

        | `CHECKED` | The `ibound` related to this `inboundPackingSlip` has been
        checked meaning that all locations containing `sku` for which a
        different quantity was received than expected have been recounted. Since
        the moment of the last check there is a timewindow of 2 hours before the
        `inbound` is automatically `COMPLETED` making the `inboundPackinSlip`
        also `COMPLETED`. |

        | `COMPLETED`   | The `inbound` related to this `inboundPackingSlip` has
        been completed and deviations have been checked and verified. There are
        no validation steps to follow and all products that have been received
        have been released for picking. |
      readOnly: true
      examples:
        - EXPECTED
        - IN_PROGRESS
        - CHECKING
        - COMPLETED
    inboundPackingSlipAttributes:
      type: object
      title: inboundPackingSlipAttributes
      description: Representes the 'owned' attributes of the `inboundPackingSlip` resource.
      properties:
        attributes:
          type: object
          properties:
            expectedIn:
              $ref: '#/components/schemas/warehouseCode'
              description: >-
                Indicates the warehouse the products are expected in. This is a
                required field and must match the warehouse where the inbound
                will be processed as this warehouse is only able to see the
                packingSlips matching their warehouse.
            expectedOn:
              type: string
              description: >-
                Allows specifying the date at which the inbound shipment related
                to this packing slip is expected to arrive at the warehouse.
                This date helps with apactiy planning
              format: date
            receivedOn:
              type: string
              description: >-
                Indicates the moment the packing slip was coupled to an inbound
                shipment.
              format: date-time
              readOnly: true
            completedOn:
              type: string
              description: >-
                Indicates the moment the inbound shipment was completed and
                verified, signalling tha tthe packing slip is also marked as
                `COMPLETED`.
              format: date-time
              readOnly: true
            reference:
              type: string
              description: 'A unique reference for the `packingSlip`. '
            status:
              $ref: '#/components/schemas/inboundPackingSlipStatus'
            comments:
              type: string
              description: 'Allows for arbitrary comments to be added to the packing slip. '
            metadata:
              $ref: '#/components/schemas/metadata'
          required:
            - expectedIn
    inboundPackingSlipItemsRelation:
      type: object
      title: inboundPackingSlipItemsRelation
      description: >-
        Represents a relationship to multiple `inboundPackingSlipItem`
        resources.
      properties:
        data:
          type: array
          items:
            allOf:
              - $ref: '#/components/schemas/inboundPackingSlipItemIdentifier'
              - $ref: '#/components/schemas/inboundPackingSlipItemLinksSelf'
    inboundRelation:
      type: object
      title: inboundRelation
      description: Points to a related `inbound` resource
      properties:
        data:
          allOf:
            - $ref: '#/components/schemas/inboundIdentification'
            - $ref: '#/components/schemas/inboundLinksSelf'
    inboundPackingSlipRelationships:
      type: object
      title: inboundPackingSlipRelationships
      description: Defines the relationships of the `inboundPackingSlip` resource.
      properties:
        relationships:
          type: object
          properties:
            inboundPackingSlipItems:
              $ref: '#/components/schemas/inboundPackingSlipItemsRelation'
            inbound:
              $ref: '#/components/schemas/inboundRelation'
    inboundPackingSlipItemAttributes:
      type: object
      title: inboundPackingSlipItemAttributes
      description: >-
        Representes the 'owned' attributes of the `inboundPackingSlipItem`
        resource.
      properties:
        attributes:
          type: object
          properties:
            sku:
              $ref: '#/components/schemas/productSku'
            quantity:
              type: integer
              description: Indicates the 'expected' or 'declared' quantity of the `sku`.
              exclusiveMinimum: 0
              examples:
                - 55
            received:
              type: integer
              description: >-
                Indicates the quantity of the `sku` that was received. Note that
                this value can change as long as the packingSlip has a status
                other than `EXPECTED` or  `COMPLETED`
              minimum: 0
              readOnly: true
              examples:
                - 50
    inboundPackingSlipIncludables:
      type: object
      title: inboundPackingSlipIncludables
      description: >-
        Represents the includable resources for the `inboundPackingSlip`
        resource.
      properties:
        included:
          type: array
          items:
            anyOf:
              - allOf:
                  - $ref: '#/components/schemas/inboundPackingSlipItemIdentifier'
                  - $ref: '#/components/schemas/inboundPackingSlipItemAttributes'
    inboundPackingSlip:
      title: inboundPackingSlip
      description: >
        In the context of Active Ants, an `inboundPackingSlip`, which is also
        referred to as an advanced shipping notice or ASN, is a document that is
        included with an inbound shipment and provides important information
        about its contents. By merging the packing slip and ASN, it is possible
        to declare an inbound shipments and track its results.
      allOf:
        - $ref: '#/components/schemas/inboundPackingSlipIdentification'
        - $ref: '#/components/schemas/inboundPackingSlipAttributes'
        - $ref: '#/components/schemas/inboundPackingSlipRelationships'
        - $ref: '#/components/schemas/inboundPackingSlipIncludables'
        - $ref: '#/components/schemas/inboundPackingSlipLinksSelf'
    productBarcode:
      type: string
      title: productBarcode
      description: >-
        Barcode of a product used to identify products by scanning a 1D barcode
        or 2D QR-code on the product.
      pattern: ^[\x21-\x7E][\x20-\x7E]*[\x21-\x7E]$
      minLength: 2
      maxLength: 80
      examples:
        - TSH-000-S
        - '8720874770299'
        - HK-HNTSSTNG 6X
        - 'BK-14-LARGE: 31x41x14'
        - TRRE-PSU6*003;2023-10:special
    productStatus:
      type: string
      enum:
        - DISCONTINUED
        - AVAILABLE
        - END_OF_LIFE
      title: productStatus
      description: >-
        The `productStatus` indicates the availability of the `product`. The
        possible values are `AVAILABLE`, `DISCONTINUED` and `END_OF_LIFE`. See
        the table below for more details.


        | status         | description |

        | -------------- | ----------- |

        | `AVAILABLE`    | The product is available and active. It is actively
        being sold and new stock can be received |

        | `DISCONTINUED` | The product is still available, but new stock will no
        longer be expected. |

        | `END_OF_LIFE`   | The product is no longer active and will no longer
        show in the reports. | 
      examples:
        - AVAILABLE
    stockLevelType:
      type: string
      enum:
        - ECONOMIC
        - AVAILABLE
      title: stockLevelType
      description: Enumeration to indicate the type of `stock`.
    productType:
      type: string
      enum:
        - DEFAULT
        - COMPOSITE
        - PART
        - DEFAULT_IN_PACKAGING
        - BUNDLE
        - GREETING_CARD
        - SERVICE
      title: productType
      description: >+
        The `productType` indicates the type of the product .


        | status         | description |

        | -------------- | ----------- |

        | `DEFAULT`      | The product a regular product which can be sold and
        shipped. |

        | `DEFAULT_IN_PACKAGING` | Same as `DEFAULT`, but when ordered
        individually the product will be shipped without packaging. |

        | `COMPOSITE`    | Used for products that are composed out of other
        products of type `PART`. Composite products are stocked, picked and
        shipped as a single `SKU` and cannot be split into their consituent
        parts. This is important as consumers will notbe able to return these
        parts individually. Also note that composite products can also run out
        of stock eventhough the parts may still be in stock. This is because new
        stock of composite products is created through special work orders. |

        | `BUNDLE`       | The product is a bundled product which means that the
        product itself is not kept on stock, but when ordered, its parts are
        picked and shipped instead. When ordering a bundled product the system
        will automatically add the parts to the order as separate `orderItems`.
        Bundled products can be partially returned as each item is a separate
        product, they can also be split across shipments if packaging
        constraints prevent them from being shipped together. | 

        | `PART`         | The product is a part of one or more `COMPOSITE`
        products. | 

        | `GREETING_CARD` | A special type of product used to add a personalized
        greeing card to the order. This requires the greeting to be added to the
        `metadata` field on the `orderItem` with the name `extra6`. |

        | `SERVICE`       | A special type of product used in very specific
        situations. |

      readOnly: true
      default: DEFAULT
      examples:
        - BUNDLE
    hsCode:
      type: string
      title: hsCode
      description: >-
        The `hsCode` stands for Harmonized System code, which is a standardized
        numerical method of classifying traded products. It is used by customs
        authorities around the world to identify and track goods as they cross
        borders. The Harmonized System is maintained by the World Customs
        Organization (WCO) and is recognized as the global standard for product
        classification. It consists of a six-digit code that can be further
        detailed with additional digits. Standard `hsCodes` are six digits long,
        but more specific variants such as TARIC can use more. 
      pattern: \d{6,12}
      minLength: 6
      maxLength: 12
      examples:
        - 620342
        - 1806101500
    monetaryAmountEUR:
      type: object
      title: monetaryAmountEUR
      description: >-
        The `monetartAmountEUR` is a monetary amount whose currency can only be
        `EUR`.
      properties:
        currency:
          type: string
          description: The currency symbol for this amount must always be set to `EUR`.
          pattern: EUR
          default: EUR
        amount:
          type: number
          examples:
            - 9,55
      required:
        - currency
        - amount
    productAttributes-client-mutable:
      type: object
      title: productAttributesClientMutable
      description: >-
        Representes the 'owned' attributes of the `product` resource that are
        client mutable.
      properties:
        attributes:
          type: object
          properties:
            name:
              type: string
              description: >-
                Short name for the product used on packing slips if required.
                Note that this name is used mostly internally and when the
                `orderItem.name` is not provided.
              minLength: 1
              maxLength: 250
              examples:
                - Dog Shampoo 100ml
            description:
              type: string
              description: A more complete description of the product.
              maxLength: 10000
              examples:
                - >-
                  Experience the ultimate pampering for your furry friend with
                  our premium 100ml Dog Shampoo. Specially designed with your
                  canine companion in mind, this gentle and nourishing formula
                  will leave their coat looking and feeling fabulous. Every drop
                  of our shampoo is packed with the finest natural ingredients,
                  carefully selected to provide optimal cleansing without
                  causing any irritation or dryness.
            hasBarcode:
              type: boolean
              description: >-
                Specifies if the product has a `barCode` or not. When set to
                `true` a `barcode` will be scanned during the first inbound or
                when already known the barcode can be specified in the `barcode`
                field.
              default: false
            barcode:
              $ref: '#/components/schemas/productBarcode'
              description: >-
                The barcode of the product, when set will ensure that the
                `hasBarcode` is `true` as well.
            status:
              $ref: '#/components/schemas/productStatus'
            stockLevelType:
              $ref: '#/components/schemas/stockLevelType'
              description: >-
                Specifies which type of `stockLevel` is to be used for stock
                synchronization for this particular `product`.
            hasLotNumber:
              type: boolean
              description: >-
                Specifies if the product has a `lotNumber` or not. Defaults to
                false.
              default: false
            hasSerialNumber:
              type: boolean
              description: >-
                Specifies if the product has a `serialNumber` or not. Defaults
                to false.
              default: false
            hasExpirationDate:
              type: boolean
              description: >-
                Specifies if the product has an `expirationDate` or not.
                Defaults to false.
              default: false
            expirationDateMargin:
              type: integer
              description: >-
                The `expirationDateMargin` is the number of days used to
                determine whether particular `stock` can still be sold or if it
                has expired. Stock of a product is expired when the difference
                of the current date with and `expirationDate` of the stock is
                more than the `expirationDateMargin` speficied on the product.
                This field is optional when `expirationDate` is `NONE`.
            expirationDateWarning:
              type: integer
              description: >-
                The `expirationDateWarning` is the number of days used to
                determine is a  product nearing its expiration date. This field
                is optional when `expirationDate` is `NONE`.
            countryOfOrigin:
              $ref: '#/components/schemas/countryCode'
              description: >-
                A valid ISO:3166-1 alpha-2 country code denoting the country of
                origin for the product. This value is required for international
                shipments.
            hsCodes:
              type: array
              description: >-
                An array of `hsCodes` (or more specific equivalents thereof) for
                this product. To set a default/fallback `hsCode` for the product
                use country code `XX`. It is not mandatory to specify `hsCodes`,
                but when provigind the element the array should contain at least
                one entry.
              items:
                type: object
                properties:
                  country:
                    $ref: '#/components/schemas/countryCode'
                    description: >-
                      A valid ISO:3166-1 alpha-2 country code denoting the
                      country or region the `hsCode` is applicable for. Use `XX`
                      to denote the default/fallback `hsCode` for the product.
                  hsCode:
                    $ref: '#/components/schemas/hsCode'
                required:
                  - country
                  - hsCode
            purchasePrice:
              type: array
              description: >-
                Specifies the purchase price of the product. At the moment only
                a single price in EUR is supported. Any currency code provided
                will be ignored.
              maxItems: 1
              items:
                $ref: '#/components/schemas/monetaryAmountEUR'
            metadata:
              type: object
              allOf:
                - type: object
                  properties:
                    extra1:
                      type: string
                      maxLength: 250
                    extra2:
                      type: string
                      maxLength: 250
                    extra3:
                      type: string
                      maxLength: 250
                    extra4:
                      type: string
                      maxLength: 250
                    extra5:
                      type: string
                      maxLength: 250
          required:
            - name
    productAttributes:
      title: productAttributes
      description: Representes the 'owned' attributes of the `product` resource.
      allOf:
        - type: object
          properties:
            attributes:
              type: object
              required:
                - sku
              properties:
                sku:
                  $ref: '#/components/schemas/productSku'
                status:
                  $ref: '#/components/schemas/productStatus'
                stockLevelType:
                  $ref: '#/components/schemas/stockLevelType'
                  description: >-
                    Specifies which type of `stockLevel` is to be used for stock
                    synchronization for this particular `product`.
                type:
                  $ref: '#/components/schemas/productType'
                weight:
                  type: integer
                  description: >-
                    This field indicates the weight of the product, measured in
                    **grams**. It is important to note that the weight is
                    determined when the product is first processed in an inbound
                    shipment and can only be set or modified on request.
                  readOnly: true
                  examples:
                    - 154
                length:
                  type: integer
                  description: >-
                    The length of the product in **millimeters**, notice that
                    this value can not be specified. It will be measured once
                    the product is received for the first time.
                  readOnly: true
                  examples:
                    - 33
                width:
                  type: integer
                  description: >-
                    The width of the product in **millimeters**, notice that
                    this value can not be specified. It will be measured once
                    the product is received for the first time.
                  readOnly: true
                  examples:
                    - 65
                height:
                  type: integer
                  description: >-
                    The height of the product in **millimeters**, notice that
                    this value can not be specified. It will be measured once
                    the product is received for the first time.
                  readOnly: true
                  examples:
                    - 125
        - $ref: '#/components/schemas/productAttributes-client-mutable'
    stockLevelIdentifier:
      type: object
      title: stockLevelIdentifier
      description: Identifies a resource as a `stockLevel`.
      properties:
        id:
          type: integer
        type:
          const: stockLevel
          default: stockLevel
    stockLevelLinksSelf:
      type: object
      title: stockLevelLinksSelf
      description: Represents a self-link of a `stock` resource.
      properties:
        links:
          type: object
          properties:
            self:
              type: string
              format: uri
              examples:
                - https://shopapi.activeants.nl/v3/stockLevels/
    stockLevelRelation:
      type: object
      title: stockLevelRelation
      description: Represents a relationship to a `stockLevel` resource.
      properties:
        data:
          allOf:
            - $ref: '#/components/schemas/stockLevelIdentifier'
            - $ref: '#/components/schemas/stockLevelLinksSelf'
    productRelationships:
      type: object
      title: productRelationships
      properties:
        relationships:
          type: object
          properties:
            stockLevels:
              $ref: '#/components/schemas/stockLevelRelation'
              description: Convenience relationship to the `stockLevel` of the `product`.
            parts:
              type: object
              description: >-
                Provided when the `product` is of type `BUNDLE` or `COMPOSITE`.
                The array contains references to the constituent `products` and
                the quantity they appear in in this bundle.
              properties:
                data:
                  type: array
                  items:
                    allOf:
                      - $ref: '#/components/schemas/productIdentifier'
                      - type: object
                        properties:
                          quantity:
                            type: integer
                            exclusiveMinimum: 0
                      - $ref: '#/components/schemas/productLinksSelf'
    product:
      title: products
      x-tags:
        - v3/schema
      allOf:
        - $ref: '#/components/schemas/productIdentifier'
        - $ref: '#/components/schemas/productAttributes'
        - $ref: '#/components/schemas/productRelationships'
        - $ref: '#/components/schemas/productLinksSelf'
    returnItemIdentifier:
      type: object
      title: returnItemIdentifier
      description: Identifies a resource as a `returnItem`.
      properties:
        id:
          type: integer
          readOnly: true
          examples:
            - 5432554
        type:
          const: returnItem
          readOnly: true
    returnItemCondition:
      type: string
      enum:
        - RETURN
        - DAMAGED
      title: returnItemCondition
      description: >-
        Defines the condition the `returnItem` arrived in at the warehouse. The
        following values are supported:


        | value     | description |

        | --------- | ----------- |

        | `RETURN`  | The item was returned and will be added to the pickable
        stock as soon as possible |

        | `DAMAGED` | The item was returned and damaged, meaning that the item
        cannot be added to the pickable stock |

        | `UNKNOWN` | The condition could not be provided or is irrellevant. |
      readOnly: true
      examples:
        - RETURN
    returnItemAttributes:
      type: object
      title: returnItemAttributes
      description: Represents the attributes of the `returnItem` resource.
      properties:
        attributes:
          type: object
          properties:
            sku:
              $ref: '#/components/schemas/productSku'
            quantity:
              type: integer
              readOnly: true
            condition:
              $ref: '#/components/schemas/returnItemCondition'
            processedOn:
              type: string
              description: >-
                Specifies the date the `returnItem` was processed and registered
                in the warehouse. Note that the item might have been delivered
                to that warehouse prior to this date.
              format: date-time
              readOnly: true
              examples:
                - '2023-01-17'
            processedIn:
              $ref: '#/components/schemas/warehouseCode'
              description: >-
                Specifies the [`warehouseCode`](../warehouse/warehouseCode.yaml)
                where the `returnItem` has been processed.
            restockIn:
              $ref: '#/components/schemas/warehouseCode'
              description: >-
                Specifies the [`warehouseCode`](../warehouse/warehouseCode.yaml)
                where the `returnItem` will be restocked in. For damaged and
                scrapped returns this will be the warehouse were the item will
                remain until collected.
            restockOn:
              type: string
              description: Specifies the date the `returnItem` was put back on stock.
              format: date-time
              examples:
                - '2023-06-27T10:03:07.463'
            comment:
              type: string
              readOnly: true
            redeliver:
              type: boolean
              readOnly: true
            externalOrderNumber:
              $ref: '#/components/schemas/externalOrderNumber'
    returnIdentifier:
      type: object
      title: returnIdentifier
      description: Identifies a resource as a `return`.
      properties:
        id:
          type: integer
          readOnly: true
          examples:
            - 54346
        type:
          const: return
          readOnly: true
          default: return
    returnLinksSelf:
      type: object
      title: returnLinksSelf
      description: Represents a self-link of a `return` resource.
      properties:
        links:
          type: object
          properties:
            self:
              type: string
              format: uri
              readOnly: true
              examples:
                - https://shopapi.activeants.nl/v3/returns/54346
    returnRelation:
      type: object
      title: returnRelation
      description: Represents a relationship to a `return` resource.
      properties:
        data:
          allOf:
            - $ref: '#/components/schemas/returnIdentifier'
            - $ref: '#/components/schemas/returnLinksSelf'
    returnAuthorizationItemIdentifier:
      type: object
      title: returnAuthorizationIdentifier
      description: Identifies a resource as a `returnAuthorizationItem`.
      properties:
        id:
          type: integer
          readOnly: true
          examples:
            - 65014
        type:
          const: returnAuthorizationItem
          readOnly: true
          default: returnAuthorizationItem
    returnAuthorizationItemLinksSelf:
      type: object
      title: returnAuthorizationItemLinksSelf
      description: Represents a self-link of a `returnAuthorizationItem` resource.
      properties:
        links:
          type: object
          properties:
            self:
              type: string
              format: uri
              readOnly: true
              examples:
                - >-
                  https://shopapi.activeants.nl/v3/returnAuthorizationItems/13501
    returnAuthorizationItemRelation:
      type: object
      title: returnAuthorizationItemRelation
      description: Represents a relationship to a `returnAuthorizationItem` resource.
      properties:
        data:
          allOf:
            - $ref: '#/components/schemas/returnAuthorizationItemIdentifier'
            - $ref: '#/components/schemas/returnAuthorizationItemLinksSelf'
    returnReasonIdentifier:
      type: object
      title: returnReasonIdentifier
      description: Identifies a resource as a `returnReason`.
      properties:
        id:
          type: integer
          readOnly: true
          examples:
            - 16
        type:
          const: returnReason
          readOnly: true
          default: returnReason
    returnReasonLinksSelf:
      type: object
      title: returnReasonLinksSelf
      description: Represents a self-link of a `returnReason` resource.
      properties:
        links:
          type: object
          properties:
            self:
              type: string
              format: uri
              examples:
                - https://shopapi.activeants.nl/v3/returnReasons/16
    returnReasonRelation:
      type: object
      title: returnReasonRelation
      description: Represents a relationship to a `returnReason` resource.
      properties:
        data:
          allOf:
            - $ref: '#/components/schemas/returnReasonIdentifier'
            - $ref: '#/components/schemas/returnReasonLinksSelf'
    shipmentItemRelation:
      type: object
      title: shipmentItemRelation
      description: Represents a relationship to a `shipmentItem` resource.
      properties:
        data:
          allOf:
            - $ref: '#/components/schemas/shipmentItemIdentifier'
            - $ref: '#/components/schemas/shipmentItemLinksSelf'
    returnItemRelationships:
      type: object
      title: returnItemRelationships
      description: Defines the relationships of the `returnItem` resource.
      properties:
        relationships:
          type: object
          properties:
            order:
              $ref: '#/components/schemas/orderRelation'
            orderItem:
              $ref: '#/components/schemas/orderItemRelation'
            product:
              $ref: '#/components/schemas/productRelation'
            return:
              $ref: '#/components/schemas/returnRelation'
              description: >-
                Link to the 'parent' `return` resource which provides insights
                into the other `returnItems` that were processed together.
            returnAuthorizationItem:
              $ref: '#/components/schemas/returnAuthorizationItemRelation'
              description: >-
                (optionally) refers to a `returnAuthorizationItem` that was
                linked to this `returnItem` during the processing of the
                `return`.
            returnReason:
              $ref: '#/components/schemas/returnReasonRelation'
              description: Indicates the reason for the return
            shipmentItem:
              $ref: '#/components/schemas/shipmentItemRelation'
              description: >-
                Links to the `shipmentItem` that initially shipped out the
                returned item(s).
    returnItemLinksSelf:
      type: object
      title: returnItemLinksSelf
      description: Represents a self-link of a `returnItem` resource.
      properties:
        links:
          type: object
          properties:
            self:
              type: string
              format: uri
              examples:
                - https://shopapi.activeants.nl/v3/returnItems/5432554
    returnItem:
      title: returnItem
      description: >-
        The `returnItem` resource represents a quantity of a `product` (SKU)
        that has been returned at one of the warehouses of Active ants.
      allOf:
        - $ref: '#/components/schemas/returnItemIdentifier'
        - $ref: '#/components/schemas/returnItemAttributes'
        - $ref: '#/components/schemas/returnItemRelationships'
        - $ref: '#/components/schemas/returnItemLinksSelf'
    stockLocationType:
      type: string
      enum:
        - PALLET
        - SPECIAL
        - PICKABLE
        - COOLED
        - INBOUND
        - OUTBOUND
        - RETURN
        - TRANSFER
        - SECURED
        - AUTOSTORE
        - DAMAGED
        - TO_SCRAP
        - INSERTS
      title: locationType
      description: >-
        The `locationType` indicates the (general) usage of the location of
        physical stock.


        All locations have been classified to the one of the following types:

        | value     | description |

        | --------- | ----------- |

        | AUTOSTORE | An autostore location, which is a special type of PICKABLE
        location |

        | PICKABLE  | A location from which stock can be picked, but different
        than AUTOSTORE |

        | PALLET    | A storage location, not directly used for picking |

        | INBOUND   | A temporary location used for new SKUs |

        | RETURN    | A temporary location for returned SKUs |

        | TRANSFER  | A temporary location used to transfer stock in or between
        warehouses |

        | SECURED   | Special secured storage |

        | COOLED    | Special cooled storage  |

        | OUTBOUND  | Location used in case of outbounds other than regular
        shipments |

        | SPECIAL   | Special purpose locations |

        | INSERTS   | Special purpose location for inserts (e.g. flyers) |

        | DAMAGED   | Special purpose location for damaged goods that need to be
        shipped to a refurbishment party |

        | TO_SCRAP  | Special purpose location for scrapped goods that remain in
        the warehouse until a destruction order is received. |
      readOnly: true
    stockIdentifier:
      type: object
      title: stockIdentifier
      description: Identifies a resource as `stock`.
      properties:
        id:
          type: integer
          readOnly: true
          examples:
            - 654322
        type:
          type: string
          readOnly: true
          examples:
            - stock
    stockLocationCode:
      type: string
      title: stockLocationCode
      description: >-
        The `stockLocationCode` defines a location uniquely within a
        `warehouse`. This means that the code may appear in other warehouses as
        well with the exception of the locations of type `TRANSFER` which
        operate between warehouses.
      readOnly: true
      examples:
        - ZAB06E
        - ZAQ29A
        - 26160-22
        - ZAC21A0
        - 64755-11
        - 36547-42
        - 19251-44
        - 33769-42
        - 25298-11
        - 16490-11
    stockQuality:
      type: string
      enum:
        - OK
        - DAMAGED
        - TO_SCRAP
        - OVERDUE
        - EXPIRED
      title: stockQuality
      description: >-
        An enumerated value indicating the `quality` of `stock`. 


        The following qualities exists:

        quality    | description |

        -----------|-------------|

        `OK`       | The `SKU` of this `stock` is not damaged in any form and
        could be sold. |

        `DAMAGED`  | The `SKU` of this `stock` is damaged and requires
        refurbishment. Typical occurs when returned items are stained or
        otherwise damaged. |

        `TO_SCRAP` | The `SKU` of this `stock` is damaged beyond repair and can
        no longer be sold. |

        `OVERDUE`  | The `SKU` of this `stock` is past its sell-by date and may
        no longer be sold. |

        `EXPIRED`  | The `SKU` of this `stock` is expired and can no longer be
        sold. |
      readOnly: true
      default: OK
      examples:
        - DAMAGED
    stockStatus:
      type: string
      enum:
        - OK
        - NOL_CHECK
        - INBOUND
        - INBOUND_RECOUNT
        - RECOUNT_REQUEST
        - BARCODE_NOT_SCANNABLE
      title: stockStatus
      description: >
        An enumerated value indicating the `status` of `stock`. 


        The following qualities exists:

        status                  | description |

        ------------------------|-------------|

        `OK`                    | The `stock` is ok and can be sold/moved or
        used.

        `NOL_CHECK`             | A deviation in `quantity` has been detected
        and the `stock` must be recounted before it can be used.

        `INBOUND`               | The `stock` is involved in an `inbound` which
        is not complete yet.

        `INBOUND_RECOUNT`       | The `stock` is involved in an `inbound` and a
        difference between the `inboundPackingSlip` and the `inbound` causes the
        `stock` to be recounted.

        `RECOUNT_REQUESTED`     | The `stock` is to be recounted on request.

        `BARCODE_NOT_SCANNABLE` | The `stock` could not be picked due to barcode
        issues and must be investigated.
      readOnly: true
      default: OK
      examples:
        - INBOUND
    expirationStatus:
      type: string
      enum:
        - OK
        - WARNING
        - OVERDUE
        - EXPIRED
      title: expirationStatus
      description: >-
        The `expirationStatus` shows if the `expirationDate` of the `stock` is
        within certain limits or has expired.

        The following statuses exists:

        status                  | description |

        ------------------------|-------------|

        `OK`                    | The `stock` is well before the sell-by date or
        does not expire.

        `WARNING`               | The `stock` is within the margin before it
        reaches the sell-by date, but has not crossed the sell-by date. The
        margin for this warning is set by the field `expirationDateWarning` on
        the `product`.

        `OVERDUE`               | The `stock` has technically not expired, but
        can no longer be sold to consumers. It is now excluded from being
        shipped. The margin for this date is set by the field
        `expirationDateMargin` on the `product`.

        `EXPIRED`               | The `stock` has actually expired, i.e. the
        `expirationDate` of this stock lies in the past.
      default: OK
      examples:
        - OVERDUE
    stockAttributes:
      type: object
      title: stockAttributes
      description: Represents the attributes of the `stock` resource.
      properties:
        attributes:
          type: object
          properties:
            sku:
              $ref: '#/components/schemas/productSku'
            quantity:
              type: integer
              exclusiveMinimum: 0
              readOnly: true
            locationType:
              $ref: '#/components/schemas/stockLocationType'
            locationCode:
              $ref: '#/components/schemas/stockLocationCode'
            quality:
              $ref: '#/components/schemas/stockQuality'
            status:
              $ref: '#/components/schemas/stockStatus'
            expirationDate:
              type: string
              description: >-
                When the products at this locatoin have the same expiration date
                then this is reflected by this field. As a rule, products with
                different expiration dates cannot be kept in the same location.
              format: date
              readOnly: true
            expirationStatus:
              $ref: '#/components/schemas/expirationStatus'
            lotNumber:
              $ref: '#/components/schemas/lotNumber'
              description: >-
                Specifies the lot number of the SKU at this location. This value
                is only provided if all items at this location share the same
                lot number. It is not possible to keep sku having different lot
                numbers at the same location.
            quarantined:
              type: boolean
              description: >-
                Indicates that this particular `stock` is in quarantine. Stock
                that i placed in quarantine is excluded from many regular
                processes to prevent it from being shipped.
              readOnly: true
              default: false
            modifiedOn:
              type: string
              format: date-time
              readOnly: true
            receivedOn:
              type: string
              description: Specifies when the items in this stock were first received.
              format: date
              readOnly: true
              examples:
                - '2022-02-14'
    stockLocationIdentifier:
      type: object
      title: stockLocationIdentifier
      description: Identifies a resource as `stockLocation`.
      properties:
        id:
          type: integer
          readOnly: true
          examples:
            - 1008713
        type:
          const: stockLocation
          readOnly: true
          default: stockLocation
    stockLocationRelation:
      type: object
      title: stockLocationRelation
      description: Represents a relationship to a `stockLocation` resource.
      properties:
        data:
          allOf:
            - $ref: '#/components/schemas/stockLocationIdentifier'
            - type: object
    inboundItemRelation:
      type: object
      title: inboundItemRelation
      description: Represents a relationship to an `inboundItem` resource.
      properties:
        data:
          allOf:
            - $ref: '#/components/schemas/inboundItemIdentification'
            - $ref: '#/components/schemas/inboundItemLinksSelf'
    stockRelationships:
      type: object
      title: stockRelationships
      description: >-
        Represents the relationships a `stock` resource can have to other
        resources.
      properties:
        relationships:
          type: object
          properties:
            stockLocation:
              $ref: '#/components/schemas/stockLocationRelation'
            product:
              $ref: '#/components/schemas/productRelation'
            inboundItem:
              $ref: '#/components/schemas/inboundItemRelation'
              description: >-
                Points to the last `inboundItem` resource that increased the
                quantity of this stock.
    stockLocationAttributes:
      type: object
      title: stockLocationAttributes
      description: Representes the attributes of the `stockLocation` resource.
      properties:
        attributes:
          type: object
          properties:
            warehouseCode:
              $ref: '#/components/schemas/warehouseCode'
            locationType:
              $ref: '#/components/schemas/stockLocationType'
            locationCode:
              $ref: '#/components/schemas/stockLocationCode'
    stockIncludables:
      type: object
      title: stockIncludables
      description: >-
        Represents includable entities for the `stock` resource. Note that not
        entities will not be included in their entirety. 
      properties:
        included:
          type: array
          items:
            anyOf:
              - allOf:
                  - $ref: '#/components/schemas/stockLocationIdentifier'
                  - $ref: '#/components/schemas/stockLocationAttributes'
    stockLinksSelf:
      type: object
      title: stockLinksSelf
      description: Represents a self-link of a `stock` resource.
      properties:
        links:
          type: object
          properties:
            self:
              type: string
              readOnly: true
              examples:
                - https://shopapi.activeants.nl/v3/stock/654322
    stock:
      title: stock
      x-tags:
        - v3/schemas
      description: >
        The `stock` resource represents a quantity of a `product` (SKU) at a
        `stockLocation`. The `stock` itself may carry some properties.
      allOf:
        - $ref: '#/components/schemas/stockIdentifier'
        - $ref: '#/components/schemas/stockAttributes'
        - $ref: '#/components/schemas/stockRelationships'
        - $ref: '#/components/schemas/stockIncludables'
        - $ref: '#/components/schemas/stockLinksSelf'
    stockLevelAttributes:
      type: object
      title: stockLevelAttributes
      description: Represents the attributes of the `stockLevel` resource.
      properties:
        attributes:
          type: object
          description: >-
            An array of stock levels of the indicated `sku` and `warehouse`
            combination.
          properties:
            sku:
              $ref: '#/components/schemas/productSku'
            levels:
              type: array
              items:
                type: object
                properties:
                  warehouse:
                    $ref: '#/components/schemas/warehouseCode'
                    description: >-
                      Provides the `warehouseCode` of the warehouse the stock is
                      located in.
                  stock:
                    type: integer
                    description: >-
                      Depending on the `product` specific setting, the value of
                      `stock` is assigned the value of `economic` or
                      `available`.
                  free:
                    type: integer
                  economic:
                    type: integer
                  available:
                    type: integer
                  physical:
                    type: integer
                    description: >-
                      Physical stock represents the total number of items of the
                      `sku` at any of the `locations` at Active Ants.
                  quarantined:
                    type: integer
                  unavailable:
                    type: integer
                  expected:
                    type: integer
                  damaged:
                    type: integer
                  toScrap:
                    type: integer
                  overdue:
                    type: integer
                  expired:
                    type: integer
                  outbound:
                    type: integer
    stockLevelRelationships:
      type: object
      title: stockLevelRelationships
      description: >-
        Represents the relationships a `stockLevel` resource can have to other
        resources.
      properties:
        relationships:
          type: object
          properties:
            product:
              $ref: '#/components/schemas/productRelation'
    stockLevel:
      title: stockLevel
      allOf:
        - $ref: '#/components/schemas/stockLevelIdentifier'
        - $ref: '#/components/schemas/stockLevelAttributes'
        - $ref: '#/components/schemas/stockLevelRelationships'
        - $ref: '#/components/schemas/stockLevelLinksSelf'
    stockmutationType:
      type: string
      enum:
        - INBOUND
        - MOVE
        - SHIPMENT
        - RETURN
        - CORRECTION
        - COMPOSITION
        - STATUS
        - QUALITY
        - EXPIRATION_DATE
        - REVEICE_DATE
        - LOT_NUMBER
      title: stockmutationType
      description: >
        The `stockmutationType` describes the type of mutation that occurred in
        a stock management system. 


        It can assume one following values:

        | type         | description |

        | ------------ | ----------- |

        | COMPOSITION  | This value indicates that two or more products have
        been combined to create a new product. |

        | CORRECTION   | This value indicates that a correction has been made to
        the inventory. This could happen, for example, when an error is
        discovered in the stock count. |

        | EXPIRATION_DATE | Indicates the mutation affected the `expirationDate`
        of the stock |

        | INBOUND      | This value indicates that a new stock has been added to
        the inventory. This could happen, for example, when a new product is
        received from a supplier. |

        | LOT_NUMBER   | Indicates the mutation affected the `lotNumber` of the
        stock |

        | MOVE         | This value indicates that items have moved from one
        location to another. |

        | RECEIVE_DATE | Indicates the mutation affected the received date of
        the stock |

        | RETURN       | This value indicates that a previously shipped product
        has been returned to the inventory. This could happen, for example, when
        a consumer returned a product. |

        | SHIPMENT     | This value indicates that an item has been assigned to
        a shipment. Note that the process plans each shipment ahead of time and
        that this stock mutation may reflect the plan prior to the actual pick.

        | QUALITY      | Indicates the mutation affected the `quality` of the
        stock |

        | QUARANTINE   | Indicates the mutation affected the `quarantine` flag
        of the stock |

        | STATUS       | Indicates the mutation affected the `status` of the
        stock |
      readOnly: true
      examples:
        - SHIPMENT
    stockmutationIdentifier:
      type: object
      title: stockmutationIdentifier
      description: Identifies a resource as a `stockmutation`.
      properties:
        id:
          type: integer
          description: Unique identifier of the stockmutation.
          readOnly: true
          examples:
            - 70870229
        type:
          const: stockmutation
          description: >-
            Resource Type which is a constant value `stockmutation` for
            stockmutations.
          readOnly: true
          examples:
            - stockmutation
    stockCorrectionCode:
      type: string
      enum:
        - DAMAGED
        - SCRAPPED
        - ADJUSTMENT
        - USED
        - RETURN
        - DIFF_QTY_IN_BOX
        - WRONG_SKU
        - WRONG_QUANTITY
        - LEFT_BEHIND
        - INTERCOMPANY
        - TO_REFURBISH
        - RECOUNT
        - OTHER
      title: stockCorrectionCode
      description: >-
        In case a `stockmutation` pertains to a correction the 
        `stockCorrectionCode` indicates the (general) reason for the correction
        of stock.


        | value           | description |

        | --------------- | ----------- |

        | RECOUNT         | The stock was corrected after it was recounted due
        to a recount request or a NOL |

        | DAMAGED         | The stock was damaged |

        | SCRAPPED        | The stock was scrapped |

        | ADJUSTMENT      | A stock adjustment for other reasons like
        misplacements or removal on request |

        | USED            | The stock is 'used'. This is typically used for
        flyers and inserts which are not picked like regular products |

        | OTHER           | Other reason for corrections, see comments |

        | RETURN          | Returned stock |

        | DIFF_QTY_IN_BOX | The bulk packaging contained a different quantity
        than expected |

        | WRONG_SKU       | The SKU was incorrectly entered |

        | WRONG_QUANTITY  | The quantity was incorrectly entered, can occur
        during an inbound | 

        | LEFT_BEHIND     | Items should have been shipped, but were left behind
        |

        | INTERCOMPANY    | Stock moves between warehouses and companies |

        | TO_REFURBISH    | Stock moved from warehouses to be shipped to
        refurbishment parties |
    stockmutationAttributes:
      type: object
      title: stockmutationAttributes
      description: Represents the attributes of the `stockmutation` resource.
      properties:
        attributes:
          type: object
          properties:
            type:
              $ref: '#/components/schemas/stockmutationType'
            createdOn:
              type: string
              description: The date-time of when the stock mutation was created in UTC
              format: date-time
              readOnly: true
              examples:
                - '2023-07-08T12:15:00'
            warehouseCode:
              $ref: '#/components/schemas/warehouseCode'
            locationType:
              $ref: '#/components/schemas/stockLocationType'
              description: >-
                Defines the type of the location, note that of all location
                types possible, not all are returned using this end-point
            locationCode:
              $ref: '#/components/schemas/stockLocationCode'
            sku:
              $ref: '#/components/schemas/productSku'
              description: The SKU of the product whose quantity was increased or decreased
            quantity:
              type: integer
              description: >-
                The number of items added (positive) or removed (negative) a
                location of type `locationType` to the stock.
              readOnly: true
            quality:
              $ref: '#/components/schemas/stockQuality'
            status:
              $ref: '#/components/schemas/stockStatus'
            expirationDate:
              type: string
              description: (only if applicable) If the product has an expiration date.
              format: date
              readOnly: true
              examples:
                - '2023-02-01'
            lotNumber:
              $ref: '#/components/schemas/lotNumber'
              description: >-
                If the stock of the product has a lot number that is known
                during 'stocktime,' then this attribute will reflect that lot
                number. Note that for some products the lot number will not be
                known during stock-time, but will be scanned at during order
                picking.
            correctionCode:
              $ref: '#/components/schemas/stockCorrectionCode'
            remarks:
              type: string
              description: >-
                An (optional) remark added to the stockmutation by the employee
                or the system.
    returnItemRelation:
      type: object
      title: returnItemRelation
      description: Represents a relationship to a `returnItem` resource.
      properties:
        data:
          allOf:
            - $ref: '#/components/schemas/returnItemIdentifier'
            - $ref: '#/components/schemas/returnItemLinksSelf'
    stockmutationRelationships:
      type: object
      title: stockmutationRelationships
      properties:
        relationships:
          type: object
          properties:
            product:
              $ref: '#/components/schemas/productRelation'
              description: >-
                Provides a link to the product which is the subject of this
                stockmutation. This relation is always available. Note that the
                attributes `SKU`, `expirationDate` and `lotNumber` are also
                provided as attributes of the stockmutation itself.
            returnItem:
              $ref: '#/components/schemas/returnItemRelation'
              description: >-
                When the attribute `type` has the value `RETURN` then this
                relation is available.
            inboundItem:
              $ref: '#/components/schemas/inboundItemRelation'
              description: >-
                When the attribute `type` has the value `INBOUND`  then this
                relation is available.
            shipmentItem:
              $ref: '#/components/schemas/shipmentItemRelation'
    stockmutationLinksSelf:
      type: object
      title: stockmutationLinksSelf
      description: Represents a self-link of a `stockmutation` resource.
      properties:
        links:
          type: object
          properties:
            self:
              type: string
              format: uri
              readOnly: true
              examples:
                - https://shopapi.activeants.nl/v3/stockmutations/70870229
    stockmutation:
      title: stockmutation
      description: >
        Stockmutations occur whenever physcial stock is added or removed from a
        location within one of the warehouses. The mutation could be for various
        reasons which is indicated by the `type` attribute. Depending on the
        value of the `type` attributes various relations may or may not be
        available.
      examples: []
      allOf:
        - $ref: '#/components/schemas/stockmutationIdentifier'
        - $ref: '#/components/schemas/stockmutationAttributes'
        - $ref: '#/components/schemas/stockmutationRelationships'
        - $ref: '#/components/schemas/stockmutationLinksSelf'
    webhookIdentifier:
      type: object
      title: webhookIdentifier
      description: Identifies a resource as a `webhook`.
      properties:
        id:
          type: integer
          description: Unique identifier for the `webhook`.
          readOnly: true
          examples:
            - 5667
        type:
          const: webhook
          default: webhook
    webhookEvent:
      type: string
      title: webhookEvent
      description: >-
        Enumerates the `events` for which `webhooks` can be registered. The
        format of the name is `{entity} '.' {action} '.' {version}`. The
        possible values for `event` are predetermined and listed here: 

        | event | description |

        | ----- | ------------| 

        | `shipment.created.3` | Triggered whenever a shipment has been created,
        stock is assigned, but no label has been requested yet.<br> The message
        model of the webhook will follow the `GET
        v3/shipments/{id}?include=shipmentItems` endpoint. |

        | `shipment.readyToPick.3` | Triggered whenever a shipment is ready to
        be picked and packed.<br> The message model of the webhook will follow
        the `GET v3/shipments/{id}?include=shipmentItems` endpoint. |

        | `shipment.readyToShip.3` | Triggered whenever a shipment has been
        picked and packed and is ready for pick-up by the carrier.<br> The
        message model of the webhook will follow the `GET
        v3/shipments/{id}?include=shipmentItems` endpoint. |

        | `shipment.shipped.3` | Triggered whenever a shipment has been handed
        over tot he carrier.<br>The message model of the webhook will follow the
        `GET v3/shipments/{id}?include=shipmentItems` endpoint. |

        | `inbound.processing` | Happens when an inbound is created. |

        | `inbound.checking` | Happens after the operator clicks 'complete
        entire inbound', happens once per inbound and regardless if there are
        differences with the packing slip. |

        | `inbound.checkingUpdate` | Happens every time an inbound changes state
        from 'DIFFERENCE_GOODS_RECEIVING' (aka 'INBOUND RECOUNT') to either 'OK'
        or 'INBOUND CHECKED'. |

        | `inbound.checked` | Happens when all locations of the inbound have
        been checked. Note: changes to the inbound are still possible! |

        | `inbound.processed` | Happens when the inbound is closed. No more
        changes are possible and this is the final state. |
    webhookAttributes:
      type: object
      title: webhookAttributes
      description: Representes the 'owned' attributes of the `webhook` resource.
      properties:
        attributes:
          type: object
          properties:
            event:
              $ref: '#/components/schemas/webhookEvent'
            isActive:
              type: boolean
              description: >-
                Indicates if the `webhook` is active (`true`) or inactive
                (`false`).
            targetUrl:
              type: string
              description: >-
                The `URL` that will be invoked whenever an event of the provided
                type occurs.
              format: uri
              examples:
                - https://example.com/webhooks/shipment/shipped
    webhookLinksSelf:
      type: object
      title: webhookLinksSelf
      description: Represents a self-link of a `webhook` resource.
      properties:
        links:
          type: object
          properties:
            self:
              type: string
              format: uri
              readOnly: true
              examples:
                - https://shopapi.activeants.nl/v3/webhooks/5667
    webhook:
      title: webhook
      description: >-
        Represents a single `webhook` instance registered in the system. Note
        that `webhooks` may be activated and deactivated at will, but could also
        be deactivated automatically in case of technical issues with the
        `targetUrl`
      allOf:
        - $ref: '#/components/schemas/webhookIdentifier'
        - $ref: '#/components/schemas/webhookAttributes'
        - $ref: '#/components/schemas/webhookLinksSelf'
  responses:
    401-unauthorized:
      description: >-
        ### 401 Unauthorized

        A `401 Unauthorized` response occurs when attempting to access a
        resource or perform an action that requires authentication, but no valid
        credentials have been provided. It indicates that the requester is
        unauthorized to access the requested resource.


        The following are common scenarios that may lead to a `401 Unauthorized`
        response:

        * Attempting to access a protected API endpoint without providing
        authentication credentials.

        * Providing an invalid or expired authentication token.

        * Providing valid authentication credentials, but lacking sufficient
        privileges to access the requested resource.

        * Providing authentication credentials that are valid for a different
        resource or API endpoint than the one being requested.
      content:
        application/vnd.api+json:
          schema:
            $ref: '#/components/schemas/error-response'
          examples:
            Generic Unauthorized:
              value:
                errors:
                  - code: '401'
                    title: Unauthorized
                    detail: Authorization has been denied for this request.
    404-not-found:
      description: >-
        ### 404 Not Found

        A `404 Not Found` response occurs when attempting to access a resource
        that cannot be found on the server. It indicates that the requested
        resource does not exist, either because it has been deleted, the URL is
        incorrect or because the endpoint has not been realized.


        The following are common scenarios that may lead to a `404 Not Found`
        response:

        * Attempting to access an endpoint with an invalid or non-existent URL.

        * Attempting to access an endpoint that has not (yet) been realized

        * Requesting a resource that has been deleted or moved.
      content:
        application/vnd.api+json:
          schema:
            $ref: '#/components/schemas/error-response'
          examples:
            Generic Not-Found:
              value:
                errors:
                  - code: '404'
                    title: Not Found
                    detail: The requested resource could not be found.
    406-not-acceptable:
      description: >-
        ### 406 Not Acceptable

        A `406 Not Acceptable` response occurs when the server cannot provide a
        response that matches the client's requested format or content language
        for the requested resource. For instance, if a client sends an Accept
        header of `text/html` to an API endpoint that only supports
        `application/vnd.api+json` responses, the server would respond with a
        `406 Not Acceptable` status code. This type of response is a required
        response for
        [JSON:API](https://jsonapi.org/format/#content-negotiation-servers)
        compatible endpoints.
      content:
        application/vnd.api+json:
          schema:
            $ref: '#/components/schemas/error-response'
          examples:
            Generic Not Acceptable:
              value:
                errors:
                  - code: '406'
                    title: Not Acceptable
                    detail: The requested format is not available for this resource.
    415-unsupported-media-type:
      description: >-
        ### 415 Unsupported Media Type

        A `415 Unsupported Media Type` response occurs when the server cannot
        process the request because the media type specified in the request is
        not supported for the requested resource. For example, if a client sends
        a request with a Content-Type header of `application/pdf` to an API
        endpoint that only supports `application/vnd.api+json` (the only valid
        media type for JSON:API), the server would respond with a `415
        Unsupported Media Type` status code. This type of error-response is a
        required for
        [JSON:API](https://jsonapi.org/format/#content-negotiation-servers)
        compatible endpoints.
      content:
        application/vnd.api+json:
          schema:
            $ref: '#/components/schemas/error-response'
          examples:
            Generic Unsupported Media Type:
              value:
                errors:
                  - code: '415'
                    title: Unsupported Media Type
                    detail: The media type of the requested data is not supported.
    409-conflict:
      description: >-
        ### 409 Conflict

        A `409 Conflict` response occurs when attempting to perform an action
        that conflicts with the current state of a resource on the server. It
        indicates that the requested action cannot be completed due to a
        conflict between the provided information and the current state of the
        resource.
      content:
        application/vnd.api+json:
          schema:
            $ref: '#/components/schemas/error-response'
          examples:
            Generic Conflict:
              value:
                errors:
                  - code: '409'
                    title: Conflict
                    detail: The request could not be completed.
    400-bad-request:
      description: >-
        ### 400 Bad Request

        A `400 Bad Request` response indicates that the server cannot or will
        not process the request due to something that is perceived to be a
        client error (for example, malformed request syntax, invalid request
        message framing, or deceptive request routing).


        The following are common scenarios that may lead to a `400 Bad Request`
        response:

        * Malformed syntax, for example when the request does not follow the
        expected syntax or structure.

        * Invalid parameters included or unsupported parameters in the request.

        * Missing or incomplete information that is required by the server to
        process the request successfully

        * Request size limitations when the message exceeds the size limits set
        by the server. 

        * URL encoding issues, usually for query parameters in the request that
        contain characters that are not properly encoded.

        * Server-side validation failures when the server determines that the
        request is invalid based on its business logic and business rules. In
        such cases, the server responds with a 400 error along with additional
        information explaining the validation failure.
      content:
        application/vnd.api+json:
          schema:
            $ref: '#/components/schemas/error-response'
          examples:
            Generic Bad Request:
              value:
                errors:
                  - code: '400'
                    title: Bad Request
                    detail: The username must be at least 3 characters long.
    429-too-many-requests:
      description: |
        ### 429 Too Many Requests

        The request could not be completed because of a rate limit violation.
      application/vnd.api+json:
        schema:
          $ref: ../jsonapi/error-response.yaml
        examples:
          Generic Too Many Requests:
            value:
              errors:
                - code: '429'
                  title: Too Many Requests
                  detail: >-
                    The request could not be completed because of a rate limit
                    violation.
  parameters:
    pagination-cursor:
      name: page[cursor]
      in: query
      required: false
      schema:
        type: integer
        minimum: 0
        default: 0
      description: >-
        optional parameter, excludes `?page[number]` indicating the value of the
        cursor. Values too low will be interpreted as if ommitted. The endpoint
        will use the cursor as the id of the entity that was last returned and
        will not include it in the response to the request.
    pagination-size:
      name: page[size]
      in: query
      required: false
      schema:
        type: integer
        maximum: 100
        default: 100
        exclusiveMinimum: 0
        minimum: 1
      description: >-
        optional parameter indicating the size of the page, i.e. the maximum
        number of entities in the response.
    for-orders:
      name: include
      in: query
      description: >-
        Comma-separated list of `order` related resources to include in the
        response under the `included` element
      required: false
      schema:
        type: array
        items:
          type: string
          enum:
            - orderItems
            - deliveryAddress
            - billingAddress
            - pickUpPoint
        uniqueItems: true
    orderedOn-after:
      name: filter[orderedOn][gt]
      in: query
      required: false
      schema:
        type: string
        format: date
      description: >-
        Filters the response to only return items that have a value for the
        attribute `orderedOn` after the specified date.
    orderedOn-before:
      name: filter[orderedOn][lt]
      in: query
      required: false
      schema:
        type: string
        format: date
      description: >-
        Filters the response to only return items that have a value for the
        attribute `orderedOn` before the specified date.
    externalOrderNumber-in:
      name: filter[externalOrderNumber][in]
      in: query
      required: false
      schema:
        type: array
        uniqueItems: true
        items:
          $ref: '#/components/schemas/externalOrderNumber'
        minItems: 1
      description: >-
        A comma separated list of `externalOrderNumbers` to filter the orders
        by. Note that each id must be URI encoded. For example
        `filter[externalOrderNumber]=ABC,DEF` will return `orders` having `ABC`
        or `DEF` as `externalOrderNumber`.  However
        `filter[externalOrderNumber]=ABC%2CDEF` will return `orders` having
        `ABC,DEF` as `externalOrderNumber`.
      examples:
        example1:
          value: ABC
        example2:
          value: ABC,DEF
        exameple3:
          value: DEF
    filter-reference-in:
      name: filter[reference][in]
      in: query
      required: false
      allowEmptyValue: false
      schema:
        type: array
        uniqueItems: true
        items:
          type: string
      description: >-
        A comma separated list of `reference` values to filter by, each of which
        must be URL encoded and separated by a comma.
    filter-shipmentStatus-in:
      name: filter[status][in]
      in: query
      required: false
      schema:
        type: array
        uniqueItems: true
        minItems: 1
        items:
          $ref: '#/components/schemas/shipmentStatus'
      description: >-
        A comma separated list of `shipmentStatus` values to filter by such as
        `COMPLETED`, `CHECKING`, etc.
      examples:
        READY_TO_PICK:
          summary: >-
            Filter by `shipments` that are awaiting physical processing in the
            warehouse.
          value: READY_TO_PICK
        READY_TO_SHIP,SHIPPED:
          summary: >-
            Filter by `shipments` that are either waiting to be shipped or have
            shipped.
          value: READY_TO_SHIP,SHIPPED
    filter-shippedOn-before:
      name: filter[shippedOn][lt]
      in: query
      required: false
      schema:
        type: string
        format: date
      description: >-
        Filters the response to only return items that have a value for the
        attribute `shippedOn` before the specified date.
    filter-shippedOn-after:
      name: filter[shippedOn][gt]
      in: query
      required: false
      schema:
        type: string
        format: date
      description: >-
        Filters the response to only return items that have a value for the
        attribute `shippedOn` after the specified date.
    filter-orderType-in:
      name: filter[orderType][in]
      in: query
      required: false
      allowEmptyValue: false
      schema:
        type: array
        uniqueItems: true
        items:
          type: integer
      description: A comma separated list of `orderType` values to filter by
    for-inbounds:
      name: include
      in: query
      required: false
      description: >-
        Comma-separated list of `inbound` related resources to include in the
        response under the `inbound` element. Possible values are
        `inboundItems`.
      schema:
        type: array
        uniqueItems: true
        items:
          type: string
          enum:
            - inboundItems
      examples:
        inboundItems:
          summary: Include `inboundItems`
          value: inboundItems
    inboundStatus-in:
      name: filter[status][in]
      in: query
      required: false
      schema:
        type: array
        uniqueItems: true
        minItems: 1
        items:
          $ref: '#/components/schemas/inboundStatus'
      description: >-
        A comma separated list of `inboundStatus` values to filter by such as
        `COMPLETED`, `CHECKING`, etc.
      examples:
        COMPLETED:
          summary: Filter by `inbounds` that have completed and have  `COMPLETED`
          value: COMPLETED
        PROCESING,CHECKING,CHECKED:
          summary: >-
            Filter by `inbounds` not yet complete with statuses `PROCESSING`,
            `CHECKING` or `CHECKED`
          value: PROCESING,CHECKING,CHECKED
    for-inboundPackingSlips:
      name: include
      in: query
      required: false
      description: >-
        Comma-separated list of `inboundPackingSlip` related resources to
        include in the response under the `included` element
      schema:
        type: array
        uniqueItems: true
        items:
          type: string
          enum:
            - inboundPackingSlipItems
      examples:
        inboundPackingSlipItems:
          summary: Include `inboundPackingSlipItems`
          value: inboundPackingSlipItems
    receivedOn-gt:
      name: filter[receivedOn][gt]
      in: query
      required: false
      schema:
        type: string
        format: date
      description: >-
        Filters the response to only return items that have a value for the
        attribute `receivedOn` after the specified date. Note that both
        `filter[receivedOn][after]` and `filter[receivedOn][gt]` constitute same
        filter.
      examples:
        '2024-05-01':
          summary: Received after `2024-05-01`
          description: >-
            Will return any records with a `receivedOn` value after
            `2024-05-01`. Be aware that results may also limited by the
            endpoint.
          value: '2024-05-01'
    receivedOn-lt:
      name: filter[receivedOn][lt]
      in: query
      required: false
      schema:
        type: string
        format: date
      description: >-
        Filters the response to only return items that have a value for the
        attribute `receivedOn` before the specified date. Note that both
        `filter[receivedOn][before]` and `filter[receivedOn][lt]` constitute
        same filter.
      examples:
        '2024-11-12':
          summary: Received before `2024-11-12`
          description: >-
            Will return any records with a `receivedOn` value before
            `2024-11-12`. Be aware that results may also limited by the
            endpoint.
          value: '2024-11-12'
    completedOn-gt:
      name: filter[completedOn][gt]
      in: query
      required: false
      schema:
        type: string
        format: date
      description: >-
        Filters the response to only return items that have a value for the
        attribute `completedOn` after the specified date. Note that
        `filter[completedOn][after]` and `filter[completedOn][gt]` are
        synonymous.
      examples:
        '2024-05-01':
          summary: Completed after `2024-05-01`
          description: >-
            Will return any records with a `completedOn` value after
            `2024-05-01`. Be aware that results may also limited by the
            endpoint.
          value: '2024-05-01'
    completedOn-lt:
      name: filter[completedOn][lt]
      in: query
      required: false
      schema:
        type: string
        format: date
      description: >-
        Filters the response to only return items that have a value for the
        attribute `completedOn` before the specified date. Note that both
        `filter[completedOn][before]` and `filter[completedOn][lt]` constitute
        same filter.
      examples:
        '2024-11-12':
          summary: Completed before `2024-11-12`
          description: >-
            Will return any records with a `completedOn` value before
            `2024-11-12`. Be aware that results may also limited by the
            endpoint.
          value: '2024-11-12'
    inboundPackingSlipStatus-in:
      name: filter[status][in]
      in: query
      required: false
      description: A comma separated list of `inboundPackingSlips` statuses.
      schema:
        type: array
        uniqueItems: true
        minItems: 1
        items:
          $ref: '#/components/schemas/inboundPackingSlipStatus'
      examples:
        COMPLETED:
          summary: Filter by `inboundPackingSlips` with status `COMPLETED`
          value: COMPLETED
        IN_PROGRESS,CHECKING,CHECKED:
          summary: >-
            Filter by `inboundPackingSlips` with statuses `IN_PROGRESS`,
            `CHECKING` or `CHECKED`
          value: IN_PROGRESS,CHECKING,CHECKED
    filter-sku-in:
      name: filter[sku][in]
      in: query
      required: false
      schema:
        type: array
        uniqueItems: true
        items:
          $ref: '#/components/schemas/productSku'
        minItems: 1
      description: A comma separated list of `productSku` values to filter by.
      examples:
        single:
          value: TSH-000-S
        multiple:
          value: 8720874770299,HK-HNTSSTNG 6X
        complex:
          value: TRRE-PSU6*003;2023-10:special,THE_ULTIMATE_SKU
    filter-barcode-in:
      name: filter[barcode][in]
      in: query
      required: false
      schema:
        type: array
        uniqueItems: true
        items:
          $ref: '#/components/schemas/productBarcode'
        minItems: 1
      description: A comma separated list of `productBarcode` values to filter by.
      examples:
        First:
          value: '7020813370299'
        Second:
          value: '8720874770299'
    filter-processedOn-after:
      name: filter[processedOn][gt]
      in: query
      required: false
      allowEmptyValue: false
      schema:
        type: string
        format: date
        example: '2023-01-01'
      description: >-
        Filters the response to only return items that have been processed after
        the specified date.
    filter-processedOn-before:
      name: filter[processedOn][lt]
      in: query
      required: false
      allowEmptyValue: false
      schema:
        type: string
        format: date
        example: '2023-01-01'
      description: >-
        Filters the response to only return items that have been processed
        before the specified date.
    filter-locationType-in:
      name: filter[locationType][in]
      in: query
      required: false
      schema:
        type: array
        uniqueItems: true
        items:
          $ref: '#/components/schemas/stockLocationType'
        minItems: 1
      description: >-
        A comma separated list of `locationType` values to filter by such as
        `AUTOSTORE`, `INBOUND`, etc.
      examples:
        Example 1:
          value:
            - AUTOSTORE
        Example 2:
          value:
            - INBOUND
        Example 3:
          value:
            - AUTOSTORE
            - TRANSFER
    filter-modifiedOn-after:
      name: filter[modifiedOn][gt]
      in: query
      required: false
      allowEmptyValue: false
      schema:
        type: string
        format: date
        example: '2023-01-01'
      description: >-
        Filters the response to only return items that have been modified after
        the specified date.
    filter-modifiedOn-before:
      name: filter[modifiedOn][lt]
      in: query
      required: false
      schema:
        type: string
        format: date
        example: '2022-01-01'
      description: >-
        Filters the response to only return items that have been modified before
        the specified date.
    filter-expirationStatus-in:
      name: filter[expirationStatus][in]
      in: query
      schema:
        type: array
      description: >-
        A comma separated list of `expirationStatus` values to filter by such as
        `OK`, `EXPIRED`, etc.
    for-stock:
      name: include
      in: query
      description: >-
        Comma-separated list of `stock` related resources to include in the
        response under the `included` element
      required: false
      schema:
        type: array
        items:
          type: string
          enum:
            - stockLocation
        uniqueItems: true
    filter-mutatedOn-on-or-after:
      name: filter[mutatedOn][gte]
      in: query
      required: false
      schema:
        type: string
        format: date-time
        example: '2023-07-12T17:10:20.000321'
      description: >-
        Filters the response to only return items that have mutated on or after
        the specified timestamp.
    pagination-number:
      name: page[number]
      in: query
      schema:
        type: integer
        default: 1
        exclusiveMinimum: 0
        minimum: 1
      description: >-
        optional parameter, excludes `?page[number]` indicating the value of the
        cursor. Values too low will be interpreted as if omitted. The endpoint
        will use the cursor as the id of the entity that was last returned and
        will not include it in the response to the request.
    filter-synched:
      name: filter[synced]
      in: query
      required: false
      schema:
        type: boolean
        example: false
      description: >-
        Legacy filter to only retreive unsynchronized records of an entity. Set
        to 'false' to fetch all items that have not been synchronized yet. To
        mark items synchronized, make use of a corresponding POST operation.
        This filter will become obsolete when webhooks are realized for the
        respective resource(s).  The query parameter looks like
        `filter[synced]=false` when used.
      deprecated: true
    filter-createdOn-before:
      name: filter[createdOn][lt]
      in: query
      required: false
      schema:
        type: string
        format: date
        example: '2022-01-01'
      description: >-
        Filters the response to only return items that have been created before
        the specified date.
    filter-createdOn-after:
      name: filter[createdOn][gt]
      in: query
      required: false
      allowEmptyValue: false
      schema:
        type: string
        format: date
        example: '2023-01-01'
      description: >-
        Filters the response to only return items that have been created after
        the specified date.
    filter-stockmutation-type:
      name: filter[type][in]
      in: query
      allowEmptyValue: false
      description: >-
        allows the specification of one or more stockmutation types to be
        returned
      schema:
        type: array
        items:
          $ref: '#/components/schemas/stockmutationType'
security:
  - Bearer Token: []
