> ## 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 this 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/customers/{merchant_id}/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/customers/{merchant_id}/transactions:
    get:
      tags:
        - customers
      operationId: customers.listTransactionsForCustomer
      parameters:
        - name: merchant_id
          in: path
          required: true
          schema:
            type: string
          description: The ID of the customer in your platform or ecommerce store
        - 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:
            type: integer
            minimum: 1
            maximum: 500
            default: 100
        - name: cursor
          in: query
          schema:
            type: string
            description: >-
              Fetch another page of results using a cursor returned in a
              previous response
        - 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/CustomersListTransactionsForCustomerResponseBody
        '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
        '404':
          description: '404'
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                  - error
                additionalProperties: false
      security:
        - ProgramApiKey:
            - read_orders
            - read_customers
        - SiteTokenSecret: []
components:
  schemas:
    CustomersListTransactionsForCustomerResponseBody:
      anyOf:
        - type: object
          properties:
            transactions:
              type: array
              items:
                anyOf:
                  - type: object
                    properties:
                      id:
                        type: number
                      customer:
                        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
                        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
                      points_approved:
                        type: number
                        description: Number of approved points added or removed
                      points_pending:
                        type: number
                        description: Number of pending points added or removed
                      created_at:
                        type: string
                        description: >-
                          `ISO 8601` timestamp representing the time of the
                          transaction
                      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: Activity
                  - type: object
                    properties:
                      id:
                        type: number
                      customer:
                        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
                        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
                      points_approved:
                        type: number
                        description: Number of approved points added or removed
                      points_pending:
                        type: number
                        description: Number of pending points added or removed
                      created_at:
                        type: string
                        description: >-
                          `ISO 8601` timestamp representing the time of the
                          transaction
                      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: Adjustment
                  - type: object
                    properties:
                      id:
                        type: number
                      customer:
                        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
                        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
                      points_approved:
                        type: number
                        description: Number of approved points added or removed
                      points_pending:
                        type: number
                        description: Number of pending points added or removed
                      created_at:
                        type: string
                        description: >-
                          `ISO 8601` timestamp representing the time of the
                          transaction
                      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: Expiry
                  - type: object
                    properties:
                      id:
                        type: number
                      customer:
                        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
                        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
                      points_approved:
                        type: number
                        description: Number of approved points added or removed
                      points_pending:
                        type: number
                        description: Number of pending points added or removed
                      created_at:
                        type: string
                        description: >-
                          `ISO 8601` timestamp representing the time of the
                          transaction
                      resource:
                        type: string
                        const: claimed_reward
                      claimed_reward:
                        type: object
                        properties:
                          id:
                            type: number
                          claimed_at:
                            type: string
                            description: >-
                              `ISO 8601` timestamp indicating when this reward
                              was claimed
                          point_cost:
                            type: number
                            description: The number of points it cost to claim this reward
                          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:
                            anyOf:
                              - type: object
                                properties:
                                  kind:
                                    type: string
                                    enum:
                                      - cart
                                      - checkout
                                      - custom
                                  token:
                                    type: string
                                required:
                                  - kind
                                  - token
                                additionalProperties: false
                              - type: 'null'
                            description: >-
                              For session-based rewards, this includes
                              information about the session in which the reward
                              was claimed
                          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
                        description: The claimed reward linked to this transaction
                    required:
                      - id
                      - customer
                      - points_approved
                      - points_pending
                      - created_at
                      - resource
                      - claimed_reward
                    additionalProperties: false
                    title: Reward
            cursor:
              type: object
              properties:
                prev:
                  type:
                    - string
                    - 'null'
                next:
                  type:
                    - string
                    - 'null'
              required:
                - prev
                - next
              additionalProperties: false
          required:
            - transactions
            - cursor
          additionalProperties: false
          title: JSON
        - type: string
          title: CSV
    TransactionActivity:
      type: object
      properties:
        id:
          type: number
          description: Unique ID of the activity in LoyaltyLion
        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:
          type: number
          description: The value of the activity, in points
        state:
          type: string
          enum:
            - pending
            - declined
            - approved
            - void
            - expired
        customer:
          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
          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
        created_at:
          type: string
          description: An `ISO 8601` timestamp representing the time of the activity
        rule:
          type: object
          properties:
            id:
              type:
                - number
                - 'null'
            name:
              type:
                - string
                - 'null'
            title:
              type:
                - string
                - 'null'
          additionalProperties: false
          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`
        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
      title: Basic Activity
    TransactionActivityWithOrder:
      type: object
      properties:
        id:
          type: number
          description: Unique ID of the activity in LoyaltyLion
        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:
          type: number
          description: The value of the activity, in points
        state:
          type: string
          enum:
            - pending
            - declined
            - approved
            - void
            - expired
        customer:
          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
          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
        created_at:
          type: string
          description: An `ISO 8601` timestamp representing the time of the activity
        rule:
          type: object
          properties:
            id:
              type:
                - number
                - 'null'
            name:
              type:
                - string
                - 'null'
            title:
              type:
                - string
                - 'null'
          additionalProperties: false
          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`
        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
      title: Activity with Order
    RewardRedeemableFulfilment:
      type: object
      properties:
        redeemable_type:
          type: string
          const: fulfilment
        fulfilled:
          type: boolean
          description: Indicates if this reward has been fulfilled
        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
      title: Fulfilment
    RewardRedeemablePosAction:
      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
      title: POS Action
    RewardRedeemableProduct:
      type: object
      properties:
        redeemable_type:
          type: string
          const: product
        product:
          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
          description: Information about the product that was redeemed
        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
      title: Product
    RewardRedeemableGiftCard:
      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:
          type: string
          description: The last few characters of the gift card code
        currency:
          type: string
          description: >-
            ISO 4217 currency code representing the gift card currency, e.g.
            `usd`
          example: usd
        balance:
          type: number
          description: The current balance on the gift card
        initial_value:
          type: number
          description: The initial balance of the gift card
        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
      title: Gift Card
    RewardRedeemableVoucher:
      type: object
      properties:
        redeemable_type:
          type: string
          const: voucher
        code:
          type: string
          description: The voucher/coupon code that can be applied to a cart
        discount_amount:
          type: number
          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
        usage_count:
          type: number
          description: >-
            The number of times this voucher has been applied. Some voucher
            types, such as subscription vouchers, may be used multiple times.
        usage_limit:
          type: number
          description: The maximum number of times this voucher may be applied
        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
      title: Voucher
    RewardActiveSubscriptionDiscountVoucher:
      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
      title: Active Subscription Discount Voucher
    RewardProductCart:
      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
      title: Product (cart)
    RewardCartDiscountVoucher:
      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
      title: Cart Discount Voucher
    RewardCheckoutRedemption:
      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
      title: Checkout Redemption Reward
    RewardCollectionVoucher:
      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
      title: Collection Voucher
    RewardCustom:
      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
          enum:
            - store_fulfilment
            - voucher
        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
      title: Custom Reward
    RewardFreeShippingVoucher:
      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
      title: Free Shipping Voucher
    RewardGiftCard:
      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
      title: Gift Card
    RewardProductVoucher:
      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
      title: Product (voucher)
    RewardSubscriptionProduct:
      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
      title: Product (subscription)
    BuyWithPointsRewardMinimumRequirementsCost:
      type: object
      properties:
        type:
          type: string
          const: cost
        cost:
          type: number
      required:
        - type
        - cost
      additionalProperties: false
      title: Cost
    BuyWithPointsRewardMinimumRequirementsQuantity:
      type: object
      properties:
        type:
          type: string
          const: quantity
        quantity:
          type: number
      required:
        - type
        - quantity
      additionalProperties: false
      title: Quantity
  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

````