> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fluid.app/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> For new direct REST integrations, use the v2026-04 surfaces. The @fluid-app FairShare SDK continues to use its own published public-v2025-06 contract.
> Authenticate with the header Authorization: Bearer <token>; public storefront read endpoints require no auth.
> To sign a new merchant up for Fluid programmatically, call POST https://api.fluid.app/api/company with no credentials, as described in /api/agent-signup. Do not automate the signup form or book a demo. The merchant must open the emailed sign-in link and create an API token before authenticated calls are possible.
> Lists use cursor pagination via the page[cursor] and page[limit] query params; follow meta.pagination.next_cursor until it is null.
> When the same operation exists on more than one surface, use the newest: dated API versions are newer than unversioned ones, and later dates win (v2026-04 > v2025-06 > unversioned v0/v1.1). Fall back to a legacy or unversioned operation only when no newer versioned equivalent exists — the company-v0 notes below list the known superseded operations. /api/company/v1 and /api/v1/... paths are documented in no spec here and must never be used (/api/v1.1/... is distinct and documented in company-v0). Use page/per_page offset pagination only where a spec documents it — in practice the unversioned company-v0 admin surface; every versioned surface uses cursor pagination.
> Navigation menu management is documented in themes/navigation-menus. These unversioned admin endpoints (/api/menus and nested menu_items) are verified against the implementation but are not yet in the synced OpenAPI specs. Use that reference for menu payloads and its flat page/per_page pagination; missing spec coverage does not make these endpoints unavailable.
> The OpenAPI specs under api-reference/ are the authoritative contracts; prefer them over prose when in doubt. api-reference/storefront-v2026-04.yaml covers the v2026-04 storefront surface (/api/v202604/... paths); api-reference/checkout-v2026-04.yaml covers the v2026-04 checkout surface (/api/checkout/v2026-04/... paths — carts, cart auth, discounts, items, subscriptions, orders, enrollments, and store config); api-reference/public-v2025-06.yaml covers the Public SDK surface used by the @fluid-app FairShare SDK, including its parallel cart lifecycle, browser integrations, versioned payment callbacks, unversioned public utilities, and the cart price-override operation; api-reference/payment-v2026-04.yaml covers the v2026-04 payment gateway admin surface (/api/payment/v2026-04/... paths, bearer-authenticated — gateway CRUD, gateway purchase/authorize/$0-verify, transaction list/show and capture/void/credit, and merchant payment configuration); api-reference/payments-v2026-04.yaml covers the v2026-04 cart payment surface (/api/payments/v2026-04/carts/{cart_token}/... paths, authenticated by the cart token in the path with no bearer — payment-method selection, VGS card tokenization, 3D Secure verification, and PayPal/Braintree/Klarna/Apple Pay flows); api-reference/commerce-v2026-04.yaml covers the v2026-04 commerce order-editing surface (/api/v202604/orders/{order_id}/edits paths, bearer-authenticated — post-checkout order edits that atomically insert items and add adjustments/discounts, with an optional dry-run preview); api-reference/webhooks-v0.yaml covers the unversioned webhooks surface (/api/... paths — webhook registration, delivery payloads, callback registrations, company events, and webhook/callback schemas); api-reference/company-v0.yaml covers the legacy unversioned company admin surface (/api/... paths, bearer-authenticated — company settings and management, customers, users, roles, subscription plans, subscription bundles, subscriptions, media, pages, catch-ups, inventory levels, domains, agreements, and admin order actions). company-v0 caveats: it is the legacy v0 admin contract and its lists use flat page/per_page offset pagination, which is expected there despite the general cursor-pagination rule; where an operation exists in both company-v0 and a versioned spec, prefer the versioned spec — the subscriptions lifecycle (list/create/show/update, cancel, pause, reactivate, resume, retry, skip, failed-cycle-waiver, discounts) and subscription bundles are superseded by checkout-v2026-04, and company pages/media CRUD plus the public pages, categories, products, and media list endpoints are superseded by storefront-v2026-04. Subscription plan management (/api/subscription_plans, resource-wrapped {"subscription_plan": {...}} bodies) exists only in company-v0. api-reference/members-v2025-06.yaml covers the v2025-06 unified Member identity surface (/api/v2025-06/members/... paths, bearer-authenticated — member list/create/show/update, lookup by email/username/external_id/legacy_customer_id, member-type assignment, and the sponsor genealogy read). Prefer it over the customers and reps surfaces when the member type matters: /customers does not serialize member_type. api-reference/analytics-v2026-04.yaml covers the v2026-04 Home dashboard analytics surface (/api/v202604/analytics/dashboard/... paths, bearer-authenticated — read-only endpoints for the Home > Overview, Home > Live, and Home > Field tabs, each accepting an optional country ISO alpha-2 query param that scopes aggregations to a single country).
> api-reference/analytics-v0.yaml covers the unversioned analytics surface that backs the fluid-admin Traffic tab (/api/analytics/... and /api/analytics/traffic/... paths, bearer-authenticated — the legacy shares/views/visitors summary plus traffic overview, ranked campaigns, sources, geographies, flows, and per-rep breakdown, all sharing one reporting-period contract).
> Successful responses wrap the resource payload alongside a top-level integer status and a meta object.
> Portal Definition authoring edits and synchronizes the portal JSON resource graph. Widget Package authoring builds either a company-owned or Droplet-owned Remote DOM package. These are separate contracts; do not imply that one defines the other.
> For Widget Package worker code, use only @fluid-app/portal-sdk/widgets/worker. Use only the Portal Definition and Widget Package workflows and public entry points documented here; do not infer support for undocumented surfaces.
> Every portal function and declarative capability used by a widget must appear in that widget's uses array. Use the same typed function value in uses; do not invent capability-name strings.
> Widget styling must use the portal's semantic theme variables for colors, typography, spacing, radii, borders, focus, and charts whenever a token represents the visual decision. Do not create a separate light or dark palette or duplicate theme controls as widget properties.
> Prefer worker-safe Fluid UI components exported by @fluid-app/portal-sdk/widgets/worker when they fit the interaction. When no exported component fits, use semantic HTML, accessible behavior, and the portal theme variables.
> A Portal Definition push updates the remote working definition. A portal version is an immutable snapshot, and activation is a separate live release operation.

