> ## 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:
            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: 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:
        - 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

````