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

# List Transactions

Retrieve a list of transactions for the program. Each transaction represents an
addition or removal of points from a customer.

Unlike activities and rewards, transactions are immutable. For example, if an
activity is triggered and then voided, it will typically create two transactions,
one which adds points and a second which removes points.


## OpenAPI

````yaml /api-reference/v2/openapi.json GET /v2/transactions
openapi: 3.1.1
info:
  title: LoyaltyLion Admin API
  version: v2
servers:
  - url: https://api.loyaltylion.com
security: []
tags:
  - name: identity
  - name: activities
  - name: orders
  - name: transactions
  - name: customers
  - name: webhooks
  - name: emails
  - name: sites
  - name: reviews
  - name: rewards
  - name: integrations
  - name: gatsby
paths:
  /v2/transactions:
    get:
      tags:
        - transactions
      operationId: transactions.listTransactions
      parameters:
        - name: type
          in: query
          description: The format of the response
          schema:
            default: json
            type: string
            enum:
              - csv
              - json
        - name: since_id
          in: query
          description: Return only resources whose id is after the specified id
          schema:
            type: integer
            minimum: 0
        - name: limit
          in: query
          description: Max number of resources to return per request
          schema:
            default: 100
            type: integer
            minimum: 1
            maximum: 500
        - name: cursor
          in: query
          schema:
            type: string
            description: >-
              Fetch another page of results using a cursor returned in a
              previous response
        - name: customer_id
          in: query
          description: Return only transactions for this LoyaltyLion customer ID
          schema:
            type: number
        - name: created_at_min
          in: query
          description: >-
            Return only transactions created on or after the specified `ISO
            8601` datetime string
          schema:
            type: string
        - name: created_at_max
          in: query
          description: >-
            Return only transactions created before the specified `ISO 8601`
            datetime string
          schema:
            type: string
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionsListTransactionsResponseBody'
        '400':
          $ref: '#/components/responses/ClientErrorBadRequest'
        '401':
          description: '401'
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      message:
                        type: string
                      details:
                        type: object
                        propertyNames:
                          type: string
                        additionalProperties:
                          type: string
                    required:
                      - message
                    additionalProperties: false
                required:
                  - error
                additionalProperties: false
        '403':
          description: '403'
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      message:
                        type: string
                      details:
                        type: object
                        propertyNames:
                          type: string
                        additionalProperties:
                          type: string
                    required:
                      - message
                    additionalProperties: false
                required:
                  - error
                additionalProperties: false
      security:
        - ProgramApiKey:
            - read_orders
            - read_customers
        - SiteTokenSecret: []
