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

# Redeem Reward



## OpenAPI

````yaml /api-reference/v2/openapi.json POST /v2/customers/{merchant_id}/claimed_rewards
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}/claimed_rewards:
    post:
      tags:
        - customers
      operationId: customers.claimRewardForCustomer
      parameters:
        - name: merchant_id
          in: path
          required: true
          schema:
            type: string
          description: >-
            The ID of the customer in your platform or ecommerce store. The
            reward will be redeemed for this customer
      requestBody:
        description: Body
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomersClaimRewardForCustomerRequestBody'
      responses:
        '201':
          description: '201'
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/CustomersClaimRewardForCustomerResponseBody
        '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:
            - write_customers
        - SiteTokenSecret: []
components:
  schemas:
    CustomersClaimRewardForCustomerRequestBody:
      type: object
      properties:
        reward_id:
          description: The ID of the reward to claim
          type: number
        multiplier:
          description: >-
            The multiplier of the reward being claimed. Only supported for
            `custom` reward type
          type: number
        variant_id:
          description: >-
            The Shopify variant being claimed. Required when the reward is a
            seamless product reward
          type: string
        shopify_action_id:
          type: string
        attribution:
          type: string
          enum:
            - redemption_notification
        session:
          type: object
          properties:
            kind:
              type: string
              enum:
                - cart
                - checkout
            token:
              type: string
          required:
            - kind
          additionalProperties: false
      required:
        - reward_id
      additionalProperties: false
    CustomersClaimRewardForCustomerResponseBody:
      type: object
      properties:
        claimed_reward:
          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:
        - claimed_reward
      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

````