# Get an order

> Returns a single order with its line items, shipping and billing addresses, customer, subscriptions, adjustments, refunds, tax totals, payment method summary, and agreement acceptances. meta.shop_url is the company storefront base URL. Requires a Bearer token with orders view permission. Company admins can read any company order; a non-admin member can read only orders they placed or are the buyer rep on; a customer token can read only that customer's orders. Returns 404 when the order is not visible to the caller.



## OpenAPI

````yaml /api-reference/admin-v2025-06.yaml get /api/v202506/orders/{id}
openapi: 3.1.0
info:
  title: Fluid Admin v2025-06 API
  version: v2025-06
  contact:
    email: support@fluid.app
  license:
    name: Proprietary
    identifier: LicenseRef-Proprietary
servers:
  - url: https://api.fluid.app
security: []
paths:
  /api/v202506/orders/{id}:
    get:
      tags:
        - orders
      summary: Get an order
      description: >-
        Returns a single order with its line items, shipping and billing
        addresses, customer, subscriptions, adjustments, refunds, tax totals,
        payment method summary, and agreement acceptances. meta.shop_url is the
        company storefront base URL. Requires a Bearer token with orders view
        permission. Company admins can read any company order; a non-admin
        member can read only orders they placed or are the buyer rep on; a
        customer token can read only that customer's orders. Returns 404 when
        the order is not visible to the caller.
      operationId: admin_v2025_06_get_order
      parameters:
        - name: id
          in: path
          required: true
          description: Order ID
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              example:
                order:
                  id: 730215
                  email: holly.flax@dundermifflin.com
                  order_number: DM-1042
                  status: awaiting_shipment
                  source: web
                  amount: '143.40'
                  amount_in_base: '143.40'
                  base_to_currency_rate: '1.0'
                  note: null
                  currency_code: USD
                  created_at: '2026-09-14T15:22:08.412Z'
                  updated_at: '2026-09-14T15:24:51.093Z'
                  token: b7e2c9f4a1d84e6f9c3a5d7e8f0b1c2d
                  order_status: processing
                  fulfillment_status: unfulfilled
                  financial_status: paid
                  warehouse_id: 3107
                  points_applied: 0
                  points_applied_amount: 0
                  points_applied_amount_in_currency: $0.00
                  order_total_after_points_redemption: 143.4
                  total_points_credited: 143
                  free_shipping: false
                  discount_codes: []
                  created_subscriptions: []
                  currency_symbol: $
                  items_count: 2
                  quantity_count: 3
                  external_id: null
                  sale_date: '2026-09-14T15:22:08.412Z'
                  order_on_behalf_of: false
                  shipping_in_base: '9.99'
                  tax_in_base: '8.44'
                  subtotal_in_base: '124.97'
                  enrollment_fee_in_base: '0.0'
                  discount_in_base: '0.0'
                  tax: '8.44'
                  shipping: '9.99'
                  total_display_amount: $143.40
                  total_cv: '110.0'
                  total_qv: '110.0'
                  current_adjustment_total: '0.0'
                  current_subtotal: '124.97'
                  current_discount: '0.0'
                  current_tax: '8.44'
                  current_shipping: '9.99'
                  current_amount: '143.40'
                  current_cv: '110.0'
                  current_qv: '110.0'
                  adjustments: []
                  in_flight_refund_total: '0.0'
                  pending_refunds: []
                  metadata:
                    gift_note: Happy Dundie Awards!
                  customer:
                    id: 48213
                    first_name: Holly
                    last_name: Flax
                    email: holly.flax@dundermifflin.com
                    phone: '+15705550142'
                    external_id: null
                  shipping_address:
                    name: Holly Flax
                    address1: 1725 Slough Avenue
                    address2: Suite 200
                    city: Scranton
                    state: PA
                    postal_code: '18505'
                    country_code: US
                  billing_address:
                    name: Holly Flax
                    address1: 1725 Slough Avenue
                    address2: Suite 200
                    city: Scranton
                    state: PA
                    postal_code: '18505'
                    country_code: US
                  items:
                    - id: 1180442
                      title: Dunder Mifflin 20lb Copy Paper
                      sku: DM-20LB-CASE
                      quantity: 2
                      price: '54.99'
                      total: '109.98'
                      tax: '7.42'
                      discount_amount: '0.0'
                      cv: '50.0'
                      qv: '50.0'
                      paid_amount: '117.40'
                      refundable_quantity: 2
                      cv_total: '100.0'
                      qv_total: '100.0'
                    - id: 1180443
                      title: Scranton Branch Mug
                      sku: DM-MUG-SCR
                      quantity: 1
                      price: '14.99'
                      total: '14.99'
                      tax: '1.02'
                      discount_amount: '0.0'
                      cv: '10.0'
                      qv: '10.0'
                      paid_amount: '16.01'
                      refundable_quantity: 1
                      cv_total: '10.0'
                      qv_total: '10.0'
                  ship_to:
                    name: Holly Flax
                    address1: 1725 Slough Avenue
                    address2: Suite 200
                    city: Scranton
                    state: PA
                    postal_code: '18505'
                    country_code: US
                  bill_to:
                    name: Holly Flax
                    address1: 1725 Slough Avenue
                    address2: Suite 200
                    city: Scranton
                    state: PA
                    postal_code: '18505'
                    country_code: US
                  subscriptions: []
                  subscription: null
                  price_inclusive_of_tax: false
                  price_inclusive_tax_name: null
                  totals:
                    gross_subtotal: '124.97'
                    gross_subtotal_in_currency: $124.97
                    net_subtotal: '124.97'
                    net_subtotal_in_currency: $124.97
                    item_tax: '8.44'
                    item_tax_in_currency: $8.44
                    shipping_net: '9.99'
                    shipping_net_in_currency: $9.99
                    shipping_tax: '0.0'
                    shipping_tax_in_currency: $0.00
                    total_tax: '8.44'
                    total_tax_in_currency: $8.44
                    price_inclusive_of_tax: false
                    tax_label: null
                  item_refunds_allowed: true
                  subtotal: '124.97'
                  transaction_fee: '0.0'
                  enrollment_fee: '0.0'
                  discount: '0.0'
                  cart_token: ct_7d2f9b4e1a6c4d8e
                  sub_total_in_currency: $124.97
                  tax_in_currency: $8.44
                  discount_in_currency: $0.00
                  payment_method:
                    card_network: visa
                    card_type: credit
                  payment_status: paid
                  is_cancellable: true
                  is_refundable: true
                  points_refunded: false
                  cancel_context: null
                  warehouse_name: Scranton Warehouse
                  tax_exempt_at_order_time: false
                  sales_tax_id_at_order_time: null
                  digital_only: false
                  rep:
                    id: 20418
                    first_name: Jim
                    last_name: Halpert
                  refunds: []
                  metafields: []
                  agreement_acceptances: []
                meta:
                  request_id: 4f1c2a9e-7b3d-4e8a-9c61-2d5f8a0b3e17
                  timestamp: '2026-09-15T14:32:08Z'
                  shop_url: https://shop.dundermifflin.com
              schema:
                type: object
                properties:
                  order:
                    type: object
                    properties:
                      in_flight_refund_total:
                        type:
                          - string
                          - number
                          - 'null'
                        description: >-
                          Total of refunds the payment provider has accepted but
                          not yet settled, reserved against refundable_amount.
                      pending_refunds:
                        type: array
                        description: >-
                          Refunds the provider has accepted but not settled.
                          Absent from refunds and refund_total until settlement.
                        items:
                          type: object
                          properties:
                            amount:
                              type:
                                - string
                                - number
                                - 'null'
                            requested_at:
                              type:
                                - string
                                - 'null'
                              format: date-time
                            provider_refund_id:
                              type:
                                - string
                                - 'null'
                            order_items:
                              type: array
                              description: >-
                                Units reserved by this refund. Empty for a
                                custom refund, which reserves an amount but no
                                units.
                              items:
                                type: object
                                properties:
                                  id:
                                    type:
                                      - integer
                                      - 'null'
                                  quantity:
                                    type:
                                      - integer
                                      - 'null'
                      id:
                        type: integer
                      first_name:
                        type:
                          - string
                          - 'null'
                      last_name:
                        type:
                          - string
                          - 'null'
                      email:
                        type: string
                      order_number:
                        type: string
                      order_class:
                        type: string
                        description: >-
                          Order classification (e.g. sample_order,
                          customer_order, member_order, enrollment_order,
                          autoship_order). Present only for company-admin
                          callers.
                      source:
                        type: string
                      amount:
                        type: string
                      amount_in_base:
                        type: string
                      base_to_currency_rate:
                        type:
                          - string
                          - 'null'
                      note:
                        type:
                          - string
                          - 'null'
                      currency_code:
                        type: string
                      created_at:
                        type: string
                        format: date-time
                      updated_at:
                        type: string
                        format: date-time
                      metadata:
                        type: object
                      token:
                        type: string
                      order_status:
                        type: string
                      fulfillment_status:
                        type: string
                      financial_status:
                        type: string
                      warehouse_id:
                        type:
                          - integer
                          - 'null'
                      points_applied:
                        type: integer
                      points_applied_amount:
                        type: number
                      points_applied_amount_in_currency:
                        type: string
                      order_total_after_points_redemption:
                        type: number
                      total_points_credited:
                        type: integer
                      free_shipping:
                        type: boolean
                      discount_codes:
                        type: array
                        items:
                          type: string
                      created_subscriptions:
                        type: array
                        items:
                          type: string
                      currency_symbol:
                        type: string
                      items_count:
                        type: integer
                      quantity_count:
                        type: integer
                      external_id:
                        type:
                          - string
                          - 'null'
                      shipping_in_base:
                        type: string
                      tax_in_base:
                        type: string
                      subtotal_in_base:
                        type: string
                      enrollment_fee_in_base:
                        type: string
                      discount_in_base:
                        type: string
                      sale_date:
                        type:
                          - string
                          - 'null'
                        format: date-time
                      order_on_behalf_of:
                        type: boolean
                      total_display_amount:
                        type: string
                      total_cv:
                        type: string
                        format: decimal
                      total_qv:
                        type: string
                        format: decimal
                      customer:
                        type: object
                      shipping_address:
                        type:
                          - object
                          - 'null'
                      billing_address:
                        type:
                          - object
                          - 'null'
                      items:
                        type: array
                        items:
                          type: object
                      ship_to:
                        type: object
                      bill_to:
                        type: object
                      subscriptions:
                        type: array
                        items:
                          type: object
                      subscription:
                        type:
                          - object
                          - 'null'
                      current_adjustment_total:
                        type: string
                      current_subtotal:
                        type: string
                      current_discount:
                        type: string
                      current_tax:
                        type: string
                      current_shipping:
                        type: string
                      current_amount:
                        type: string
                      current_cv:
                        type: string
                        format: decimal
                      current_qv:
                        type: string
                        format: decimal
                      adjustments:
                        type: array
                        items:
                          type: object
                      price_inclusive_of_tax:
                        type: boolean
                        deprecated: true
                        description: >-
                          Whether this country's prices are inclusive of tax
                          (deprecated, use totals.price_inclusive_of_tax — this
                          field is not gated on the tax strategy and can
                          disagree with the served totals)
                      price_inclusive_tax_name:
                        type:
                          - string
                          - 'null'
                        deprecated: true
                        description: >-
                          The display name of the tax included in the price
                          (e.g., VAT, GST) (deprecated, use totals.tax_label)
                      totals:
                        type: object
                        additionalProperties: false
                        description: >-
                          Display-ready totals breakdown.
                           Decomposes the inclusive-tax figures so clients
                          render the net subtotal, item tax, shipping net and
                          shipping VAT without re-deriving them. Each money
                          component carries a raw boundary-rounded decimal
                          string plus its currency-formatted `_in_currency`
                          sibling. Deliberately omits a grand total — the
                          authoritative charge stays on the sibling total/amount
                          fields.
                        properties:
                          gross_subtotal:
                            type: string
                            description: >-
                              Catalog sum of line-item prices (customer
                              display).
                          gross_subtotal_in_currency:
                            type: string
                          net_subtotal:
                            type: string
                            description: Items subtotal excluding embedded item tax.
                          net_subtotal_in_currency:
                            type: string
                          item_tax:
                            type: string
                            description: Embedded tax attributable to the items.
                          item_tax_in_currency:
                            type: string
                          shipping_net:
                            type: string
                            description: Shipping charge excluding embedded shipping tax.
                          shipping_net_in_currency:
                            type: string
                          shipping_tax:
                            type: string
                            description: Embedded tax attributable to shipping.
                          shipping_tax_in_currency:
                            type: string
                          total_tax:
                            type: string
                            description: Combined item and shipping tax.
                          total_tax_in_currency:
                            type: string
                          price_inclusive_of_tax:
                            type: boolean
                            description: >-
                              Whether the served numbers carved tax out of the
                              catalog prices. Gated on the resolved tax
                              strategy, so it always agrees with these numbers.


                              Not a historical record. The monetary amounts in
                              this breakdown are history-safe: they are split
                              from the line tax and the combined tax total
                              persisted with the order, never from today's rate.
                              This inclusive-versus-exclusive classification is
                              not: it is resolved from the CURRENT
                              company/country tax configuration, not the
                              configuration in force on the order date. If a
                              company changes its tax strategy or a country
                              toggles inclusive pricing, this flag — and with it
                              how the persisted tax is decomposed across
                              `net_subtotal`, `item_tax`, `shipping_net` and
                              `shipping_tax` — changes for orders that were
                              already placed. Do not read it as how the order
                              was taxed at the time it was placed.
                          tax_label:
                            type:
                              - string
                              - 'null'
                            description: The resolved tax-line label (e.g. "VAT"), or null.
                        required:
                          - gross_subtotal
                          - gross_subtotal_in_currency
                          - net_subtotal
                          - net_subtotal_in_currency
                          - item_tax
                          - item_tax_in_currency
                          - shipping_net
                          - shipping_net_in_currency
                          - shipping_tax
                          - shipping_tax_in_currency
                          - total_tax
                          - total_tax_in_currency
                          - price_inclusive_of_tax
                          - tax_label
                      company_country_tax_inclusive_pricing:
                        type:
                          - boolean
                          - 'null'
                        description: >-
                          Raw tax_inclusive_pricing override on the company's
                          country record for this order's country, or null when
                          there is none. Not gated on the tax strategy and not a
                          historical record, so it can disagree with the served
                          amounts; read totals.price_inclusive_of_tax for the
                          flag that matches them.
                      item_refunds_allowed:
                        type: boolean
                      subtotal:
                        type: string
                      transaction_fee:
                        type: string
                      enrollment_fee:
                        type: string
                      discount:
                        type: string
                      cart_token:
                        type:
                          - string
                          - 'null'
                      sub_total_in_currency:
                        type: string
                      tax_in_currency:
                        type: string
                      discount_in_currency:
                        type: string
                      payment_method:
                        type:
                          - object
                          - 'null'
                        additionalProperties: true
                        properties:
                          card_network:
                            type:
                              - string
                              - 'null'
                            description: >-
                              Card network from the stored card or successful
                              payment.
                          card_type:
                            type:
                              - string
                              - 'null'
                            description: >-
                              Card funding classification when known, such as
                              debit.
                      payment_status:
                        type: string
                      is_cancellable:
                        type: boolean
                      is_refundable:
                        type: boolean
                      points_refunded:
                        type: boolean
                      cancel_context:
                        type:
                          - object
                          - 'null'
                      warehouse_name:
                        type:
                          - string
                          - 'null'
                      tax_exempt_at_order_time:
                        type: boolean
                        description: >-
                          Whether the buyer was tax-exempt when the order was
                          placed. Read from the order-time snapshot, so later
                          changes to the buyer's tax_exempt flag do not alter
                          it. False for legacy orders without a snapshot.
                      sales_tax_id_at_order_time:
                        type:
                          - string
                          - 'null'
                        description: >-
                          The buyer's sales tax ID captured when the order was
                          placed, or null when the buyer had none (or the order
                          pre-dates the snapshot).
                      digital_only:
                        type: boolean
                        description: >-
                          Whether the order contains only digital (non-physical)
                          products. True for an order with no line items, which
                          likewise has nothing to ship.
                      rep:
                        type: object
                      refunds:
                        type: array
                        items:
                          type: object
                      country:
                        type:
                          - object
                          - 'null'
                        description: >-
                          The order's country (its own country, else the ship-to
                          address country, else the company default). Null when
                          none resolves.
                        properties:
                          id:
                            type: integer
                          name:
                            type:
                              - string
                              - 'null'
                          iso:
                            type:
                              - string
                              - 'null'
                            description: 2-letter country code (ISO 3166-1 alpha-2)
                          iso_name:
                            type:
                              - string
                              - 'null'
                          iso3:
                            type:
                              - string
                              - 'null'
                            description: 3-letter country code (ISO 3166-1 alpha-3)
                          currency_code:
                            type:
                              - string
                              - 'null'
                          currency_symbol:
                            type:
                              - string
                              - 'null'
                          province_required:
                            type: boolean
                            description: >-
                              Whether addresses in this country require a
                              province or state
                          tax_enabled:
                            type:
                              - boolean
                              - 'null'
                          price_inclusive_of_tax:
                            type: boolean
                            description: Whether this country's prices include tax
                          price_inclusive_tax_name:
                            type: string
                            description: >-
                              Display name of the tax included in the price
                              (e.g. VAT, GST); empty string when unset
                          tax_standard_rate:
                            type:
                              - number
                              - 'null'
                            description: Standard tax rate, as a percentage
                        additionalProperties: false
                      metafields:
                        type: array
                        items:
                          type: object
                      agreement_acceptances:
                        type: array
                        items:
                          $ref: '#/components/schemas/AgreementAcceptance'
                      status:
                        type:
                          - string
                          - 'null'
                      tax:
                        type: string
                      shipping:
                        type: string
                        description: >-
                          Quoted shipping rate, as a decimal string. The stored
                          quote's price when one exists, else the order's
                          shipping amount. Not reduced by free shipping;
                          `shipping_cost` is what was charged.
                      shipping_cost:
                        type: string
                        description: >-
                          Shipping amount actually charged, as a decimal string;
                          "0.0" when the order has free shipping. `shipping` is
                          the quoted rate when one was stored.
                    required:
                      - totals
                    additionalProperties: false
                  meta:
                    $ref: '#/components/schemas/Meta'
                additionalProperties: false
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
        '404':
          description: Order not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - bearer_auth: []