components:
  schemas:
    TransactionsListTransactionsResponseBody:
      anyOf:
        - title: JSON
          type: object
          properties:
            transactions:
              type: array
              items:
                anyOf:
                  - title: Activity
                    type: object
                    properties:
                      id:
                        type: number
                      customer:
                        description: >-
                          The customer linked to the transaction. The attached
                          fields describe the _current_ state of the customer as
                          the API response is generated, not their state at the
                          time of the transaction
                        type: object
                        properties:
                          id:
                            type: number
                          merchant_id:
                            type: string
                          email:
                            type:
                              - string
                              - 'null'
                          points_pending:
                            type: number
                          points_approved:
                            type: number
                          points_spent:
                            type: number
                        required:
                          - id
                          - merchant_id
                          - email
                          - points_pending
                          - points_approved
                          - points_spent
                        additionalProperties: false
                      points_approved:
                        description: Number of approved points added or removed
                        type: number
                      points_pending:
                        description: Number of pending points added or removed
                        type: number
                      created_at:
                        description: >-
                          `ISO 8601` timestamp representing the time of the
                          transaction
                        type: string
                      resource:
                        type: string
                        const: activity
                      activity:
                        anyOf:
                          - $ref: '#/components/schemas/TransactionActivity'
                          - $ref: '#/components/schemas/TransactionActivityWithOrder'
                    required:
                      - id
                      - customer
                      - points_approved
                      - points_pending
                      - created_at
                      - resource
                      - activity
                    additionalProperties: false
                  - title: Adjustment
                    type: object
                    properties:
                      id:
                        type: number
                      customer:
                        description: >-
                          The customer linked to the transaction. The attached
                          fields describe the _current_ state of the customer as
                          the API response is generated, not their state at the
                          time of the transaction
                        type: object
                        properties:
                          id:
                            type: number
                          merchant_id:
                            type: string
                          email:
                            type:
                              - string
                              - 'null'
                          points_pending:
                            type: number
                          points_approved:
                            type: number
                          points_spent:
                            type: number
                        required:
                          - id
                          - merchant_id
                          - email
                          - points_pending
                          - points_approved
                          - points_spent
                        additionalProperties: false
                      points_approved:
                        description: Number of approved points added or removed
                        type: number
                      points_pending:
                        description: Number of pending points added or removed
                        type: number
                      created_at:
                        description: >-
                          `ISO 8601` timestamp representing the time of the
                          transaction
                        type: string
                      resource:
                        type: string
                        const: adjustment
                      adjustment:
                        type: object
                        properties:
                          note:
                            description: The customer-visible note for this adjustment
                            type:
                              - string
                              - 'null'
                        required:
                          - note
                        additionalProperties: false
                    required:
                      - id
                      - customer
                      - points_approved
                      - points_pending
                      - created_at
                      - resource
                      - adjustment
                    additionalProperties: false
                  - title: Expiry
                    type: object
                    properties:
                      id:
                        type: number
                      customer:
                        description: >-
                          The customer linked to the transaction. The attached
                          fields describe the _current_ state of the customer as
                          the API response is generated, not their state at the
                          time of the transaction
                        type: object
                        properties:
                          id:
                            type: number
                          merchant_id:
                            type: string
                          email:
                            type:
                              - string
                              - 'null'
                          points_pending:
                            type: number
                          points_approved:
                            type: number
                          points_spent:
                            type: number
                        required:
                          - id
                          - merchant_id
                          - email
                          - points_pending
                          - points_approved
                          - points_spent
                        additionalProperties: false
                      points_approved:
                        description: Number of approved points added or removed
                        type: number
                      points_pending:
                        description: Number of pending points added or removed
                        type: number
                      created_at:
                        description: >-
                          `ISO 8601` timestamp representing the time of the
                          transaction
                        type: string
                      resource:
                        type: string
                        const: expiry
                      expiry:
                        type: object
                        properties:
                          note:
                            description: The customer-visible note for this adjustment
                            type:
                              - string
                              - 'null'
                        required:
                          - note
                        additionalProperties: false
                    required:
                      - id
                      - customer
                      - points_approved
                      - points_pending
                      - created_at
                      - resource
                      - expiry
                    additionalProperties: false
                  - title: Reward
                    type: object
                    properties:
                      id:
                        type: number
                      customer:
                        description: >-
                          The customer linked to the transaction. The attached
                          fields describe the _current_ state of the customer as
                          the API response is generated, not their state at the
                          time of the transaction
                        type: object
                        properties:
                          id:
                            type: number
                          merchant_id:
                            type: string
                          email:
                            type:
                              - string
                              - 'null'
                          points_pending:
                            type: number
                          points_approved:
                            type: number
                          points_spent:
                            type: number
                        required:
                          - id
                          - merchant_id
                          - email
                          - points_pending
                          - points_approved
                          - points_spent
                        additionalProperties: false
                      points_approved:
                        description: Number of approved points added or removed
                        type: number
                      points_pending:
                        description: Number of pending points added or removed
                        type: number
                      created_at:
                        description: >-
                          `ISO 8601` timestamp representing the time of the
                          transaction
                        type: string
                      resource:
                        type: string
                        const: claimed_reward
                      claimed_reward:
                        description: The claimed reward linked to this transaction
                        type: object
                        properties:
                          id:
                            type: number
                          claimed_at:
                            description: >-
                              `ISO 8601` timestamp indicating when this reward
                              was claimed
                            type: string
                          point_cost:
                            description: The number of points it cost to claim this reward
                            type: number
                          redeemable:
                            oneOf:
                              - $ref: >-
                                  #/components/schemas/RewardRedeemableFulfilment
                              - $ref: '#/components/schemas/RewardRedeemablePosAction'
                              - $ref: '#/components/schemas/RewardRedeemableProduct'
                              - $ref: '#/components/schemas/RewardRedeemableGiftCard'
                              - $ref: '#/components/schemas/RewardRedeemableVoucher'
                            type: object
                            discriminator:
                              propertyName: redeemable_type
                              mapping:
                                fulfilment:
                                  $ref: >-
                                    #/components/schemas/RewardRedeemableFulfilment
                                pos_action:
                                  $ref: >-
                                    #/components/schemas/RewardRedeemablePosAction
                                product:
                                  $ref: '#/components/schemas/RewardRedeemableProduct'
                                gift_card:
                                  $ref: >-
                                    #/components/schemas/RewardRedeemableGiftCard
                                voucher:
                                  $ref: '#/components/schemas/RewardRedeemableVoucher'
                          reward:
                            oneOf:
                              - $ref: >-
                                  #/components/schemas/RewardActiveSubscriptionDiscountVoucher
                              - $ref: '#/components/schemas/RewardProductCart'
                              - $ref: '#/components/schemas/RewardCartDiscountVoucher'
                              - $ref: '#/components/schemas/RewardCheckoutRedemption'
                              - $ref: '#/components/schemas/RewardCollectionVoucher'
                              - $ref: '#/components/schemas/RewardCustom'
                              - $ref: '#/components/schemas/RewardFreeShippingVoucher'
                              - $ref: '#/components/schemas/RewardGiftCard'
                              - $ref: '#/components/schemas/RewardProductVoucher'
                              - $ref: '#/components/schemas/RewardSubscriptionProduct'
                            type: object
                            discriminator:
                              propertyName: kind
                              mapping:
                                active_subscription_discount_voucher:
                                  $ref: >-
                                    #/components/schemas/RewardActiveSubscriptionDiscountVoucher
                                product_cart:
                                  $ref: '#/components/schemas/RewardProductCart'
                                cart_discount_voucher:
                                  $ref: >-
                                    #/components/schemas/RewardCartDiscountVoucher
                                checkout_redemption:
                                  $ref: >-
                                    #/components/schemas/RewardCheckoutRedemption
                                collection_discount_voucher:
                                  $ref: '#/components/schemas/RewardCollectionVoucher'
                                custom:
                                  $ref: '#/components/schemas/RewardCustom'
                                free_shipping_voucher:
                                  $ref: >-
                                    #/components/schemas/RewardFreeShippingVoucher
                                gift_card:
                                  $ref: '#/components/schemas/RewardGiftCard'
                                product_discount_voucher:
                                  $ref: '#/components/schemas/RewardProductVoucher'
                                subscription_buy_with_points:
                                  $ref: >-
                                    #/components/schemas/RewardSubscriptionProduct
                          state:
                            type: string
                            enum:
                              - approved
                              - declined
                              - expired
                              - pending
                              - void
                          session:
                            description: >-
                              For session-based rewards, this includes
                              information about the session in which the reward
                              was claimed
                            anyOf:
                              - type: object
                                properties:
                                  kind:
                                    type: string
                                    enum:
                                      - cart
                                      - checkout
                                      - custom
                                  token:
                                    type: string
                                required:
                                  - kind
                                  - token
                                additionalProperties: false
                              - type: 'null'
                          auto_refund_at:
                            description: >-
                              `ISO 8601` timestamp indicating when this reward
                              will automatically be voided and refunded if it
                              has not yet been used, or `null` if not applicable
                            type:
                              - string
                              - 'null'
                          expires_at:
                            deprecated: true
                            description: Deprecated in favour of `auto_refund_at`
                            type:
                              - string
                              - 'null'
                        required:
                          - id
                          - claimed_at
                          - point_cost
                          - redeemable
                          - reward
                          - state
                          - session
                          - auto_refund_at
                          - expires_at
                        additionalProperties: false
                    required:
                      - id
                      - customer
                      - points_approved
                      - points_pending
                      - created_at
                      - resource
                      - claimed_reward
                    additionalProperties: false
            cursor:
              type: object
              properties:
                prev:
                  type:
                    - string
                    - 'null'
                next:
                  type:
                    - string
                    - 'null'
              required:
                - prev
                - next
              additionalProperties: false
          required:
            - transactions
            - cursor
          additionalProperties: false
        - title: CSV
          type: string
    TransactionActivity:
      title: Basic Activity
      type: object
      properties:
        id:
          description: Unique ID of the activity in LoyaltyLion
          type: number
        merchant_id:
          description: >-
            The ID of the associated resource in your store, or null if it has
            no association. This can be used to [update an
            activity](/api-reference/v2/resources/activities/update-activity)
          type:
            - string
            - 'null'
        value:
          description: The value of the activity, in points
          type: number
        state:
          type: string
          enum:
            - pending
            - declined
            - approved
            - void
            - expired
        customer:
          description: >-
            The customer linked to the activity. The attached fields describe
            the _current_ state of the customer as the API response is
            generated, not their state at the time of the activity
          type: object
          properties:
            id:
              type: number
            merchant_id:
              type: string
            email:
              type:
                - string
                - 'null'
            points_pending:
              type: number
            points_approved:
              type: number
            points_spent:
              type: number
          required:
            - id
            - merchant_id
            - email
            - points_pending
            - points_approved
            - points_spent
          additionalProperties: false
        created_at:
          description: An `ISO 8601` timestamp representing the time of the activity
          type: string
        rule:
          description: >-
            The rule that triggered this activity. If the activity was not
            linked to a rule, such as a manual points adjustment, this field
            will still be present but each of its properties will be `null`
          type: object
          properties:
            id:
              type:
                - number
                - 'null'
            name:
              type:
                - string
                - 'null'
            title:
              type:
                - string
                - 'null'
          additionalProperties: false
        flow:
          description: >-
            Information about the Flow that triggered this activity, if
            applicable
          type: object
          properties:
            id:
              type: number
            journey_id:
              type: number
            name:
              type: string
            block_id:
              type: string
          required:
            - id
            - journey_id
            - name
            - block_id
          additionalProperties: false
        resource:
          type: 'null'
      required:
        - id
        - merchant_id
        - value
        - state
        - customer
        - created_at
        - resource
      additionalProperties: false
    TransactionActivityWithOrder:
      title: Activity with Order
      type: object
      properties:
        id:
          description: Unique ID of the activity in LoyaltyLion
          type: number
        merchant_id:
          description: >-
            The ID of the associated resource in your store, or null if it has
            no association. This can be used to [update an
            activity](/api-reference/v2/resources/activities/update-activity)
          type:
            - string
            - 'null'
        value:
          description: The value of the activity, in points
          type: number
        state:
          type: string
          enum:
            - pending
            - declined
            - approved
            - void
            - expired
        customer:
          description: >-
            The customer linked to the activity. The attached fields describe
            the _current_ state of the customer as the API response is
            generated, not their state at the time of the activity
          type: object
          properties:
            id:
              type: number
            merchant_id:
              type: string
            email:
              type:
                - string
                - 'null'
            points_pending:
              type: number
            points_approved:
              type: number
            points_spent:
              type: number
          required:
            - id
            - merchant_id
            - email
            - points_pending
            - points_approved
            - points_spent
          additionalProperties: false
        created_at:
          description: An `ISO 8601` timestamp representing the time of the activity
          type: string
        rule:
          description: >-
            The rule that triggered this activity. If the activity was not
            linked to a rule, such as a manual points adjustment, this field
            will still be present but each of its properties will be `null`
          type: object
          properties:
            id:
              type:
                - number
                - 'null'
            name:
              type:
                - string
                - 'null'
            title:
              type:
                - string
                - 'null'
          additionalProperties: false
        flow:
          description: >-
            Information about the Flow that triggered this activity, if
            applicable
          type: object
          properties:
            id:
              type: number
            journey_id:
              type: number
            name:
              type: string
            block_id:
              type: string
          required:
            - id
            - journey_id
            - name
            - block_id
          additionalProperties: false
        resource:
          type: string
          const: order
        order:
          type: object
          properties:
            id:
              type: number
            merchant_id:
              type: string
            merchant_number:
              type: string
            total:
              type: string
            total_tax:
              type: string
            total_shipping:
              type: string
            total_discounts:
              type: string
            total_paid:
              type: string
            total_refunded:
              type: string
            payment_status:
              type: string
              enum:
                - not_paid
                - partially_paid
                - paid
            fulfillment_status:
              type: string
              enum:
                - fulfilled
                - not_fulfilled
                - partially_fulfilled
            refund_status:
              type: string
              enum:
                - not_refunded
                - partially_refunded
                - refunded
            cancellation_status:
              type: string
              enum:
                - cancelled
                - not_cancelled
            metadata:
              type: object
              properties:
                shopify_source_url:
                  type: string
                shopify_source_name:
                  type: string
                shopify_location_id:
                  type:
                    - number
                    - 'null'
              additionalProperties: false
            created_at:
              type: string
            updated_at:
              type: string
            customer:
              anyOf:
                - type: object
                  properties:
                    id:
                      type: number
                    merchant_id:
                      type: string
                    email:
                      type:
                        - string
                        - 'null'
                    points_pending:
                      type: number
                    points_approved:
                      type: number
                    points_spent:
                      type: number
                  required:
                    - id
                    - merchant_id
                    - email
                    - points_pending
                    - points_approved
                    - points_spent
                  additionalProperties: false
                - type: 'null'
          required:
            - id
            - merchant_id
            - merchant_number
            - total
            - total_tax
            - total_shipping
            - total_discounts
            - total_paid
            - total_refunded
            - payment_status
            - fulfillment_status
            - refund_status
            - cancellation_status
            - metadata
            - created_at
            - updated_at
            - customer
          additionalProperties: false
      required:
        - id
        - merchant_id
        - value
        - state
        - customer
        - created_at
        - resource
        - order
      additionalProperties: false
    RewardRedeemableFulfilment:
      title: Fulfilment
      type: object
      properties:
        redeemable_type:
          type: string
          const: fulfilment
        fulfilled:
          description: Indicates if this reward has been fulfilled
          type: boolean
        fulfilled_at:
          description: >-
            An ISO8601 timestamp representing when the reward was fulfilled, or
            `null` if it is not yet fulfilled
          type:
            - string
            - 'null'
        expires_on:
          type: 'null'
          description: >-
            This field is always null for fulfilment rewards because they do not
            expire
      required:
        - redeemable_type
        - fulfilled
        - fulfilled_at
        - expires_on
      additionalProperties: false
    RewardRedeemablePosAction:
      title: POS Action
      type: object
      properties:
        redeemable_type:
          type: string
          const: pos_action
        discount_amount:
          type: number
        expires_on:
          type: 'null'
      required:
        - redeemable_type
        - discount_amount
        - expires_on
      additionalProperties: false
    RewardRedeemableProduct:
      title: Product
      type: object
      properties:
        redeemable_type:
          type: string
          const: product
        product:
          description: Information about the product that was redeemed
          type: object
          properties:
            id:
              type:
                - number
                - string
            variant_id:
              type: number
            sku:
              type: string
            url:
              type: string
            image_url:
              type: string
            sort_key:
              type: number
            title:
              type: string
            handle:
              type: string
            inventory_count:
              description: >-
                The current inventory count of this product variant, or `null`
                if inventory is not tracked. If the count is zero, you should
                ensure it is not selectable by customers when redeeming the
                reward
              type:
                - number
                - 'null'
          required:
            - inventory_count
          additionalProperties: false
        used_at:
          description: An ISO 8601 timestamp representing when the product was used
          type:
            - string
            - 'null'
        shopify_cart_line_item_context:
          description: >-
            If this product was redeemed via a Shopify Script, this will contain
            the context string that will be added to line item in the cart  as a
            `__lion_context` property
          type: string
        expires_on:
          type: 'null'
          description: >-
            This field is always null for product rewards because they do not
            expire
      required:
        - redeemable_type
        - product
        - used_at
        - expires_on
      additionalProperties: false
    RewardRedeemableGiftCard:
      title: Gift Card
      type: object
      properties:
        redeemable_type:
          type: string
          const: gift_card
        code:
          description: >-
            The full gift card code. Depending on the context of the API call,
            this may be `null`
          type:
            - string
            - 'null'
        last_characters:
          description: The last few characters of the gift card code
          type: string
        currency:
          description: >-
            ISO 4217 currency code representing the gift card currency, e.g.
            `usd`
          example: usd
          type: string
        balance:
          description: The current balance on the gift card
          type: number
        initial_value:
          description: The initial balance of the gift card
          type: number
        expires_on:
          description: >-
            ISO 8601 timestamp representing when the gift card will expire, or
            `null` if it does not expire
          type:
            - string
            - 'null'
      required:
        - redeemable_type
        - code
        - last_characters
        - currency
        - balance
        - initial_value
        - expires_on
      additionalProperties: false
    RewardRedeemableVoucher:
      title: Voucher
      type: object
      properties:
        redeemable_type:
          type: string
          const: voucher
        code:
          description: The voucher/coupon code that can be applied to a cart
          type: string
        discount_amount:
          description: >-
            The discount amount that will be applied to the cart. For flat-rate
            vouchers, this will be an integer value representing the discount in
            the primary currency, e.g. $5 will be 5. For percentage vouchers, it
            will be the percentage discount from 1-100
          type: number
        usage_count:
          description: >-
            The number of times this voucher has been applied. Some voucher
            types, such as subscription vouchers, may be used multiple times.
          type: number
        usage_limit:
          description: The maximum number of times this voucher may be applied
          type: number
        used_at:
          description: >-
            An ISO 8601 timestamp representing when the voucher was used. If the
            voucher has been used more than once, this will be the most recent
            usage
          type:
            - string
            - 'null'
        expires_on:
          description: >-
            ISO 8601 timestamp representing when the voucher will expire, or
            `null` if it does not expire
          type:
            - string
            - 'null'
      required:
        - redeemable_type
        - code
        - discount_amount
        - usage_count
        - usage_limit
        - used_at
        - expires_on
      additionalProperties: false
    RewardActiveSubscriptionDiscountVoucher:
      title: Active Subscription Discount Voucher
      type: object
      properties:
        id:
          type: number
        title:
          type: string
        title_template:
          type:
            - string
            - 'null'
        description:
          type:
            - string
            - 'null'
        sort_key:
          type: number
        content:
          type: object
          propertyNames:
            type: string
          additionalProperties: {}
        point_cost:
          type: number
        method:
          type: string
          const: voucher
        discount_type:
          type: string
          enum:
            - flat
            - percentage
        discount_amount:
          type: number
        minimum_spend:
          type:
            - number
            - 'null'
        usage_limit:
          type: number
        min_redemption_amount:
          type: number
          const: 1
        max_redemption_amount:
          type: number
          const: 1
        max_free_shipping:
          type: 'null'
        site_id:
          type: number
        target_site:
          type: object
          properties:
            id:
              type: number
            name:
              type: string
            url:
              type: string
          required:
            - id
            - name
            - url
          additionalProperties: false
        order_type:
          type: string
          const: subscription
        target_type:
          type: string
          const: all
        target_collections:
          type: array
          items:
            type: object
            properties:
              id:
                type:
                  - number
                  - string
              url:
                type: string
              restriction_text:
                type: string
            additionalProperties: false
        target_products:
          type: array
          items:
            type: object
            properties:
              id:
                type:
                  - number
                  - string
              variant_id:
                type: number
              sku:
                type: string
              url:
                type: string
              image_url:
                type: string
              title:
                type: string
              handle:
                type: string
              inventory_count:
                description: >-
                  The current inventory count of this product variant, or `null`
                  if inventory is not tracked. If the count is zero, you should
                  ensure it is not selectable by customers when redeeming the
                  reward
                type:
                  - number
                  - 'null'
              sort_key:
                type: number
            required:
              - inventory_count
              - sort_key
            additionalProperties: false
        session_options:
          type: 'null'
        auto_refund_seconds:
          type: 'null'
        expiry_options:
          type: object
          properties:
            kind:
              type: string
              const: does_not_expire
            seconds:
              type: 'null'
          required:
            - kind
            - seconds
          additionalProperties: false
        redeemable_expiry_options:
          type: 'null'
        supported_channels:
          type: array
          items:
            type: string
            enum:
              - web
              - pos
              - mobile
        available_countries:
          anyOf:
            - type: array
              items:
                type: string
            - type: 'null'
        kind:
          type: string
          const: active_subscription_discount_voucher
        recurring_cycle_limit:
          type:
            - number
            - 'null'
      required:
        - id
        - title
        - title_template
        - description
        - sort_key
        - content
        - point_cost
        - method
        - discount_type
        - discount_amount
        - minimum_spend
        - usage_limit
        - min_redemption_amount
        - max_redemption_amount
        - max_free_shipping
        - site_id
        - target_site
        - order_type
        - target_type
        - target_collections
        - target_products
        - session_options
        - auto_refund_seconds
        - expiry_options
        - redeemable_expiry_options
        - supported_channels
        - available_countries
        - kind
        - recurring_cycle_limit
      additionalProperties: false
    RewardProductCart:
      title: Product (cart)
      type: object
      properties:
        id:
          type: number
        title:
          type: string
        title_template:
          type:
            - string
            - 'null'
        description:
          type:
            - string
            - 'null'
        sort_key:
          type: number
        content:
          type: object
          propertyNames:
            type: string
          additionalProperties: {}
        point_cost:
          type: number
        method:
          type: string
          enum:
            - buy_with_points
            - function
        discount_type:
          type: string
          const: percentage
        discount_amount:
          type: number
        minimum_spend:
          type:
            - number
            - 'null'
        usage_limit:
          type: number
          const: 1
        min_redemption_amount:
          type: number
          const: 1
        max_redemption_amount:
          type: number
          const: 1
        max_free_shipping:
          type: 'null'
        site_id:
          type: number
        target_site:
          type: object
          properties:
            id:
              type: number
            name:
              type: string
            url:
              type: string
          required:
            - id
            - name
            - url
          additionalProperties: false
        order_type:
          type: string
          const: all
        target_type:
          type: string
          const: product
        target_collections:
          type: array
          items:
            type: object
            properties:
              id:
                type:
                  - number
                  - string
              url:
                type: string
              restriction_text:
                type: string
            additionalProperties: false
        target_products:
          type: array
          items:
            type: object
            properties:
              id:
                type:
                  - number
                  - string
              variant_id:
                type: number
              sku:
                type: string
              url:
                type: string
              image_url:
                type: string
              title:
                type: string
              handle:
                type: string
              inventory_count:
                description: >-
                  The current inventory count of this product variant, or `null`
                  if inventory is not tracked. If the count is zero, you should
                  ensure it is not selectable by customers when redeeming the
                  reward
                type:
                  - number
                  - 'null'
              sort_key:
                type: number
            required:
              - inventory_count
              - sort_key
            additionalProperties: false
        session_options:
          type: object
          properties:
            kind:
              type: string
              const: cart
            session_limit:
              anyOf:
                - type: number
                  const: 1
                - type: 'null'
          required:
            - kind
            - session_limit
          additionalProperties: false
        auto_refund_seconds:
          type: number
        expiry_options:
          type: object
          properties:
            kind:
              type: string
              const: duration
            seconds:
              type: number
          required:
            - kind
            - seconds
          additionalProperties: false
        redeemable_expiry_options:
          type: 'null'
        supported_channels:
          type: array
          items:
            type: string
            enum:
              - web
              - pos
              - mobile
        available_countries:
          anyOf:
            - type: array
              items:
                type: string
            - type: 'null'
        kind:
          type: string
          const: product_cart
        minimum_requirements:
          anyOf:
            - oneOf:
                - $ref: >-
                    #/components/schemas/BuyWithPointsRewardMinimumRequirementsCost
                - $ref: >-
                    #/components/schemas/BuyWithPointsRewardMinimumRequirementsQuantity
              type: object
              discriminator:
                propertyName: type
                mapping:
                  cost:
                    $ref: >-
                      #/components/schemas/BuyWithPointsRewardMinimumRequirementsCost
                  quantity:
                    $ref: >-
                      #/components/schemas/BuyWithPointsRewardMinimumRequirementsQuantity
            - type: 'null'
      required:
        - id
        - title
        - title_template
        - description
        - sort_key
        - content
        - point_cost
        - method
        - discount_type
        - discount_amount
        - minimum_spend
        - usage_limit
        - min_redemption_amount
        - max_redemption_amount
        - max_free_shipping
        - site_id
        - target_site
        - order_type
        - target_type
        - target_collections
        - target_products
        - session_options
        - auto_refund_seconds
        - expiry_options
        - redeemable_expiry_options
        - supported_channels
        - available_countries
        - kind
      additionalProperties: false
    RewardCartDiscountVoucher:
      title: Cart Discount Voucher
      type: object
      properties:
        id:
          type: number
        title:
          type: string
        title_template:
          type:
            - string
            - 'null'
        description:
          type:
            - string
            - 'null'
        sort_key:
          type: number
        content:
          type: object
          propertyNames:
            type: string
          additionalProperties: {}
        point_cost:
          type: number
        method:
          type: string
          const: voucher
        discount_type:
          type: string
          enum:
            - flat
            - percentage
        discount_amount:
          type: number
        minimum_spend:
          type:
            - number
            - 'null'
        usage_limit:
          type: number
        min_redemption_amount:
          type: number
          const: 1
        max_redemption_amount:
          type: number
          const: 1
        max_free_shipping:
          type: 'null'
        site_id:
          type: number
        target_site:
          type: object
          properties:
            id:
              type: number
            name:
              type: string
            url:
              type: string
          required:
            - id
            - name
            - url
          additionalProperties: false
        order_type:
          type: string
          enum:
            - all
            - one_time
            - subscription
        target_type:
          type: string
          enum:
            - all
            - collection
        target_collections:
          type: array
          items:
            type: object
            properties:
              id:
                type:
                  - number
                  - string
              url:
                type: string
              restriction_text:
                type: string
            additionalProperties: false
        target_products:
          type: array
          items:
            type: object
            properties:
              id:
                type:
                  - number
                  - string
              variant_id:
                type: number
              sku:
                type: string
              url:
                type: string
              image_url:
                type: string
              title:
                type: string
              handle:
                type: string
              inventory_count:
                description: >-
                  The current inventory count of this product variant, or `null`
                  if inventory is not tracked. If the count is zero, you should
                  ensure it is not selectable by customers when redeeming the
                  reward
                type:
                  - number
                  - 'null'
              sort_key:
                type: number
            required:
              - inventory_count
              - sort_key
            additionalProperties: false
        session_options:
          type: 'null'
        auto_refund_seconds:
          type: 'null'
        expiry_options:
          type: object
          properties:
            kind:
              type: string
              const: does_not_expire
            seconds:
              type: 'null'
          required:
            - kind
            - seconds
          additionalProperties: false
        redeemable_expiry_options:
          anyOf:
            - type: object
              properties:
                after_duration:
                  type: object
                  properties:
                    seconds:
                      type: number
                  required:
                    - seconds
                  additionalProperties: false
              required:
                - after_duration
              additionalProperties: false
            - type: 'null'
        supported_channels:
          type: array
          items:
            type: string
            enum:
              - web
              - pos
              - mobile
        available_countries:
          anyOf:
            - type: array
              items:
                type: string
            - type: 'null'
        kind:
          type: string
          const: cart_discount_voucher
        recurring_cycle_limit:
          type:
            - number
            - 'null'
        supports_active_subscriptions:
          type: boolean
      required:
        - id
        - title
        - title_template
        - description
        - sort_key
        - content
        - point_cost
        - method
        - discount_type
        - discount_amount
        - minimum_spend
        - usage_limit
        - min_redemption_amount
        - max_redemption_amount
        - max_free_shipping
        - site_id
        - target_site
        - order_type
        - target_type
        - target_collections
        - target_products
        - session_options
        - auto_refund_seconds
        - expiry_options
        - redeemable_expiry_options
        - supported_channels
        - available_countries
        - kind
        - recurring_cycle_limit
      additionalProperties: false
    RewardCheckoutRedemption:
      title: Checkout Redemption Reward
      type: object
      properties:
        id:
          type: number
        title:
          type: string
        title_template:
          type:
            - string
            - 'null'
        description:
          type:
            - string
            - 'null'
        sort_key:
          type: number
        content:
          type: object
          propertyNames:
            type: string
          additionalProperties: {}
        point_cost:
          type: number
        method:
          type: string
          const: voucher
        discount_type:
          type: string
          const: flat
        discount_amount:
          type: number
        minimum_spend:
          type: 'null'
        usage_limit:
          type: number
          const: 1
        min_redemption_amount:
          type: number
        max_redemption_amount:
          type: number
        max_free_shipping:
          type: 'null'
        site_id:
          type: number
        target_site:
          type: object
          properties:
            id:
              type: number
            name:
              type: string
            url:
              type: string
          required:
            - id
            - name
            - url
          additionalProperties: false
        order_type:
          type: string
          enum:
            - all
            - one_time
        target_type:
          type: string
          enum:
            - all
            - collection
        target_collections:
          type: array
          items:
            type: object
            properties:
              id:
                type:
                  - number
                  - string
              url:
                type: string
              restriction_text:
                type: string
            additionalProperties: false
        target_products:
          type: array
          items:
            type: object
            properties:
              id:
                type:
                  - number
                  - string
              variant_id:
                type: number
              sku:
                type: string
              url:
                type: string
              image_url:
                type: string
              title:
                type: string
              handle:
                type: string
              inventory_count:
                description: >-
                  The current inventory count of this product variant, or `null`
                  if inventory is not tracked. If the count is zero, you should
                  ensure it is not selectable by customers when redeeming the
                  reward
                type:
                  - number
                  - 'null'
              sort_key:
                type: number
            required:
              - inventory_count
              - sort_key
            additionalProperties: false
        session_options:
          type: object
          properties:
            kind:
              type: string
              const: checkout
            session_limit:
              type: number
              const: 1
          required:
            - kind
            - session_limit
          additionalProperties: false
        auto_refund_seconds:
          type: number
        expiry_options:
          type: object
          properties:
            kind:
              type: string
              const: duration
            seconds:
              type: number
          required:
            - kind
            - seconds
          additionalProperties: false
        redeemable_expiry_options:
          type: 'null'
        supported_channels:
          type: array
          items:
            type: string
            enum:
              - web
              - pos
              - mobile
        available_countries:
          anyOf:
            - type: array
              items:
                type: string
            - type: 'null'
        kind:
          type: string
          const: checkout_redemption
        redemption_amount_step:
          type:
            - number
            - 'null'
        fixed_redemption_amounts:
          anyOf:
            - type: array
              items:
                type: number
            - type: 'null'
        min_spend_after_discount:
          type:
            - number
            - 'null'
        min_spend_before_discount:
          type:
            - number
            - 'null'
        hide_unavailable_discounts:
          type: boolean
      required:
        - id
        - title
        - title_template
        - description
        - sort_key
        - content
        - point_cost
        - method
        - discount_type
        - discount_amount
        - minimum_spend
        - usage_limit
        - min_redemption_amount
        - max_redemption_amount
        - max_free_shipping
        - site_id
        - target_site
        - order_type
        - target_type
        - target_collections
        - target_products
        - session_options
        - auto_refund_seconds
        - expiry_options
        - redeemable_expiry_options
        - supported_channels
        - available_countries
        - kind
        - redemption_amount_step
        - fixed_redemption_amounts
        - min_spend_after_discount
        - min_spend_before_discount
      additionalProperties: false
    RewardCollectionVoucher:
      title: Collection Voucher
      type: object
      properties:
        id:
          type: number
        title:
          type: string
        title_template:
          type:
            - string
            - 'null'
        description:
          type:
            - string
            - 'null'
        sort_key:
          type: number
        content:
          type: object
          propertyNames:
            type: string
          additionalProperties: {}
        point_cost:
          type: number
        method:
          type: string
          const: voucher
        discount_type:
          type: string
          enum:
            - flat
            - percentage
        discount_amount:
          type: number
        minimum_spend:
          type:
            - number
            - 'null'
        usage_limit:
          type: number
          const: 1
        min_redemption_amount:
          type: number
          const: 1
        max_redemption_amount:
          type: number
          const: 1
        max_free_shipping:
          type: 'null'
        site_id:
          type: number
        target_site:
          type: object
          properties:
            id:
              type: number
            name:
              type: string
            url:
              type: string
          required:
            - id
            - name
            - url
          additionalProperties: false
        order_type:
          type: string
          const: all
        target_type:
          type: string
          const: collection
        target_collections:
          type: array
          items:
            type: object
            properties:
              id:
                type:
                  - number
                  - string
              url:
                type: string
              restriction_text:
                type: string
            additionalProperties: false
        target_products:
          type: array
          items:
            type: object
            properties:
              id:
                type:
                  - number
                  - string
              variant_id:
                type: number
              sku:
                type: string
              url:
                type: string
              image_url:
                type: string
              title:
                type: string
              handle:
                type: string
              inventory_count:
                description: >-
                  The current inventory count of this product variant, or `null`
                  if inventory is not tracked. If the count is zero, you should
                  ensure it is not selectable by customers when redeeming the
                  reward
                type:
                  - number
                  - 'null'
              sort_key:
                type: number
            required:
              - inventory_count
              - sort_key
            additionalProperties: false
        session_options:
          type: 'null'
        auto_refund_seconds:
          type: 'null'
        expiry_options:
          type: object
          properties:
            kind:
              type: string
              const: does_not_expire
            seconds:
              type: 'null'
          required:
            - kind
            - seconds
          additionalProperties: false
        redeemable_expiry_options:
          anyOf:
            - type: object
              properties:
                after_duration:
                  type: object
                  properties:
                    seconds:
                      type: number
                  required:
                    - seconds
                  additionalProperties: false
              required:
                - after_duration
              additionalProperties: false
            - type: 'null'
        supported_channels:
          type: array
          items:
            type: string
            enum:
              - web
              - pos
              - mobile
        available_countries:
          anyOf:
            - type: array
              items:
                type: string
            - type: 'null'
        kind:
          type: string
          const: collection_discount_voucher
      required:
        - id
        - title
        - title_template
        - description
        - sort_key
        - content
        - point_cost
        - method
        - discount_type
        - discount_amount
        - minimum_spend
        - usage_limit
        - min_redemption_amount
        - max_redemption_amount
        - max_free_shipping
        - site_id
        - target_site
        - order_type
        - target_type
        - target_collections
        - target_products
        - session_options
        - auto_refund_seconds
        - expiry_options
        - redeemable_expiry_options
        - supported_channels
        - available_countries
        - kind
      additionalProperties: false
    RewardCustom:
      title: Custom Reward
      type: object
      properties:
        id:
          type: number
        title:
          type: string
        title_template:
          type:
            - string
            - 'null'
        description:
          type:
            - string
            - 'null'
        sort_key:
          type: number
        content:
          type: object
          properties:
            fulfilment_instructions:
              type:
                - string
                - 'null'
          required:
            - fulfilment_instructions
          additionalProperties: false
        point_cost:
          type: number
        method:
          type: string
          const: store_fulfilment
        discount_type:
          type: string
          const: custom
        discount_amount:
          type: 'null'
        minimum_spend:
          type: 'null'
        usage_limit:
          type: number
        min_redemption_amount:
          type: number
        max_redemption_amount:
          type: number
        max_free_shipping:
          type: 'null'
        site_id:
          type: number
        target_site:
          type: object
          properties:
            id:
              type: number
            name:
              type: string
            url:
              type: string
          required:
            - id
            - name
            - url
          additionalProperties: false
        order_type:
          type: string
          const: all
        target_type:
          type: string
          const: custom
        target_collections:
          type: array
          items:
            type: object
            properties:
              id:
                type:
                  - number
                  - string
              url:
                type: string
              restriction_text:
                type: string
            additionalProperties: false
        target_products:
          type: array
          items:
            type: object
            properties:
              id:
                type:
                  - number
                  - string
              variant_id:
                type: number
              sku:
                type: string
              url:
                type: string
              image_url:
                type: string
              title:
                type: string
              handle:
                type: string
              inventory_count:
                description: >-
                  The current inventory count of this product variant, or `null`
                  if inventory is not tracked. If the count is zero, you should
                  ensure it is not selectable by customers when redeeming the
                  reward
                type:
                  - number
                  - 'null'
              sort_key:
                type: number
            required:
              - inventory_count
              - sort_key
            additionalProperties: false
        session_options:
          type: 'null'
        auto_refund_seconds:
          type: 'null'
        expiry_options:
          type: object
          properties:
            kind:
              type: string
              const: does_not_expire
            seconds:
              type: 'null'
          required:
            - kind
            - seconds
          additionalProperties: false
        redeemable_expiry_options:
          type: 'null'
        supported_channels:
          type: array
          items:
            type: string
            enum:
              - web
              - pos
              - mobile
        available_countries:
          anyOf:
            - type: array
              items:
                type: string
            - type: 'null'
        kind:
          type: string
          const: custom
      required:
        - id
        - title
        - title_template
        - description
        - sort_key
        - content
        - point_cost
        - method
        - discount_type
        - discount_amount
        - minimum_spend
        - usage_limit
        - min_redemption_amount
        - max_redemption_amount
        - max_free_shipping
        - site_id
        - target_site
        - order_type
        - target_type
        - target_collections
        - target_products
        - session_options
        - auto_refund_seconds
        - expiry_options
        - redeemable_expiry_options
        - supported_channels
        - available_countries
        - kind
      additionalProperties: false
    RewardFreeShippingVoucher:
      title: Free Shipping Voucher
      type: object
      properties:
        id:
          type: number
        title:
          type: string
        title_template:
          type:
            - string
            - 'null'
        description:
          type:
            - string
            - 'null'
        sort_key:
          type: number
        content:
          type: object
          propertyNames:
            type: string
          additionalProperties: {}
        point_cost:
          type: number
        method:
          type: string
          const: voucher
        discount_type:
          type: string
          const: percentage
        discount_amount:
          type: number
          const: 100
        minimum_spend:
          type:
            - number
            - 'null'
        usage_limit:
          type: number
          const: 1
        min_redemption_amount:
          type: number
          const: 1
        max_redemption_amount:
          type: number
          const: 1
        max_free_shipping:
          type:
            - number
            - 'null'
        site_id:
          type: number
        target_site:
          type: object
          properties:
            id:
              type: number
            name:
              type: string
            url:
              type: string
          required:
            - id
            - name
            - url
          additionalProperties: false
        order_type:
          type: string
          const: all
        target_type:
          type: string
          const: shipping
        target_collections:
          type: array
          items:
            type: object
            properties:
              id:
                type:
                  - number
                  - string
              url:
                type: string
              restriction_text:
                type: string
            additionalProperties: false
        target_products:
          type: array
          items:
            type: object
            properties:
              id:
                type:
                  - number
                  - string
              variant_id:
                type: number
              sku:
                type: string
              url:
                type: string
              image_url:
                type: string
              title:
                type: string
              handle:
                type: string
              inventory_count:
                description: >-
                  The current inventory count of this product variant, or `null`
                  if inventory is not tracked. If the count is zero, you should
                  ensure it is not selectable by customers when redeeming the
                  reward
                type:
                  - number
                  - 'null'
              sort_key:
                type: number
            required:
              - inventory_count
              - sort_key
            additionalProperties: false
        session_options:
          type: 'null'
        auto_refund_seconds:
          type: 'null'
        expiry_options:
          type: object
          properties:
            kind:
              type: string
              const: does_not_expire
            seconds:
              type: 'null'
          required:
            - kind
            - seconds
          additionalProperties: false
        redeemable_expiry_options:
          anyOf:
            - type: object
              properties:
                after_duration:
                  type: object
                  properties:
                    seconds:
                      type: number
                  required:
                    - seconds
                  additionalProperties: false
              required:
                - after_duration
              additionalProperties: false
            - type: 'null'
        supported_channels:
          type: array
          items:
            type: string
            enum:
              - web
              - pos
              - mobile
        available_countries:
          anyOf:
            - type: array
              items:
                type: string
            - type: 'null'
        kind:
          type: string
          const: free_shipping_voucher
      required:
        - id
        - title
        - title_template
        - description
        - sort_key
        - content
        - point_cost
        - method
        - discount_type
        - discount_amount
        - minimum_spend
        - usage_limit
        - min_redemption_amount
        - max_redemption_amount
        - max_free_shipping
        - site_id
        - target_site
        - order_type
        - target_type
        - target_collections
        - target_products
        - session_options
        - auto_refund_seconds
        - expiry_options
        - redeemable_expiry_options
        - supported_channels
        - available_countries
        - kind
      additionalProperties: false
    RewardGiftCard:
      title: Gift Card
      type: object
      properties:
        id:
          type: number
        title:
          type: string
        title_template:
          type:
            - string
            - 'null'
        description:
          type:
            - string
            - 'null'
        sort_key:
          type: number
        content:
          type: object
          propertyNames:
            type: string
          additionalProperties: {}
        point_cost:
          type: number
        method:
          type: string
          const: gift_card
        discount_type:
          type: string
          const: flat
        discount_amount:
          type: number
        minimum_spend:
          type: 'null'
        usage_limit:
          type: number
          const: 1
        min_redemption_amount:
          type: number
          const: 1
        max_redemption_amount:
          type: number
          const: 1
        max_free_shipping:
          type: 'null'
        site_id:
          type: number
        target_site:
          type: object
          properties:
            id:
              type: number
            name:
              type: string
            url:
              type: string
          required:
            - id
            - name
            - url
          additionalProperties: false
        order_type:
          type: string
          const: all
        target_type:
          type: string
          const: all
        target_collections:
          type: array
          items:
            type: object
            properties:
              id:
                type:
                  - number
                  - string
              url:
                type: string
              restriction_text:
                type: string
            additionalProperties: false
        target_products:
          type: array
          items:
            type: object
            properties:
              id:
                type:
                  - number
                  - string
              variant_id:
                type: number
              sku:
                type: string
              url:
                type: string
              image_url:
                type: string
              title:
                type: string
              handle:
                type: string
              inventory_count:
                description: >-
                  The current inventory count of this product variant, or `null`
                  if inventory is not tracked. If the count is zero, you should
                  ensure it is not selectable by customers when redeeming the
                  reward
                type:
                  - number
                  - 'null'
              sort_key:
                type: number
            required:
              - inventory_count
              - sort_key
            additionalProperties: false
        session_options:
          type: 'null'
        auto_refund_seconds:
          type: 'null'
        expiry_options:
          type: object
          properties:
            kind:
              type: string
              const: does_not_expire
            seconds:
              type: 'null'
          required:
            - kind
            - seconds
          additionalProperties: false
        redeemable_expiry_options:
          anyOf:
            - type: object
              properties:
                after_duration:
                  type: object
                  properties:
                    seconds:
                      type: number
                  required:
                    - seconds
                  additionalProperties: false
              required:
                - after_duration
              additionalProperties: false
            - type: 'null'
        supported_channels:
          type: array
          items:
            type: string
            enum:
              - web
              - pos
              - mobile
        available_countries:
          anyOf:
            - type: array
              items:
                type: string
            - type: 'null'
        kind:
          type: string
          const: gift_card
      required:
        - id
        - title
        - title_template
        - description
        - sort_key
        - content
        - point_cost
        - method
        - discount_type
        - discount_amount
        - minimum_spend
        - usage_limit
        - min_redemption_amount
        - max_redemption_amount
        - max_free_shipping
        - site_id
        - target_site
        - order_type
        - target_type
        - target_collections
        - target_products
        - session_options
        - auto_refund_seconds
        - expiry_options
        - redeemable_expiry_options
        - supported_channels
        - available_countries
        - kind
      additionalProperties: false
    RewardProductVoucher:
      title: Product (voucher)
      type: object
      properties:
        id:
          type: number
        title:
          type: string
        title_template:
          type:
            - string
            - 'null'
        description:
          type:
            - string
            - 'null'
        sort_key:
          type: number
        content:
          type: object
          propertyNames:
            type: string
          additionalProperties: {}
        point_cost:
          type: number
        method:
          type: string
          const: voucher
        discount_type:
          type: string
          const: percentage
        discount_amount:
          type: number
        minimum_spend:
          type:
            - number
            - 'null'
        usage_limit:
          type: number
          const: 1
        min_redemption_amount:
          type: number
          const: 1
        max_redemption_amount:
          type: number
          const: 1
        max_free_shipping:
          type: 'null'
        site_id:
          type: number
        target_site:
          type: object
          properties:
            id:
              type: number
            name:
              type: string
            url:
              type: string
          required:
            - id
            - name
            - url
          additionalProperties: false
        order_type:
          type: string
          const: all
        target_type:
          type: string
          const: product
        target_collections:
          type: array
          items:
            type: object
            properties:
              id:
                type:
                  - number
                  - string
              url:
                type: string
              restriction_text:
                type: string
            additionalProperties: false
        target_products:
          type: array
          items:
            type: object
            properties:
              id:
                type:
                  - number
                  - string
              variant_id:
                type: number
              sku:
                type: string
              url:
                type: string
              image_url:
                type: string
              title:
                type: string
              handle:
                type: string
              inventory_count:
                description: >-
                  The current inventory count of this product variant, or `null`
                  if inventory is not tracked. If the count is zero, you should
                  ensure it is not selectable by customers when redeeming the
                  reward
                type:
                  - number
                  - 'null'
              sort_key:
                type: number
            required:
              - inventory_count
              - sort_key
            additionalProperties: false
        session_options:
          type: 'null'
        auto_refund_seconds:
          type: 'null'
        expiry_options:
          type: object
          properties:
            kind:
              type: string
              const: does_not_expire
            seconds:
              type: 'null'
          required:
            - kind
            - seconds
          additionalProperties: false
        redeemable_expiry_options:
          anyOf:
            - type: object
              properties:
                after_duration:
                  type: object
                  properties:
                    seconds:
                      type: number
                  required:
                    - seconds
                  additionalProperties: false
              required:
                - after_duration
              additionalProperties: false
            - type: 'null'
        supported_channels:
          type: array
          items:
            type: string
            enum:
              - web
              - pos
              - mobile
        available_countries:
          anyOf:
            - type: array
              items:
                type: string
            - type: 'null'
        kind:
          type: string
          const: product_discount_voucher
      required:
        - id
        - title
        - title_template
        - description
        - sort_key
        - content
        - point_cost
        - method
        - discount_type
        - discount_amount
        - minimum_spend
        - usage_limit
        - min_redemption_amount
        - max_redemption_amount
        - max_free_shipping
        - site_id
        - target_site
        - order_type
        - target_type
        - target_collections
        - target_products
        - session_options
        - auto_refund_seconds
        - expiry_options
        - redeemable_expiry_options
        - supported_channels
        - available_countries
        - kind
      additionalProperties: false
    RewardSubscriptionProduct:
      title: Product (subscription)
      type: object
      properties:
        id:
          type: number
        title:
          type: string
        title_template:
          type:
            - string
            - 'null'
        description:
          type:
            - string
            - 'null'
        sort_key:
          type: number
        content:
          type: object
          propertyNames:
            type: string
          additionalProperties: {}
        point_cost:
          type: number
        method:
          type: string
          const: subscription_buy_with_points
        discount_type:
          type: string
          const: percentage
        discount_amount:
          type: number
        minimum_spend:
          type:
            - number
            - 'null'
        usage_limit:
          type: number
        min_redemption_amount:
          type: number
          const: 1
        max_redemption_amount:
          type: number
          const: 1
        max_free_shipping:
          type: 'null'
        site_id:
          type: number
        target_site:
          type: object
          properties:
            id:
              type: number
            name:
              type: string
            url:
              type: string
          required:
            - id
            - name
            - url
          additionalProperties: false
        order_type:
          type: string
          const: subscription
        target_type:
          type: string
          const: product
        target_collections:
          type: array
          items:
            type: object
            properties:
              id:
                type:
                  - number
                  - string
              url:
                type: string
              restriction_text:
                type: string
            additionalProperties: false
        target_products:
          type: array
          items:
            type: object
            properties:
              id:
                type:
                  - number
                  - string
              variant_id:
                type: number
              sku:
                type: string
              url:
                type: string
              image_url:
                type: string
              title:
                type: string
              handle:
                type: string
              inventory_count:
                description: >-
                  The current inventory count of this product variant, or `null`
                  if inventory is not tracked. If the count is zero, you should
                  ensure it is not selectable by customers when redeeming the
                  reward
                type:
                  - number
                  - 'null'
              sort_key:
                type: number
            required:
              - inventory_count
              - sort_key
            additionalProperties: false
        session_options:
          type: 'null'
        auto_refund_seconds:
          type: number
        expiry_options:
          type: object
          properties:
            kind:
              type: string
              const: duration
            seconds:
              type: number
          required:
            - kind
            - seconds
          additionalProperties: false
        redeemable_expiry_options:
          type: 'null'
        supported_channels:
          type: array
          items:
            type: string
            enum:
              - web
              - pos
              - mobile
        available_countries:
          anyOf:
            - type: array
              items:
                type: string
            - type: 'null'
        kind:
          type: string
          const: subscription_buy_with_points
      required:
        - id
        - title
        - title_template
        - description
        - sort_key
        - content
        - point_cost
        - method
        - discount_type
        - discount_amount
        - minimum_spend
        - usage_limit
        - min_redemption_amount
        - max_redemption_amount
        - max_free_shipping
        - site_id
        - target_site
        - order_type
        - target_type
        - target_collections
        - target_products
        - session_options
        - auto_refund_seconds
        - expiry_options
        - redeemable_expiry_options
        - supported_channels
        - available_countries
        - kind
      additionalProperties: false
    BuyWithPointsRewardMinimumRequirementsCost:
      title: Cost
      type: object
      properties:
        type:
          type: string
          const: cost
        cost:
          type: number
      required:
        - type
        - cost
      additionalProperties: false
    BuyWithPointsRewardMinimumRequirementsQuantity:
      title: Quantity
      type: object
      properties:
        type:
          type: string
          const: quantity
        quantity:
          type: number
      required:
        - type
        - quantity
      additionalProperties: false
  responses:
    ClientErrorBadRequest:
      description: Bad Request
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: object
                properties:
                  message:
                    type: string
                  details:
                    type: object
                    additionalProperties:
                      type: string
                required:
                  - message
            required:
              - error
  securitySchemes:
    ProgramApiKey:
      type: http
      scheme: bearer
      description: >-
        An API key linked to a Program in LoyaltyLion, with a set of permissions
        (scopes). API keys can be created manually, or acquired through an
        OAuth2 flow. The API key should be provided as a `Bearer` token in the
        `Authorization` header
    SiteTokenSecret:
      type: http
      scheme: basic
      description: >-
        [DEPRECATED] Authenticate using a LoyaltyLion site's `token` as
        username, and its `secret` as the password. This authentication method
        is deprecated and will be removed in future. Use the `ProgramApiKey`
        authentication method instead

````