Topi order API

Provides operations to handle orders for end-customers. ## Webhooks We will ping the URL provided whenever an order has changed its status to: `"created"`, `"completed"`, or `"canceled"`. **Payload**: - Available fields: - `id`: `string` - `assets`: `array` of `Asset` - `metadata`: `object` - `offer_id`: `string` - `seller_offer_reference`: `string` - `status`: `string enum` - `shipping_address`: `ShippingAddress` `ShippingAddress` contains this fields: - `name`: `string` - `line1`: `string` - `line2`: `string` - `postal_code`: `string` - `city`: `string` - `region`: `string` - `country_code`: `string`

OpenAPI Specification

topi-order-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: topi Seller catalog order API
  description: '# Localization


    Strings returned can be localized when the _Accept-Language_ header is provided in the request. It should follow the [RFC-2616 convention](http://www.ietf.org/rfc/rfc2616.txt).

    '
  version: 1.0.0
servers:
- url: https://seller-api-sandbox.topi-sandbox.eu
- url: https://seller-api.topi.eu
- url: https://seller-api.topi-staging.eu
- url: https://seller-api-sandbox.topi-sandbox-staging.eu
tags:
- name: order
  description: "Provides operations to handle orders for end-customers.\n\n## Webhooks\n\nWe will ping the URL provided whenever an order has changed its status to: `\"created\"`, `\"completed\"`, or `\"canceled\"`.\n\n**Payload**:\n\n- Available fields:\n    - `id`: `string`\n    - `assets`: `array` of `Asset`\n    - `metadata`: `object`\n    - `offer_id`: `string`\n    - `seller_offer_reference`: `string`\n    - `status`: `string enum`\n    - `shipping_address`: `ShippingAddress` \n    \n    `ShippingAddress` contains this fields:\n    - `name`: `string`\n    - `line1`: `string`\n    - `line2`: `string`\n    - `postal_code`: `string`\n    - `city`: `string`\n    - `region`: `string`\n    - `country_code`: `string`\n"
paths:
  /v1/orders:
    get:
      tags:
      - order
      summary: List all orders (deprecated)
      description: 'Returns a list of created orders, filterable by `query` or `created_by`. (deprecated)


        This method is deprecated. Please use [List all orders with pagination](#/order/getBySellerPaginated) instead.'
      operationId: order#getBySeller
      parameters:
      - name: query
        in: query
        description: Search query. It can be a string or a number or both
        allowEmptyValue: true
        schema:
          type: string
          description: Search query. It can be a string or a number or both
          example: status
        examples:
          default:
            summary: default
            value: status
      - name: created_by
        in: query
        description: a comma-separated list of sales agents emails
        allowEmptyValue: true
        schema:
          type: string
          description: a comma-separated list of sales agents emails
          example: sales-agent@example.com,anothergreatone@example.com
        example: sales-agent@example.com,anothergreatone@example.com
      - name: partners_only
        in: query
        description: a boolean indicating whether to retrieve orders from partner sellers only
        allowEmptyValue: true
        schema:
          type: boolean
          description: a boolean indicating whether to retrieve orders from partner sellers only
          example: false
        example: false
      responses:
        '200':
          description: OK response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrdersSummary'
              example:
                orders:
                - agent_name: abc123
                  company_name: abc123
                  created_at: '1970-01-01T00:00:01Z'
                  full_name: abc123
                  id: 739b63c2-9e58-4964-b38d-4ebb424de242
                  offer_id: 739b63c2-9e58-4964-b38d-4ebb424de242
                  seller_offer_reference: abc123
                  status: confirmed
        '400':
          description: 'BadRequest: Bad Request response.'
          content:
            application/vnd.goa.error:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: 'Unauthorized: Unauthorized response.'
          content:
            application/json:
              schema:
                type: string
                example: abc123
              example: abc123
        '403':
          description: 'InvalidScopes: Forbidden response.'
          content:
            application/json:
              schema:
                type: string
                example: abc123
              example: abc123
      deprecated: true
      security:
      - OAuth2Seller_header_Authorization:
        - seller-order:read
      x-code-samples:
      - lang: curl
        label: cURL
        source: "curl -X GET https://seller-api.topi.eu/v1/orders \\\n  -H \"Authorization: Bearer $ACCESS_TOKEN\"\n"
      - lang: javascript
        label: JavaScript (fetch)
        source: "const response = await fetch('https://seller-api.topi.eu/v1/orders', {\n  method: 'GET',\n  headers: {\n    'Authorization': `Bearer ${ACCESS_TOKEN}`\n  }\n});\n\nconst data = await response.json();\nconsole.log(data);\n"
  /v1/orders/{id}:
    get:
      tags:
      - order
      summary: Retrieve an order
      description: 'Returns a single order.


        ### When using in the Sandbox


        Use the following ID''s to get different fixtures. Remember that the URL must

        be encoded:


        - Status `"created"`: `"52c1e8ec-a592-48a9-b574-ab88b0937b38"`

        - Status `"confirmed"`: `"aac1e833-3391-134a-c567-acd8b0937ad3"`

        - Status `"partially_fulfilled"`: `"b3a64e36-6fa2-40a6-9402-e949c47feb87"`

        - Status `"completed"`: `"aa6a50f4-c2d4-4961-9689-ebd0f0f92a9e"`

        - Status `"canceled"`: `"17c45c3d-cd61-4e2f-a562-ff8f349067de"`


        Any other ID will return an HTTP 404 error.

        '
      operationId: order#show
      parameters:
      - name: id
        in: path
        description: topi order ID
        required: true
        schema:
          type: string
          description: topi order ID
          example: 739b63c2-9e58-4964-b38d-4ebb424de242
          format: regexp
          pattern: ^[0-9A-Za-z\-]+$
        example: 739b63c2-9e58-4964-b38d-4ebb424de242
      responses:
        '200':
          description: OK response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FullOrderResult'
              example:
                assets:
                - id: 739b63c2-9e58-4964-b38d-4ebb424de242
                  product_id: 739b63c2-9e58-4964-b38d-4ebb424de242
                  seller_product_references:
                  - reference: 123ab-5343
                    source: sap
                  serial_number: BA-3456786-334-9
                  status: shipped
                  title: Pro Laptop 64GB
                  tracking_url: abc123
                canceled_at: '1970-01-01T00:00:01Z'
                created_at: '1970-01-01T00:00:01Z'
                customer_info:
                  company:
                    billing_address:
                      city: Munich
                      country_code: DE
                      line1: 10 Downing Street
                      line2: Flat 42
                      postal_code: '10243'
                      region: Bavaria
                    name: Unicorn Corp
                    tax_number: '123456789'
                    vat_number: DE123456789
                  customer_group: education
                  email: alice@example.com
                  full_name: John Butler
                  phone_number: abc123
                id: 739b63c2-9e58-4964-b38d-4ebb424de242
                metadata:
                  tracking_number: '123456'
                offer_created_at: '1970-01-01T00:00:01Z'
                offer_id: 739b63c2-9e58-4964-b38d-4ebb424de242
                order_lines:
                - base_rental_price:
                    currency: EUR
                    gross: 119000
                    net: 100000
                  contract_type: rent
                  duration: 6
                  monthly_price:
                    currency: EUR
                    gross: 119000
                    net: 100000
                  pretty_id: abc123
                  product_id: 739b63c2-9e58-4964-b38d-4ebb424de242
                  quantity: 1
                  selected_first_party_services:
                  - additional_values:
                      accessory_type: experiment_charger
                    id: 739b63c2-9e58-4964-b38d-4ebb424de242
                    monthly_price:
                      currency: EUR
                      gross: 119000
                      net: 100000
                    type: topi_replace
                  seller_product_references:
                  - reference: 123ab-5343
                    source: sap
                  sublines:
                  - base_rental_price:
                      currency: EUR
                      gross: 119000
                      net: 100000
                    contract_type: rent
                    duration: 6
                    monthly_price:
                      currency: EUR
                      gross: 119000
                      net: 100000
                    pretty_id: abc123
                    product_id: 739b63c2-9e58-4964-b38d-4ebb424de242
                    quantity: 1
                    selected_first_party_services:
                    - additional_values:
                        accessory_type: experiment_charger
                      id: 739b63c2-9e58-4964-b38d-4ebb424de242
                      monthly_price:
                        currency: EUR
                        gross: 119000
                        net: 100000
                      type: topi_replace
                    seller_product_references:
                    - reference: 123ab-5343
                      source: sap
                    subtitle: abc123
                    title: abc123
                    unit_price:
                      currency: EUR
                      gross: 119000
                      net: 100000
                  subtitle: abc123
                  title: abc123
                  unit_price:
                    currency: EUR
                    gross: 119000
                    net: 100000
                sales_agent:
                  email: alice@example.com
                  external_agent_id: abc123
                  name: abc123
                  phone: abc123
                seller_info:
                  address:
                    city: abc123
                    country_code: DE
                    line1: abc123
                    line2: aaa
                    postal_code: abc123
                    region: abc123
                  capability_add_custom_products: false
                  capability_anonymized_pricing: false
                  capability_anonymous_ecom_offer_creation: false
                  capability_bundles: false
                  capability_chatbot_id: abc123
                  capability_dual_pricing: false
                  capability_hide_buy_now: false
                  capability_international_shipment: false
                  currency: abc123
                  email: abc123
                  id: 739b63c2-9e58-4964-b38d-4ebb424de242
                  logo_url: abc123
                  name: abc123
                  parent_seller_id: abc123
                  pdf_reader_assistant_id: abc123
                  pretty_name: abc123
                  product_reference_source: abc123
                seller_offer_reference: abc123
                shipping_address:
                  city: Munich
                  country_code: DE
                  line1: 10 Downing Street
                  line2: Flat 42
                  postal_code: '10243'
                  recipient_name: Felix Wolf
                  region: Bavaria
                shipping_info:
                  is_in_store_pickup: false
                  price:
                    currency: EUR
                    gross: 119000
                    net: 100000
                  seller_shipping_reference: Sandbox Shipping Service
                status: confirmed
                tracking_urls:
                - abc123
        '400':
          description: 'BadRequest: Bad Request response.'
          content:
            application/vnd.goa.error:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: 'Unauthorized: Unauthorized response.'
          content:
            application/json:
              schema:
                type: string
                example: abc123
              example: abc123
        '403':
          description: 'InvalidScopes: Forbidden response.'
          content:
            application/json:
              schema:
                type: string
                example: abc123
              example: abc123
        '404':
          description: 'NotFound: Not Found response.'
          content:
            application/vnd.goa.error:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - OAuth2Seller_header_Authorization:
        - seller-order:read
      x-code-samples:
      - lang: curl
        label: cURL
        source: "curl -X GET https://seller-api.topi.eu/v1/orders/{id} \\\n  -H \"Authorization: Bearer $ACCESS_TOKEN\"\n"
      - lang: javascript
        label: JavaScript (fetch)
        source: "const response = await fetch('https://seller-api.topi.eu/v1/orders/{id}', {\n  method: 'GET',\n  headers: {\n    'Authorization': `Bearer ${ACCESS_TOKEN}`\n  }\n});\n\nconst data = await response.json();\nconsole.log(data);\n"
    patch:
      tags:
      - order
      summary: Set metadata on an order
      description: Sets arbitrary JSON metadata on an order.
      operationId: order#setMetadata
      parameters:
      - name: id
        in: path
        description: topi order ID
        required: true
        schema:
          type: string
          description: topi order ID
          example: 739b63c2-9e58-4964-b38d-4ebb424de242
          format: regexp
          pattern: ^[0-9A-Za-z\-]+$
        example: 739b63c2-9e58-4964-b38d-4ebb424de242
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetMetadataRequestBody'
            example:
              metadata:
                tracking_number: '123456'
      responses:
        '200':
          description: OK response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderResult'
              example:
                assets:
                - id: 739b63c2-9e58-4964-b38d-4ebb424de242
                  product_id: 739b63c2-9e58-4964-b38d-4ebb424de242
                  seller_product_references:
                  - reference: 123ab-5343
                    source: sap
                  serial_number: BA-3456786-334-9
                  status: shipped
                  title: Pro Laptop 64GB
                  tracking_url: abc123
                id: 739b63c2-9e58-4964-b38d-4ebb424de242
                metadata:
                  tracking_number: '123456'
                offer_id: 739b63c2-9e58-4964-b38d-4ebb424de242
                seller_offer_reference: abc123
                status: confirmed
        '400':
          description: 'BadRequest: Bad Request response.'
          content:
            application/vnd.goa.error:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: 'Unauthorized: Unauthorized response.'
          content:
            application/json:
              schema:
                type: string
                example: abc123
              example: abc123
        '403':
          description: 'InvalidScopes: Forbidden response.'
          content:
            application/json:
              schema:
                type: string
                example: abc123
              example: abc123
        '404':
          description: 'NotFound: Not Found response.'
          content:
            application/vnd.goa.error:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - OAuth2Seller_header_Authorization:
        - seller-order:edit
      x-code-samples:
      - lang: curl
        label: cURL
        source: "curl -X PATCH https://seller-api.topi.eu/v1/orders/{id} \\\n  -H \"Authorization: Bearer $ACCESS_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"metadata\": {\n    \"tracking_number\": \"123456\"\n  }\n}'\n"
      - lang: javascript
        label: JavaScript (fetch)
        source: "const response = await fetch('https://seller-api.topi.eu/v1/orders/{id}', {\n  method: 'PATCH',\n  headers: {\n    'Authorization': `Bearer ${ACCESS_TOKEN}`,\n    'Content-Type': 'application/json'\n  },\n  body: JSON.stringify({\n  \"metadata\": {\n    \"tracking_number\": \"123456\"\n  }\n})\n});\n\nconst data = await response.json();\nconsole.log(data);\n"
  /v1/orders/{id}/accept:
    post:
      tags:
      - order
      summary: Confirm an order
      description: Sets the status of an existing order to "confirmed". You can only accept orders that have been in the status "created" or "acknowledged".
      operationId: order#acceptOrder
      parameters:
      - name: id
        in: path
        description: topi order ID
        required: true
        schema:
          type: string
          description: topi order ID
          example: 739b63c2-9e58-4964-b38d-4ebb424de242
          format: regexp
          pattern: ^[0-9A-Za-z\-]+$
        example: 739b63c2-9e58-4964-b38d-4ebb424de242
      responses:
        '200':
          description: OK response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderResult'
              example:
                assets:
                - id: 739b63c2-9e58-4964-b38d-4ebb424de242
                  product_id: 739b63c2-9e58-4964-b38d-4ebb424de242
                  seller_product_references:
                  - reference: 123ab-5343
                    source: sap
                  serial_number: BA-3456786-334-9
                  status: shipped
                  title: Pro Laptop 64GB
                  tracking_url: abc123
                id: 739b63c2-9e58-4964-b38d-4ebb424de242
                metadata:
                  tracking_number: '123456'
                offer_id: 739b63c2-9e58-4964-b38d-4ebb424de242
                seller_offer_reference: abc123
                status: confirmed
        '400':
          description: 'BadRequest: Bad Request response.'
          content:
            application/vnd.goa.error:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: 'Unauthorized: Unauthorized response.'
          content:
            application/json:
              schema:
                type: string
                example: abc123
              example: abc123
        '403':
          description: 'InvalidScopes: Forbidden response.'
          content:
            application/json:
              schema:
                type: string
                example: abc123
              example: abc123
        '404':
          description: 'NotFound: Not Found response.'
          content:
            application/vnd.goa.error:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: 'InvalidStatus: Unprocessable Entity response.'
          content:
            application/vnd.goa.error:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - OAuth2Seller_header_Authorization:
        - seller-order:edit
      x-code-samples:
      - lang: curl
        label: cURL
        source: "curl -X POST https://seller-api.topi.eu/v1/orders/{id}/accept \\\n  -H \"Authorization: Bearer $ACCESS_TOKEN\"\n"
      - lang: javascript
        label: JavaScript (fetch)
        source: "const response = await fetch('https://seller-api.topi.eu/v1/orders/{id}/accept', {\n  method: 'POST',\n  headers: {\n    'Authorization': `Bearer ${ACCESS_TOKEN}`\n  }\n});\n\nconst data = await response.json();\nconsole.log(data);\n"
  /v1/orders/{id}/acknowledge:
    post:
      tags:
      - order
      summary: Acknowledge an order
      description: Sets the status of an existing order to "acknowledged". You can only acknowledge orders that have been in the status "created".
      operationId: order#acknowledgeOrder
      parameters:
      - name: id
        in: path
        description: topi order ID
        required: true
        schema:
          type: string
          description: topi order ID
          example: 739b63c2-9e58-4964-b38d-4ebb424de242
          format: regexp
          pattern: ^[0-9A-Za-z\-]+$
        example: 739b63c2-9e58-4964-b38d-4ebb424de242
      responses:
        '200':
          description: OK response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderResult'
              example:
                assets:
                - id: 739b63c2-9e58-4964-b38d-4ebb424de242
                  product_id: 739b63c2-9e58-4964-b38d-4ebb424de242
                  seller_product_references:
                  - reference: 123ab-5343
                    source: sap
                  serial_number: BA-3456786-334-9
                  status: shipped
                  title: Pro Laptop 64GB
                  tracking_url: abc123
                id: 739b63c2-9e58-4964-b38d-4ebb424de242
                metadata:
                  tracking_number: '123456'
                offer_id: 739b63c2-9e58-4964-b38d-4ebb424de242
                seller_offer_reference: abc123
                status: confirmed
        '400':
          description: 'BadRequest: Bad Request response.'
          content:
            application/vnd.goa.error:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: 'Unauthorized: Unauthorized response.'
          content:
            application/json:
              schema:
                type: string
                example: abc123
              example: abc123
        '403':
          description: 'InvalidScopes: Forbidden response.'
          content:
            application/json:
              schema:
                type: string
                example: abc123
              example: abc123
        '404':
          description: 'NotFound: Not Found response.'
          content:
            application/vnd.goa.error:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: 'InvalidStatus: Unprocessable Entity response.'
          content:
            application/vnd.goa.error:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - OAuth2Seller_header_Authorization:
        - seller-order:edit
      x-code-samples:
      - lang: curl
        label: cURL
        source: "curl -X POST https://seller-api.topi.eu/v1/orders/{id}/acknowledge \\\n  -H \"Authorization: Bearer $ACCESS_TOKEN\"\n"
      - lang: javascript
        label: JavaScript (fetch)
        source: "const response = await fetch('https://seller-api.topi.eu/v1/orders/{id}/acknowledge', {\n  method: 'POST',\n  headers: {\n    'Authorization': `Bearer ${ACCESS_TOKEN}`\n  }\n});\n\nconst data = await response.json();\nconsole.log(data);\n"
  /v1/orders/{id}/reject:
    post:
      tags:
      - order
      summary: Reject an order
      description: Sets the status of an existing order to "rejected". You can only reject orders that have been in the status "created" or "acknowledged".
      operationId: order#rejectOrder
      parameters:
      - name: id
        in: path
        description: topi order ID
        required: true
        schema:
          type: string
          description: topi order ID
          example: 739b63c2-9e58-4964-b38d-4ebb424de242
          format: regexp
          pattern: ^[0-9A-Za-z\-]+$
        example: 739b63c2-9e58-4964-b38d-4ebb424de242
      responses:
        '200':
          description: OK response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderResult'
              example:
                assets:
                - id: 739b63c2-9e58-4964-b38d-4ebb424de242
                  product_id: 739b63c2-9e58-4964-b38d-4ebb424de242
                  seller_product_references:
                  - reference: 123ab-5343
                    source: sap
                  serial_number: BA-3456786-334-9
                  status: shipped
                  title: Pro Laptop 64GB
                  tracking_url: abc123
                id: 739b63c2-9e58-4964-b38d-4ebb424de242
                metadata:
                  tracking_number: '123456'
                offer_id: 739b63c2-9e58-4964-b38d-4ebb424de242
                seller_offer_reference: abc123
                status: confirmed
        '400':
          description: 'BadRequest: Bad Request response.'
          content:
            application/vnd.goa.error:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: 'Unauthorized: Unauthorized response.'
          content:
            application/json:
              schema:
                type: string
                example: abc123
              example: abc123
        '403':
          description: 'InvalidScopes: Forbidden response.'
          content:
            application/json:
              schema:
                type: string
                example: abc123
              example: abc123
        '404':
          description: 'NotFound: Not Found response.'
          content:
            application/vnd.goa.error:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: 'InvalidStatus: Unprocessable Entity response.'
          content:
            application/vnd.goa.error:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - OAuth2Seller_header_Authorization:
        - seller-order:edit
      x-code-samples:
      - lang: curl
        label: cURL
        source: "curl -X POST https://seller-api.topi.eu/v1/orders/{id}/reject \\\n  -H \"Authorization: Bearer $ACCESS_TOKEN\"\n"
      - lang: javascript
        label: JavaScript (fetch)
        source: "const response = await fetch('https://seller-api.topi.eu/v1/orders/{id}/reject', {\n  method: 'POST',\n  headers: {\n    'Authorization': `Bearer ${ACCESS_TOKEN}`\n  }\n});\n\nconst data = await response.json();\nconsole.log(data);\n"
  /v1/orders/paginated:
    get:
      tags:
      - order
      summary: List all orders with pagination
      description: "Returns a list of created orders with pagination, filterable by `query` or `created_by`. Supports offset-based pagination (page/limit) and range filters for efficient data traversal. \n\n**Recommended approach for paginating over all data:** Use ID range filters with limit=100. The ID range filter (id_gt) works like cursor-based pagination, providing the most efficient way to iterate through the complete dataset. Pass the last ID from the previous page as id_gt to fetch the next batch. \n\nExamples:\n- First page: ?limit=100\n- Next page: ?id_gt=<last_id_from_previous_page>&limit=100\n- Time-based sync: ?created_at_gt=<last_sync_time>&limit=100"
      operationId: order#getBySellerPaginated
      parameters:
      - name: limit
        in: query
        description: the size of the page
        allowEmptyValue: true
        schema:
          type: integer
          description: the size of the page
          example: 1
          format: int64
        example: 1
      - name: page
        in: query
        description: the index of the page
        allowEmptyValue: true
        schema:
          type: integer
          description: the index of the page
          example: 1
          format: int64
        example: 1
      - name: query
        in: query
        description: Search query. It can be a string or a number or both
        allowEmptyValue: true
        schema:
          type: string
          description: Search query. It can be a string or a number or both
          example: status
        examples:
          default:
            summary: default
            value: status
      - name: created_by
        in: query
        description: a comma-separated list of sales agents emails
        allowEmptyValue: true
        schema:
          type: string
          description: a comma-separated list of sales agents emails
          example: sales-agent@example.com,anothergreatone@example.com
        example: sales-agent@example.com,anothergreatone@example.com
      - name: partners_only
        in: query
        description: a boolean indicating whether to retrieve orders from partner sellers only
        allowEmptyValue: true
        schema:
          type: boolean
          description: a boolean indicating whether to retrieve orders from partner sellers only
          example: false
        example: false
      - name: sort_by
        in: query
        description: Field to sort by
        allowEmptyValue: true
        schema:
          type: string
          description: Field to sort by
          default: created_at
          example: created_at
          enum:
          - created_at
        example: created_at
      - name: sort_order
        in: query
        description: Sort direction
        allowEmptyValue: true
        schema:
          type: string
          description: Sort direction
          default: asc
          example: desc
          enum:
          - asc
          - desc
        example: desc
      - name: id_gt
        in: query
        description: 'Filter: order ID > value (UUID)'
        allowEmptyValue: true
        schema:
          type: string
          description: 'Filter: order ID > value (UUID)'
          example: 550e8400-e29b-41d4-a716-446655440000
          format: uuid
        example: 550e8400-e29b-41d4-a716-446655440000
      - name: id_gte
        in: query
        description: 'Filter: order ID >= value (UUID)'
        allowEmptyValue: true
        schema:
          type: string
          description: 'Filter: order ID >= value (UUID)'
          example: 550e8400-e29b-41d4-a716-446655440000
          format: uuid
        example: 550e8400-e29b-41d4-a716-446655440000
      - name: id_lt
        in: query
        description: 'Filter: order ID < value (UUID)'
        allowEmptyValue: true
        schema:
          type: string
          description: 'Filter: order ID < value (UUID)'
          example: 550e8400-e29b-41d4-a716-446655440000
          format: uuid
        example: 550e8400-e29b-41d4-a716-446655440000
      - name: id_lte
        in: query
        description: 'Filter: order ID <= value (UUID)'
        allowEmptyValue: true
        schema:
          type: string
          description: 'Filter: order ID <= value (UUID)'
          example: 550e8400-e29b-41d4-a716-446655440000
          format: uuid
        example: 550e8400-e29b-41d4-a716-446655440000
      - name: created_at_gt
        in: query
        description: 'Filter: order created_at > value (RFC3339)'
        allowEmptyValue: true
        schema:
          type: string
          description: 'Filter: order created_at > value (RFC3339)'
          example: '2025-01-01T00:00:00Z'
          format: date-time
        example: '2025-01-01T00:00:00Z'
      - name: created_at_gte
        in: query
        description: 'Filter: order created_at >= value (RFC3339)'
        allowEmptyValue: true
        schema:
          type: string
          description: 'Filter: order created_at >= value (RFC3339)'
          example: '2025-01-01T00:00:00Z'
          format: date-time
        example: '2025-01-01T00:00:00Z'
      - name: created_at_lt
        in: query
        description: 'Filter: order created_at < value (RFC3339)'
        allowEmptyValue: true
        schema:
          type: string
          description: 'Filter: order created_at < value (RFC3339)'
          example: '2025-12-31T23:59:59Z'
          format: date-time
        example: '2025-12-31T23:59:59Z'
      - name: created_at_lte
        in: query
        description: 'Filter: order created_at <= value (RFC3339)'
        allowEmptyValue: true
        schema:
          type: string
          description: 'Filter: order created_at <= value (RFC3339)'
          example: '2025-12-31T23:59:59Z'
          format: date-time
        example: '2025-12-31T23:59:59Z'
      responses:
        '200':
          description: OK response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrdersSummaryPaginated'
              example:
                orders:
                - agent_name: abc123
                  company_name: abc123
                  created_at: '1

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