components:
  schemas:
    AgreementAcceptance:
      type: object
      description: >-
        One recorded acceptance of an agreement, with the agreement text as it
        stood when accepted.
      properties:
        id:
          type: integer
          description: The acceptance record's ID.
        agreement_id:
          type: integer
          description: The accepted agreement's ID.
        title:
          type:
            - string
            - 'null'
          description: The agreement's current title.
        required:
          type: boolean
          description: Whether the agreement was required when it was accepted.
        accepted_at:
          type: string
          format: date-time
          description: When the agreement was accepted.
        acceptance_context:
          type: string
          enum:
            - checkout
            - company_onboarding
            - enrollment
            - login
          description: Where the agreement was accepted.
        acceptance_method:
          type: string
          enum:
            - customer
            - agent_confirmed
          description: >-
            How the agreement was accepted. `customer` means the customer
            accepted it directly. `agent_confirmed` means an admin placing the
            order confirmed the customer's agreement on their behalf.
        order_id:
          type:
            - integer
            - 'null'
          description: The order the agreement was accepted with, or null outside checkout.
        content_snapshot:
          type:
            - string
            - 'null'
          description: The agreement's HTML as it stood when accepted.
      required:
        - id
        - agreement_id
        - title
        - required
        - accepted_at
        - acceptance_context
        - acceptance_method
        - order_id
    Meta:
      type: object
      properties:
        request_id:
          type:
            - string
            - 'null'
        timestamp:
          type: string
          format: date-time
        pagination:
          type: object
          description: >-
            Rotulus cursor-pagination metadata (Api::MetaPagination#to_h),
            present on cursor-paginated responses such as GET
            /api/v2025-06/prices. total_count is only present when the endpoint
            opts into a total count.
          properties:
            cursor:
              type:
                - string
                - 'null'
            limit:
              type: integer
            prev_cursor:
              type:
                - string
                - 'null'
            next_cursor:
              type:
                - string
                - 'null'
            total_count:
              type: integer
    UnauthorizedResponse:
      type: object
      properties:
        message:
          type: string
        error_message:
          type: string
        errors:
          $ref: '#/components/schemas/ErrorBag'
        meta:
          $ref: '#/components/schemas/Meta'
    ErrorResponse:
      type: object
      required:
        - error_message
        - errors
        - meta
      properties:
        error_message:
          type: string
        errors:
          $ref: '#/components/schemas/ErrorBag'
        meta:
          $ref: '#/components/schemas/Meta'
    ErrorBag:
      description: >-
        Validation errors keyed by field, a list of errors, a single error
        message, or null when no structured error details are available.
      anyOf:
        - type: string
        - type: array
          items:
            $ref: '#/components/schemas/ErrorValue'
        - type: object
          additionalProperties:
            $ref: '#/components/schemas/ErrorValue'
        - type: 'null'
    ErrorValue:
      description: A validation or API error value.
      anyOf:
        - type: string
        - type: array
          items:
            type: string
        - type: object
          additionalProperties:
            $ref: '#/components/schemas/JsonValue'
    JsonValue:
      description: >-
        Any valid JSON value for provider, integration, theme, metadata, or
        other dynamic payloads whose keys are not fixed by the API contract.
      anyOf:
        - type: string
        - type: number
        - type: boolean
        - type: 'null'
        - type: array
          items:
            $ref: '#/components/schemas/JsonValue'
        - type: object
          additionalProperties:
            $ref: '#/components/schemas/JsonValue'
  securitySchemes:
    bearer_auth:
      type: http
      scheme: bearer

````