> ## 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 Available Rewards

Returns a list of the rewards currently available to this customer.

Rewards are available to a customer for the purposes of this API if:

* The reward is enabled
* If a customer is in a loyalty tier, the reward is available on that tier
* The reward is supported based on your platform (see table below)

Rewards will be returned even if the customer does not currently have enough
points to redeem them.

## Supported rewards by platform

| Platform                 | Supported rewards                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Shopify                  | [one-off discount rewards](https://help.loyaltylion.com/en/articles/5998069-reward-discount-flat-and-percentage), [custom rewards](https://help.loyaltylion.com/en/articles/1965661-reward-custom-reward), [checkout rewards](https://help.loyaltylion.com/en/articles/1965711-shopify-plus-points-slider-checkout-redemption), [free product vouchers](https://help.loyaltylion.com/en/articles/1965659-rewards-free-product-voucher), [seamless free products](https://help.loyaltylion.com/en/articles/1965660-reward-free-product-seamless) |
| Adobe Commerce (Magento) | [one-off discount rewards](https://help.loyaltylion.com/en/articles/5998069-reward-discount-flat-and-percentage), [custom rewards](https://help.loyaltylion.com/en/articles/1965661-reward-custom-reward), [free product vouchers](https://help.loyaltylion.com/en/articles/1965659-rewards-free-product-voucher)                                                                                                                                                                                                                               |
| BigCommerce              | [one-off discount rewards](https://help.loyaltylion.com/en/articles/5998069-reward-discount-flat-and-percentage), [custom rewards](https://help.loyaltylion.com/en/articles/1965661-reward-custom-reward), [free product vouchers](https://help.loyaltylion.com/en/articles/1965659-rewards-free-product-voucher)                                                                                                                                                                                                                               |
| Custom                   | [custom rewards](https://help.loyaltylion.com/en/articles/1965661-reward-custom-reward)                                                                                                                                                                                                                                                                                                                                                                                                                                                         |


## OpenAPI

````yaml /api-reference/v2/openapi.json GET /v2/customers/{merchant_id}/available_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}/available_rewards:
    get:
      tags:
        - customers
      operationId: customers.listAvailableRewards
      parameters:
        - name: merchant_id
          in: path
          required: true
          schema:
            type: string
          description: The ID of the customer in your platform or ecommerce store
        - name: site_id
          in: query
          description: >-
            By default this endpoint will return rewards across all sites in
            your program. If you have a multi-site program, you can specify a
            site ID here to return only rewards for that site
          schema:
            type: number
        - name: country
          in: query
          description: >-
            An ISO 3166-1 alpha-2 country code. When provided, only rewards
            available in this country are returned. Rewards with no country
            restriction are always included.
          schema:
            type: string
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomersListAvailableRewardsResponseBody'
        '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_customers
        - SiteTokenSecret: []
components:
  schemas:
    CustomersListAvailableRewardsResponseBody:
      type: object
      properties:
        rewards:
          type: array
          items:
            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'
      required:
        - rewards
      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

````