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

# Validate Stackable Discounts (client-side)

> Verify redeemables provided in the request. This method is accessible through public keys which you can use in client side requests coming from mobile and web browser applications.



## OpenAPI

````yaml /openapi/client-side.json post /client/v1/validations
openapi: 3.0.1
info:
  title: Voucherify API - Client-side
  version: v2018-08-01
  description: >-
    Voucherify promotion engine REST API. Please see
    https://docs.voucherify.io/docs for more details.
  contact:
    name: Voucherify Team
    url: https://www.voucherify.io/contact-support
    email: support@voucherify.io
  termsOfService: https://www.voucherify.io/legal/subscription-agreement
  license:
    name: MIT
    url: https://github.com/voucherifyio/voucherify-js-sdk/blob/main/LICENSE
servers:
  - url: https://{cluster}.voucherify.io
    description: Base URL
    variables:
      cluster:
        default: api
        enum:
          - api
          - us1.api
          - as1.api
          - download
          - us1.download
          - as1.download
security: []
paths:
  /client/v1/validations:
    post:
      tags:
        - Client-side
      summary: Validate Stackable Discounts (client-side)
      description: >-
        Verify redeemables provided in the request. This method is accessible
        through public keys which you can use in client side requests coming
        from mobile and web browser applications.
      operationId: validate-stacked-discounts-client-side
      parameters:
        - $ref: '#/components/parameters/origin'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClientValidationsValidateRequestBody'
            examples:
              1 Redeemable:
                value:
                  customer:
                    source_id: sample_customer
                    metadata:
                      key: value
                  options:
                    expand:
                      - order
                      - redeemable
                      - category
                  redeemables:
                    - object: voucher
                      id: voucher-code
                  session:
                    type: LOCK
                  order:
                    amount: 55000
                    status: PAID
                    items:
                      - quantity: 2
                        price: 20000
                        source_id: sample product1
                        related_object: product
                        product:
                          metadata:
                            key: value
                      - quantity: 1
                        price: 15000
                        source_id: sample product2
                        related_object: product
                        product:
                          metadata:
                            key: value
                    metadata:
                      key: value
              5 Redeemables:
                value:
                  customer:
                    source_id: 36_bob
                  options:
                    expand:
                      - order
                      - redeemable
                      - category
                  redeemables:
                    - object: voucher
                      id: GNcuPKGe
                    - object: voucher
                      id: AnsvocvP
                      reward:
                        id: rew_EPx1hCTpqzF0HW1z9NKckZH4
                    - object: voucher
                      id: M3X8IwW8
                      gift:
                        credits: 100
                    - object: promotion_tier
                      id: promo_DE1N30D731Tg2F6NoMwNas2W
                    - object: promotion_tier
                      id: promo_NDHgTg4VnOLYNjk9r7WOmQxf
                  session:
                    type: LOCK
                  order:
                    items:
                      - sku_id: sku_0a3efc90375d1217e2
                        quantity: 1
                      - product_id: prod_0bc3bd8a4e072c5275
                        quantity: 1
        required: true
      responses:
        '200':
          description: >-
            Depending on your project settings: all redeemables must be valid or
            just one must be valid to result as valid validation. Read more in
            the [Stacking Rule Documentation](/orchestrate/stacking-rules).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientValidationsValidateResponseBody'
        '400':
          description: >-
            Returns an error if the payload is missing an `"object"` or `"id"`
            property in the redeemables array, if you add more than one
            promotion stack or attempt to join stacks with vouchers/promotion
            tiers.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/e_400_invalid_payload'
              examples:
                Invalid payload:
                  value:
                    code: 400
                    key: invalid_payload
                    message: Invalid payload
                    details: >-
                      Property .redeemables[1] should have required property
                      'id'
                    request_id: v-0b4ff38ab8c8164573
                Duplicated Redeemables:
                  value:
                    code: 400
                    key: duplicated_redeemables
                    message: Duplicated redeemables detected
                    details: Duplicated redeemables detected in one redemption
                    request_id: v-0b4ffecfb408165300
                Invalid Redeemables:
                  value:
                    code: 400
                    key: invalid_redeemables
                    message: Invalid redeemables
                    details: Promotion Stack cannot be use with other redeemables
                    request_id: v-0b5007812f48165d6b
      security:
        - X-Client-Application-Id: []
          X-Client-Token: []
        - X-Voucherify-OAuth:
            - client_api
            - client_validations
components:
  parameters:
    origin:
      name: origin
      in: header
      required: true
      schema:
        $ref: '#/components/schemas/ParameterOrigin'
      description: Indicates the origin (scheme, hostname, and port).
  schemas:
    ClientValidationsValidateRequestBody:
      description: Request body schema for **POST** `v1/validations`.
      title: Client Validations Validate Request Body
      allOf:
        - type: object
          properties:
            options:
              type: object
              description: Configure parameters returned in the response.
              properties:
                expand:
                  type: array
                  description: >-
                    The expand array lets you configure the parameters included
                    in the response. Depending on the strings included in the
                    array, the response will contain different details. 


                    | **Expand Option** | **Response Body** |

                    |:---|:---|

                    | ["order"] | - Same response as fallback response (without
                    an options object).<br />- Order data with calculated
                    discounts are listed in each child redeemable object.<br />-
                    Metadata not included for each discount type. |

                    | ["redeemable"] | Expands redeemable objects by including
                    `metadata` for each discount type. |

                    | ["order", "redeemable"] | - Order data with calculated
                    discounts are listed in each child redeemable object.<br />-
                    Includes `metadata` for each discount type. |

                    | ["category"] | - Returns an expanded `categories` object,
                    showing details about the category. |
                  items:
                    type: string
                    enum:
                      - order
                      - redemption
                      - redeemable
                      - category
        - $ref: '#/components/schemas/StackableValidateRedeemBase'
    ClientValidationsValidateResponseBody:
      description: Response body schema for **POST** `/validations`.
      title: Client Validations Validate Response Body
      allOf:
        - $ref: '#/components/schemas/ValidationsValidateResponseBody'
    e_400_invalid_payload:
      title: Invalid Payload
      type: object
      description: 'Error: Bad Request &rarr; Invalid Payload'
      properties:
        code:
          type: integer
          default: 400
          description: Error's HTTP status code.
        key:
          type: string
          default: invalid_payload
          description: Short string describing the kind of error which occurred.
        message:
          type: string
          default: Invalid payload
          description: A human-readable message providing a short description of the error.
        details:
          type: string
          description: A human-readable message providing more details about the error.
        request_id:
          type: string
          example: v-0a884c6be8c3756f42
          description: >-
            This ID is useful when troubleshooting and/or finding the root cause
            of an error response by our support team.
    ParameterOrigin:
      type: string
      format: hostname
    StackableValidateRedeemBase:
      title: Stackable Validate Redeem Base
      type: object
      properties:
        redeemables:
          type: array
          minItems: 1
          maxItems: 30
          description: >-
            An array of redeemables. You can combine `voucher`(s) and
            `promotion_tier`(s). Alternatively, send one unique`promotion_stack`
            in the array. Each unique redeemable can be sent in one request only
            once.
          items:
            title: Stackable Validate Redeem Base Redeemables Item
            oneOf:
              - $ref: '#/components/schemas/RedeemVoucher'
              - $ref: '#/components/schemas/RedeemPromotionTier'
              - $ref: '#/components/schemas/RedeemPromotionStack'
              - $ref: '#/components/schemas/RedeemGiftCard'
              - $ref: '#/components/schemas/RedeemLoyaltyCard'
        order:
          description: Order information.
          allOf:
            - $ref: '#/components/schemas/Order'
        customer:
          description: Customer's information.
          allOf:
            - $ref: '#/components/schemas/Customer'
        session:
          description: >-
            Schema model for session lock object. The session object is required
            to establish a session between multiple parallel validation and
            redemption requests. If you only send the type parameter in the
            request, then by default the session lock will be established for 7
            days. Read more on establishing a validation session.
          allOf:
            - $ref: '#/components/schemas/Session'
        tracking_id:
          description: Is correspondent to Customer's source_id
          type: string
        metadata:
          type: object
          description: >-
            A set of key/value pairs that you can attach to a redemption object.
            It can be useful for storing additional information about the
            redemption in a structured format.
      required:
        - redeemables
    ValidationsValidateResponseBody:
      title: Validations Validate Response Body
      description: Response body schema for **POST** `v1/validations`.
      type: object
      properties:
        id:
          type: string
          description: Unique identifier of the validation, assigned by Voucherify.
          example: valid_101740aa2869354c6d
        valid:
          type: boolean
          description: >-
            The result of the validation. It takes all of the redeemables into
            account and returns a `false` if at least one redeemable is
            inapplicable. Returns `true` if all redeemables are applicable.
        redeemables:
          type: array
          description: >-
            Lists validation results of each redeemable. If 
            `redeemables_application_mode` is `PARTIAL` in the `stacking_rules`
            object, all redeemables here will be `APPLICABLE`. Read more in [the
            Stacking rules article]/orchestrate/stacking-rules.
          items:
            title: Validations Validate All Response Body Redeemables Item
            oneOf:
              - $ref: '#/components/schemas/ValidationsRedeemableApplicable'
              - $ref: '#/components/schemas/ValidationsRedeemableInapplicable'
              - $ref: '#/components/schemas/ValidationsRedeemableSkipped'
        skipped_redeemables:
          type: array
          description: Lists validation results of each skipped redeemable.
          items:
            allOf:
              - $ref: '#/components/schemas/ValidationsRedeemableSkipped'
        inapplicable_redeemables:
          type: array
          description: Lists validation results of each inapplicable redeemable.
          items:
            allOf:
              - $ref: '#/components/schemas/ValidationsRedeemableInapplicable'
        order:
          allOf:
            - $ref: '#/components/schemas/OrderCalculated'
            - type: object
              properties:
                items:
                  type: array
                  description: >-
                    Array of items applied to the order. It can include up to
                    500 items.
                  items:
                    allOf:
                      - $ref: '#/components/schemas/OrderCalculatedItem'
                      - type: object
                        properties:
                          application_details:
                            $ref: '#/components/schemas/ApplicationDetails'
        tracking_id:
          type: string
          example: track_VAVo1/z+G2GI2LPw==
          description: Hashed customer source ID.
        session:
          $ref: '#/components/schemas/Session'
        stacking_rules:
          description: >-
            Defines stacking rules for redeemables. Read more in the [Stacking
            Rule Documentation](/orchestrate/stacking-rules).
          allOf:
            - $ref: '#/components/schemas/StackingRules'
      required:
        - valid
        - redeemables
        - stacking_rules
    RedeemVoucher:
      title: Voucher Redeemable
      type: object
      description: Validate or redeem a discount code.
      properties:
        object:
          type: string
          description: Redeemable object type.
          default: voucher
          enum:
            - voucher
        id:
          type: string
          description: Redeemable code.
      required:
        - object
        - id
    RedeemPromotionTier:
      title: Promotion Tier Redeemable
      type: object
      description: Validate or redeem a promotion tier.
      properties:
        object:
          type: string
          description: Redeemable object type.
          default: promotion_tier
          enum:
            - promotion_tier
        id:
          type: string
          description: 'Promotion tier unique id, such as: promo_Mwy9XpA0TLctSGriM5kum0qp'
      required:
        - object
        - id
    RedeemPromotionStack:
      title: Promotion Stack Redeemable
      type: object
      description: Validate or redeem a promotion stack.
      properties:
        object:
          type: string
          description: Redeemable object type.
          default: promotion_stack
          enum:
            - promotion_stack
        id:
          type: string
          description: 'Promotion stack unique id, such as: stack_KxSD0GahLUg9ULB6TseGfUHJ'
      required:
        - object
        - id
    RedeemGiftCard:
      title: Gift Card Redeemable
      description: Validate or redeem a gift card
      allOf:
        - $ref: '#/components/schemas/RedeemVoucher'
        - type: object
          properties:
            gift:
              type: object
              description: >-
                Contains information on the number of gift card credits that the
                customer wants to apply to the order.
              properties:
                credits:
                  type: integer
                  description: >-
                    The number of credits that the user wants to use from the
                    gift card to fulfill the order. The value of credits cannot
                    be higher than the current balance on the gift card. The
                    value is multiplied by 100 to represent 2 decimal places.
                    For example `10000 cents` for `$100.00`.
    RedeemLoyaltyCard:
      title: Loyalty Card Redeemable
      description: Validate or redeem a loyalty card
      allOf:
        - $ref: '#/components/schemas/RedeemVoucher'
        - type: object
          properties:
            reward:
              type: object
              description: >-
                Contains information about the reward that the customer wants to
                redeem and the number of points the customer is choosing to use
                for the reward.
              properties:
                id:
                  type: string
                  description: >-
                    Unique reward ID assigned by Voucherify. The reward must be
                    assigned to the campaign in order for the user to be able to
                    use the reward.
                  example: rew_EPx1hCTpqzF0HW1z9NKckZH4
                points:
                  type: integer
                  description: >-
                    The number of loyalty points that the user wants to spend in
                    order to fulfill the order using a **pay with points**
                    reward. The number of points cannot be higher than the
                    current balance on the loyalty card.
    Order:
      title: Order
      type: object
      description: Order information.
      allOf:
        - type: object
          properties:
            id:
              type: string
              description: >-
                Unique ID assigned by Voucherify of an existing order that will
                be linked to the redemption of this request.
        - $ref: '#/components/schemas/OrderBase'
    Customer:
      title: Customer
      allOf:
        - type: object
          title: Customer Id And Source Id
          properties:
            id:
              type: string
              description: The ID of an existing customer.
            source_id:
              type: string
              description: >-
                A unique identifier of the customer who validates a voucher. It
                can be a customer ID or email from a CRM system, database, or a
                third-party service. If you also pass a customer ID (unique ID
                assigned by Voucherify), the source ID will be ignored.
        - $ref: '#/components/schemas/CustomerBase'
    Session:
      type: object
      title: Session
      properties:
        key:
          type: string
          description: >-
            The session unique ID assigned by Voucherify or your own unique
            session ID. Sending an existing ID will result in overwriting an
            existing session. If no session key is provided, then a new ID will
            be generated.
        type:
          type: string
          default: LOCK
          enum:
            - LOCK
          description: This parameter is required to establish a new session.
        ttl:
          type: number
          description: >-
            Value for the period of time that the session is active. Units for
            this parameter are defined by the session.ttl_unit parameter.
        ttl_unit:
          type: string
          enum:
            - DAYS
            - HOURS
            - MICROSECONDS
            - MILLISECONDS
            - MINUTES
            - NANOSECONDS
            - SECONDS
          description: Defines the type of unit in which the session time is counted.
    ValidationsRedeemableApplicable:
      type: object
      title: Applicable Redeemable
      properties:
        status:
          type: string
          default: APPLICABLE
          enum:
            - APPLICABLE
          description: >-
            Indicates whether the redeemable can be applied or not applied based
            on the validation rules.
        id:
          type: string
          description: Redeemable ID, i.e. the voucher code.
        object:
          type: string
          description: Redeemable's object type.
          enum:
            - voucher
            - promotion_tier
        order:
          allOf:
            - $ref: '#/components/schemas/OrderCalculated'
            - type: object
              properties:
                items:
                  type: array
                  description: >-
                    Array of items applied to the order. It can include up to
                    500 items.
                  items:
                    $ref: '#/components/schemas/OrderCalculatedItem'
        applicable_to:
          $ref: '#/components/schemas/ApplicableToResultList'
        inapplicable_to:
          $ref: '#/components/schemas/InapplicableToResultList'
        result:
          description: >-
            Specifies the redeemable's end effect on the order. This object is
            unique to each type of redeemable.
          oneOf:
            - $ref: '#/components/schemas/RedeemableResultVoucherCode'
            - $ref: '#/components/schemas/RedeemableResultGiftCard'
            - $ref: '#/components/schemas/RedeemableResultLoyaltyCard'
            - $ref: '#/components/schemas/RedeemableResultPromotionTier'
            - $ref: '#/components/schemas/RedeemableResultPromotionStack'
        metadata:
          type: object
          description: >-
            The metadata object stores all custom attributes in the form of
            key/value pairs assigned to the redeemable.
        categories:
          type: array
          items:
            $ref: '#/components/schemas/CategoryWithStackingRulesType'
        campaign_name:
          type: string
          description: >-
            Campaign name. Displayed only if the `options.expand` is passed with
            a `redeemable` value in the validation request body.
        campaign_id:
          type: string
          description: >-
            Unique campaign ID assigned by Voucherify. Displayed only if the
            `options.expand` is passed with a `redeemable` value in the
            validation request body.
          example: camp_pqZjuhG6Mgtp4GD0zD7b8hA3
        name:
          type: string
          description: >-
            Name of the promotion tier. Displayed only if the `options.expand`
            is passed with a `redeemable` value in the validation request body.
      required:
        - status
        - id
        - object
        - result
    ValidationsRedeemableInapplicable:
      type: object
      title: Inapplicable Redeemable
      properties:
        status:
          type: string
          default: INAPPLICABLE
          enum:
            - INAPPLICABLE
          description: >-
            Indicates whether the redeemable can be applied or not applied based
            on the validation rules.
        id:
          type: string
          description: Redeemable ID, i.e. the voucher code.
        object:
          type: string
          description: Redeemable's object type.
          enum:
            - voucher
            - promotion_tier
        result:
          type: object
          description: >-
            Includes the error object with details about the reason why the
            redeemable is inapplicable
          properties:
            error:
              $ref: '#/components/schemas/Error'
            details:
              type: object
              description: >-
                Provides details about the reason why the redeemable is
                inapplicable.
              properties:
                message:
                  type: string
                  description: >-
                    Generic message from the `message` string shown in the
                    `error` object or the message configured in a validation
                    rule.
                key:
                  type: string
                  description: >-
                    Generic message from the `key` string shown in the `error`
                    object.
            bundle:
              $ref: '#/components/schemas/Bundle'
        metadata:
          type: object
          description: >-
            The metadata object stores all custom attributes in the form of
            key/value pairs assigned to the redeemable.
        categories:
          type: array
          items:
            $ref: '#/components/schemas/CategoryWithStackingRulesType'
        campaign_name:
          type: string
          description: >-
            Campaign name. Displayed only if the `options.expand` is passed with
            a `redeemable` value in the validation request body.
        campaign_id:
          type: string
          description: >-
            Unique campaign ID assigned by Voucherify. Displayed only if the
            `options.expand` is passed with a `redeemable` value in the
            validation request body.
          example: camp_pqZjuhG6Mgtp4GD0zD7b8hA3
        name:
          type: string
          description: >-
            Name of the promotion tier. Displayed only if the `options.expand`
            is passed with a `redeemable` value in the validation request body.
      required:
        - status
        - id
        - object
        - result
    ValidationsRedeemableSkipped:
      type: object
      title: Skipped Redeemable
      properties:
        status:
          type: string
          default: SKIPPED
          enum:
            - SKIPPED
          description: >-
            Indicates whether the redeemable can be applied or not applied based
            on the validation rules.
        id:
          type: string
          description: Redeemable ID, i.e. the voucher code.
        object:
          type: string
          description: Redeemable's object type.
          enum:
            - voucher
            - promotion_tier
        result:
          type: object
          description: Provides details about the reason why the redeemable is skipped.
          properties:
            details:
              oneOf:
                - $ref: >-
                    #/components/schemas/ValidationsRedeemableSkippedResultLimitExceeded
                - $ref: >-
                    #/components/schemas/ValidationsRedeemableSkippedResultCategoryLimitExceeded
                - $ref: >-
                    #/components/schemas/ValidationsRedeemableSkippedResultRedeemablesLimitExceeded
                - $ref: >-
                    #/components/schemas/ValidationsRedeemableSkippedResultRedeemablesCategoryLimitExceeded
                - $ref: >-
                    #/components/schemas/ValidationsRedeemableSkippedResultExclusionRulesNotMet
                - $ref: >-
                    #/components/schemas/ValidationsRedeemableSkippedResultPrecedingValidationFailed
        metadata:
          type: object
          description: >-
            The metadata object stores all custom attributes in the form of
            key/value pairs assigned to the redeemable.
        categories:
          type: array
          items:
            $ref: '#/components/schemas/CategoryWithStackingRulesType'
        campaign_name:
          type: string
          description: >-
            Campaign name. Displayed only if the `options.expand` is passed with
            a `redeemable` value in the validation request body.
        campaign_id:
          type: string
          description: >-
            Unique campaign ID assigned by Voucherify. Displayed only if the
            `options.expand` is passed with a `redeemable` value in the
            validation request body.
          example: camp_pqZjuhG6Mgtp4GD0zD7b8hA3
        name:
          type: string
          description: >-
            Name of the promotion tier. Displayed only if the `options.expand`
            is passed with a `redeemable` value in the validation request body.
      required:
        - status
        - id
        - object
        - result
    OrderCalculated:
      title: Order Calculated No Customer Data
      type: object
      description: Order information.
      properties:
        id:
          type: string
          description: >-
            Unique ID assigned by Voucherify of an existing order that will be
            linked to the redemption of this request.
        source_id:
          type: string
          nullable: true
          description: >-
            Unique source ID of an existing order that will be linked to the
            redemption of this request.
        status:
          type: string
          description: The order status.
          enum:
            - CREATED
            - PAID
            - CANCELED
            - FULFILLED
        amount:
          type: integer
          description: >-
            This is the sum of the order items' amounts. It is expressed as an
            integer in the smallest currency unit (e.g. 100 cents for $1.00).
        initial_amount:
          type: integer
          description: >-
            This is the sum of the order items' amounts before any discount or
            other effect (e.g. add missing units) is applied. It is expressed as
            an integer in the smallest currency unit (e.g. 100 cents for $1.00).
        discount_amount:
          type: integer
          description: >-
            Sum of all order-level discounts applied to the order. It is
            expressed as an integer in the smallest currency unit (e.g. 100
            cents for $1.00).
        items_discount_amount:
          type: integer
          description: >-
            Sum of all product-specific discounts applied to the order. It is
            expressed as an integer in the smallest currency unit (e.g. 100
            cents for $1.00).
        total_discount_amount:
          type: integer
          description: >-
            Sum of all order-level AND all product-specific discounts applied to
            the order. It is expressed as an integer in the smallest currency
            unit (e.g. 100 cents for $1.00).
        total_amount:
          type: integer
          description: >-
            Order amount after undoing all the discounts through the rollback
            redemption. It is expressed as an integer in the smallest currency
            unit (e.g. 100 cents for $1.00).
        applied_discount_amount:
          type: integer
          description: >-
            This field shows the order-level discount applied. It is expressed
            as an integer in the smallest currency unit (e.g. 100 cents for
            $1.00).
        items_applied_discount_amount:
          type: integer
          description: >-
            Sum of all product-specific discounts applied in a particular
            request. It is expressed as an integer in the smallest currency unit
            (e.g. 100 cents for $1.00).  

            `sum(items, i => i.applied_discount_amount)`
        total_applied_discount_amount:
          type: integer
          description: >-
            Sum of all order-level AND all product-specific discounts applied in
            a particular request. It is expressed as an integer in the smallest
            currency unit (e.g. 100 cents for $1.00).  

            `total_applied_discount_amount` = `applied_discount_amount` +
            `items_applied_discount_amount`
        metadata:
          type: object
          description: >-
            A set of custom key/value pairs that you can attach to an order. It
            can be useful for storing additional information about the order in
            a structured format. It can be used to define business validation
            rules or discount formulas.
        object:
          type: string
          description: The type of the object represented by JSON.
          default: order
          enum:
            - order
        created_at:
          type: string
          example: '2021-12-22T10:13:06.487Z'
          description: >-
            Timestamp representing the date and time when the order was created.
            The value is shown in the ISO 8601 format.
          format: date-time
        updated_at:
          type: string
          nullable: true
          example: '2021-12-22T10:14:45.316Z'
          format: date-time
          description: >-
            Timestamp representing the date and time when the order was last
            updated in ISO 8601 format.
        customer_id:
          type: string
          nullable: true
          description: >-
            Unique customer identifier of the customer making the purchase. The
            ID is assigned by Voucherify.
          example: cust_7iUa6ICKyU6gH40dBU25kQU1
        referrer_id:
          type: string
          nullable: true
          description: Unique referrer ID.
          example: cust_nM4jqPiaXUvQdVSA6vTRUnix
        customer:
          allOf:
            - $ref: '#/components/schemas/CustomerId'
        referrer:
          allOf:
            - $ref: '#/components/schemas/ReferrerId'
        redemptions:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/OrderRedemptionsEntry'
    OrderCalculatedItem:
      type: object
      title: Order Item Calculated
      properties:
        id:
          type: string
          description: Unique identifier of the order line item.
        sku_id:
          type: string
          description: Unique identifier of the SKU. It is assigned by Voucherify.
        product_id:
          type: string
          description: Unique identifier of the product. It is assigned by Voucherify.
        related_object:
          type: string
          enum:
            - product
            - sku
          description: >-
            Used along with the source_id property, can be set to either sku or
            product.
        source_id:
          type: string
          description: >-
            The merchant's product/SKU ID (if it is different from the
            Voucherify product/SKU ID). It is useful in the integration between
            multiple systems. It can be an ID from an eCommerce site, a
            database, or a third-party service.
        quantity:
          type: integer
          description: The quantity of the particular item in the cart.
        discount_quantity:
          type: integer
          description: Number of dicounted items.
        initial_quantity:
          type: integer
          description: >-
            A positive integer in the smallest unit quantity representing the
            total amount of the order; this is the sum of the order items'
            quantity.
        amount:
          type: integer
          description: The total amount of the order item (price * quantity).
        discount_amount:
          type: integer
          description: Sum of all order-item-level discounts applied to the order.
        applied_discount_amount:
          type: integer
          description: This field shows the order-level discount applied.
        applied_discount_quantity:
          type: integer
          description: Number of the discounted items applied in the transaction.
        applied_quantity:
          type: integer
          description: >-
            Quantity of items changed by the application of a new quantity
            items. It can be positive when an item is added or negative if an
            item is replaced.
        applied_quantity_amount:
          type: integer
          description: >-
            Amount for the items changed by the application of a new quantity
            items. It can be positive when an item is added or negative if an
            item is replaced.
        initial_amount:
          type: integer
          description: >-
            A positive integer in the smallest currency unit (e.g. 100 cents for
            $1.00) representing the total amount of the order. This is the sum
            of the order items' amounts.
        price:
          type: integer
          description: >-
            Unit price of an item. The value is multiplied by 100 to represent 2
            decimal places. For example `10000 cents` for `$100.00`.
        subtotal_amount:
          type: integer
          description: >-
            Final order item amount after the applied item-level discount.  If
            there are no item-level discounts applied, this item is equal to the
            `amount`.   

            `subtotal_amount`=`amount`-`applied_discount_amount`
        product:
          type: object
          description: An object containing details of the related product.
          properties:
            id:
              type: string
              description: >-
                A unique identifier that represents the product and is assigned
                by Voucherify.
            source_id:
              type: string
              description: >-
                The merchant's product ID (if it is different than Voucherify's
                product ID). It is really useful in case of integration between
                multiple systems. It can be an ID from an eCommerce site, a
                database or a 3rd party service.
            override:
              type: boolean
              description: >-
                The override set to `true` is used to store the product
                information in the system. If the product does not exist, it
                will be created with a source_id; if it does exist, the provided
                values for the name, price, and metadata will replace those
                already stored in the system.
            name:
              type: string
              description: Product name.
            metadata:
              type: object
              description: >-
                A set of custom key/value pairs that you can attach to a
                product. It can be useful for storing additional information
                about the product in a structured format. It can be used to
                create product collections.
            price:
              type: number
              description: >-
                Product price. A positive integer in the smallest currency unit
                (e.g. 100 cents for $1.00).
        sku:
          type: object
          description: An object containing details of the related SKU.
          properties:
            id:
              type: string
              description: >-
                A unique identifier that represents the SKU and is assigned by
                Voucherify.
            source_id:
              type: string
              description: >-
                The merchant's SKU ID (if it is different than Voucherify's SKU
                ID). It is really useful in case of integration between multiple
                systems. It can be an ID from an eCommerce site, a database or a
                3rd party service.
            override:
              type: boolean
              description: >-
                The override set to `true` is used to store the product
                information in the system. If the product does not exist, it
                will be created with a source_id; if it does exist, the provided
                values for the name, price, and metadata will replace those
                already stored in the system.
            sku:
              type: string
              description: The SKU name.
            price:
              type: number
              description: >-
                SKU price. A positive integer in the smallest currency unit
                (e.g. 100 cents for $1.00).
            metadata:
              type: object
              description: >-
                A set of custom key/value pairs that you can attach to an SKU.
                It can be useful for storing additional information about the
                SKU in a structured format. It can be used to create product
                collections.
        object:
          type: string
          default: order_item
          enum:
            - order_item
          description: The type of the object represented by JSON.
        metadata:
          type: object
          description: >-
            A set of custom key/value pairs that you can attach to an item
            object. It can be useful for storing additional information about
            the item in a structured format. It can be used to define business
            validation rules or discount formulas.
      required:
        - object
    ApplicationDetails:
      type: array
      description: >-
        Array containing details about the items that are replaced and the items
        that are replacements for discounts with the `REPLACE_ITEMS` effect.
      items:
        type: object
        description: Object representing item replacement.
        properties:
          source_index:
            type: integer
            description: >-
              Index number of the source item that is replaced. The enumeration
              starts from `0`, which represents the first item in the request,
              e.g., if the replaced item is passed as the second in the request,
              `source_index` equals `3`.
            minimum: 0
          source_applied_quantity:
            type: integer
            description: Number of source units that are replaced.
            maximum: -1
          source_applied_quantity_amount:
            type: integer
            description: >-
              Amount equal to the price of the units that are replaced.
              Determines the change of the amount of the source item quantity.
            maximum: 0
          target_index:
            type: integer
            description: >-
              Index number of the target item that is a replacement of the
              source item. The enumeration continues the values for the order
              items, e.g. if there are three items in the request,
              `target_index` equals `3`, as enumeration starts from `0`.
          target_applied_quantity:
            type: integer
            description: Number of added target units that are replacements.
          target_applied_quantity_amount:
            type: integer
            description: >-
              Amount equal to the price of the units that are replacements.
              Determines the change in the amount of the target item quantity.
          target_applied_discount_amount:
            type: integer
            description: >-
              Discount amount applied to the target item with regard to the
              replacement. Equals the `target_applied_quantity_amount` minus
              `source_applied_quantity_amount`.
    StackingRules:
      type: object
      title: Stacking Rules
      description: >-
        Defines stacking rules for redeemables. Read more in the [Stacking Rule
        Documentation](/orchestrate/stacking-rules).
      properties:
        redeemables_limit:
          type: integer
          description: >-
            Defines how many redeemables can be sent in one request. Note: more
            redeemables means more processing time.
          default: 30
          maximum: 30
          minimum: 1
        applicable_redeemables_limit:
          type: integer
          description: >-
            Defines how many redeemables can be applied in one request. The
            number must be less than or equal to `redeemables_limit`. For
            example, a user can select 30 discounts but only 5 will be applied
            to the order and the remaining will be `SKIPPED` according to the
            `redeemables_sorting_rule`.
          default: 5
          maximum: 30
          minimum: 1
        applicable_redeemables_per_category_limit:
          type: integer
          description: >-
            Defines how many redeemables with the same category can be applied
            in one request. The number must be less than or equal to
            `applicable_redeemables_limit`. The ones above the limit will be
            `SKIPPED` according to the `redeemables_sorting_rule`.
          default: 1
          maximum: 30
          minimum: 1
        applicable_redeemables_category_limits:
          type: object
          description: >-
            Lists categories by category IDs (keys) and defines their limits
            (values) of applicable redeemables that belong to campaigns with
            that category.
          additionalProperties:
            type: integer
            description: Limit of applicable redeemables per category.
            minimum: 1
            maximum: 10
        applicable_exclusive_redeemables_limit:
          type: integer
          description: >-
            Defines how many redeemables with an assigned exclusive category can
            be applied in one request. The ones above the limit will be
            `SKIPPED` according to the `redeemables_sorting_rule`.
          default: 1
          maximum: 5
          minimum: 1
        applicable_exclusive_redeemables_per_category_limit:
          type: integer
          description: >-
            Defines how many redeemables with an exclusive category per category
            in stacking rules can be applied in one request. The ones above the
            limit will be `SKIPPED` according to the `redeemables_sorting_rule`.
          default: 1
          maximum: 5
          minimum: 1
        exclusive_categories:
          type: array
          description: >-
            Lists the IDs of exclusive categories. A redeemable from a campaign
            with an exclusive category is the only redeemable to be redeemed
            when applied with redeemables from other campaigns unless these
            campaigns are exclusive or joint.
          items:
            type: string
        joint_categories:
          type: array
          description: >-
            Lists the IDs of the joint categories. A campaign with a joint
            category is always applied regardless of the exclusivity of other
            campaigns.
          items:
            type: string
        redeemables_application_mode:
          type: string
          description: >-
            Defines the application mode for redeemables.

            `"ALL"` means that all redeemables must be validated for the
            redemption to be successful.

            `"PARTIAL"` means that only those redeemables that can be validated
            will be redeemed. The redeemables that fail validaton will be
            skipped.
          enum:
            - ALL
            - PARTIAL
        redeemables_sorting_rule:
          type: string
          description: >-
            Defines redeemables sorting rule. `CATEGORY_HIERARCHY` means that
            redeemables are applied oaccording to the category priority.
            `REQUESTED_ORDER` means that redeemables are applied in the sequence
            provided in the request.
          enum:
            - CATEGORY_HIERARCHY
            - REQUESTED_ORDER
          default: REQUESTED_ORDER
        redeemables_products_application_mode:
          type: string
          description: >-
            Defines redeemables products application mode. `STACK` means that
            multiple discounts can be applied to a product. `ONCE` means that
            only one discount can be applied to the same product.
          enum:
            - STACK
            - ONCE
        redeemables_no_effect_rule:
          type: string
          description: >-
            Defines redeemables no effect rule. `REDEEM_ANYWAY` means that the
            redeemable will be redeemed regardless of any restrictions or
            conditions in place. `SKIP` means that the redeemable will be
            processed only when an applicable effect is calculated.
          enum:
            - REDEEM_ANYWAY
            - SKIP
        no_effect_skip_categories:
          type: array
          description: >-
            Lists category IDs. Redeemables with a given category are skipped
            even if the `redeemables_no_effect_rule` is set to `REDEEM_ANYWAY`.
            Category IDs can't overlap with the IDs in
            `no_effect_redeem_anyway_categories`.
          items:
            type: string
        no_effect_redeem_anyway_categories:
          type: array
          description: >-
            Lists category IDs. Redeemables with a given category are redeemed
            anyway even if the `redeemables_no_effect_rule` is set to `SKIP`.
            Category IDs can't overlap with the IDs in
            `no_effect_skip_categories`.
          items:
            type: string
        redeemables_rollback_order_mode:
          type: string
          description: >-
            Defines the rollback mode for the order. `WITH_ORDER` is a default
            setting. The redemption is rolled back together with the data about
            the order, including related discount values. `WITHOUT_ORDER` allows
            rolling the redemption back without affecting order data, including
            the applied discount values.
          enum:
            - WITH_ORDER
            - WITHOUT_ORDER
      required:
        - redeemables_limit
        - applicable_redeemables_limit
        - applicable_exclusive_redeemables_limit
        - applicable_redeemables_per_category_limit
        - applicable_redeemables_category_limits
        - exclusive_categories
        - joint_categories
        - redeemables_application_mode
        - redeemables_sorting_rule
        - redeemables_no_effect_rule
        - no_effect_skip_categories
        - no_effect_redeem_anyway_categories
        - redeemables_products_application_mode
        - redeemables_rollback_order_mode
    OrderBase:
      title: Order Base
      type: object
      description: Order information.
      properties:
        source_id:
          type: string
          nullable: true
          description: >-
            Unique source ID of an existing order that will be linked to the
            redemption of this request.


            For validation and redemption, if `source_id` is used with an
            existing order, the original order data will be used, like `items`,
            `amount`, and so on, not the one sent in the new request.
        status:
          type: string
          description: The order status.
          enum:
            - CREATED
            - PAID
            - CANCELED
            - FULFILLED
        amount:
          type: integer
          description: >-
            A positive integer in the smallest currency unit (e.g. 100 cents for
            $1.00) representing the total amount of the order. This is the sum
            of the order items' amounts.
        initial_amount:
          type: integer
          description: >-
            A positive integer in the smallest currency unit (e.g. 100 cents for
            $1.00) representing the total amount of the order. This is the sum
            of the order items' amounts.
        discount_amount:
          type: integer
          description: >-
            Sum of all order-level discounts applied to the order. It is
            expressed as an integer in the smallest currency unit (e.g. 100
            cents for $1.00).
        items:
          type: array
          description: Array of items applied to the order. It can include up to 500 items.
          items:
            $ref: '#/components/schemas/OrderItem'
        metadata:
          type: object
          description: >-
            A set of custom key/value pairs that you can attach to an order. It
            can be useful for storing additional information about the order in
            a structured format. It can be used to define business validation
            rules or discount formulas.
    CustomerBase:
      title: Customer Base
      type: object
      properties:
        name:
          type: string
          description: Customer's first and last name.
        description:
          type: string
          description: An arbitrary string that you can attach to a customer object.
        email:
          type: string
          description: Customer's email address.
        phone:
          type: string
          description: >-
            Customer's phone number. This parameter is mandatory when you try to
            send out codes to customers via an SMS channel.
        birthday:
          type: string
          description: '`Deprecated`. ~~Customer''s birthdate; format YYYY-MM-DD~~.'
          format: date
        birthdate:
          type: string
          description: Customer's birthdate; format YYYY-MM-DD.
          format: date
        address:
          type: object
          nullable: true
          description: Customer's address.
          properties:
            city:
              type: string
              description: City
            state:
              type: string
              description: State
            line_1:
              type: string
              description: First line of address.
            line_2:
              type: string
              description: Second line of address.
            country:
              type: string
              description: Country.
            postal_code:
              type: string
              description: Postal code.
        metadata:
          type: object
          description: >-
            A set of custom key/value pairs that you can attach to a customer.
            The metadata object stores all custom attributes assigned to the
            customer. It can be useful for storing additional information about
            the customer in a structured format. This metadata can be used for
            validating whether the customer qualifies for a discount or it can
            be used in building customer segments.
    ApplicableToResultList:
      title: Applicable To Result List
      type: object
      properties:
        data:
          type: array
          description: Contains array of items to which the discount can apply.
          items:
            $ref: '#/components/schemas/ApplicableTo'
        total:
          type: integer
          minimum: 0
          description: >-
            Total number of objects defining included products, SKUs, or product
            collections.
        object:
          type: string
          default: list
          enum:
            - list
          description: The type of the object represented by JSON.
        data_ref:
          type: string
          description: The type of the object represented by JSON.
          default: data
          enum:
            - data
      required:
        - data
        - total
        - object
        - data_ref
    InapplicableToResultList:
      title: Inapplicable To Result List
      type: object
      properties:
        data:
          type: array
          description: Contains array of items to which the discount cannot apply.
          items:
            $ref: '#/components/schemas/InapplicableTo'
        total:
          type: integer
          minimum: 0
          description: >-
            Total number of objects defining included products, SKUs, or product
            collections.
        object:
          type: string
          default: list
          enum:
            - list
          description: The type of the object represented by JSON.
        data_ref:
          type: string
          description: The type of the object represented by JSON.
          default: data
          enum:
            - data
      required:
        - data
        - total
        - object
        - data_ref
    RedeemableResultVoucherCode:
      type: object
      title: Coupon Code
      description: This is a `result` object representing the results for a coupon code.
      properties:
        discount:
          description: >-
            Discount details about the type of discount to be applied for the
            redeemable.
          oneOf:
            - $ref: '#/components/schemas/DiscountAmount'
            - $ref: '#/components/schemas/DiscountUnit'
            - $ref: '#/components/schemas/DiscountUnitMultiple'
            - $ref: '#/components/schemas/DiscountPercent'
            - $ref: '#/components/schemas/DiscountFixed'
        bundle:
          $ref: '#/components/schemas/Bundle'
    RedeemableResultGiftCard:
      type: object
      title: Gift Card
      description: This is a `result` object representing the results for a gift card.
      properties:
        gift:
          description: Stores the amount of gift card credits to be applied.
          type: object
          properties:
            balance:
              type: integer
              description: >-
                Available funds at the moment of validation. The value is
                multiplied by 100 to represent 2 decimal places. For example
                `10000 cents` for `$100.00`.
            credits:
              type: integer
              description: >-
                Total number of gift card credits to be applied. The value is
                multiplied by 100 to represent 2 decimal places. For example
                `10000 cents` for `$100.00`.
    RedeemableResultLoyaltyCard:
      type: object
      title: Loyalty Card
      description: This is a `result` object representing the results for a loyalty card.
      properties:
        loyalty_card:
          description: >-
            Stores the amount of loyalty card points to be applied in the
            redemption.
          type: object
          properties:
            points:
              type: integer
              description: Total number of loyalty points to be applied in the redemption.
    RedeemableResultPromotionTier:
      type: object
      title: Promotion Tier
      description: This is a `result` object representing the results for a promotion tier.
      properties:
        discount:
          description: >-
            Discount details about the type of discount to be applied for the
            redeemable.
          oneOf:
            - $ref: '#/components/schemas/DiscountAmount'
            - $ref: '#/components/schemas/DiscountUnit'
            - $ref: '#/components/schemas/DiscountUnitMultiple'
            - $ref: '#/components/schemas/DiscountPercent'
            - $ref: '#/components/schemas/DiscountFixed'
        bundle:
          $ref: '#/components/schemas/Bundle'
    RedeemableResultPromotionStack:
      type: object
      title: Promotion Stack
      description: >-
        This is a `result` object representing the results for a promotion
        stack.
      properties:
        discount:
          description: >-
            Discount details about the type of discount to be applied for the
            redeemable.
          oneOf:
            - $ref: '#/components/schemas/DiscountAmount'
            - $ref: '#/components/schemas/DiscountUnit'
            - $ref: '#/components/schemas/DiscountUnitMultiple'
            - $ref: '#/components/schemas/DiscountPercent'
            - $ref: '#/components/schemas/DiscountFixed'
        bundle:
          $ref: '#/components/schemas/Bundle'
    CategoryWithStackingRulesType:
      type: object
      title: Category with Stacking Rules Type
      description: Category object with `stacking_rules_type`
      allOf:
        - $ref: '#/components/schemas/Category'
        - type: object
          properties:
            stacking_rules_type:
              type: string
              description: The type of the stacking rule eligibility.
              enum:
                - JOINT
                - EXCLUSIVE
    Error:
      title: Error Object
      type: object
      description: Error details
      properties:
        code:
          type: integer
          description: Error's HTTP status code.
        key:
          type: string
          description: Short string describing the kind of error which occurred.
        message:
          type: string
          description: A human-readable message providing a short description of the error.
        details:
          type: string
          description: A human-readable message providing more details about the error.
        request_id:
          type: string
          example: v-0a885062c80375740f
          description: >-
            This ID is useful when troubleshooting and/or finding the root cause
            of an error response by our support team.
        resource_id:
          type: string
          description: >-
            Unique resource ID that can be used in another endpoint to get more
            details.
          example: rf_0c5d710a87c8a31f86
        resource_type:
          type: string
          description: The resource type.
          example: voucher
        error:
          type: object
          description: Includes additional information about the error.
          properties:
            message:
              type: string
              description: The message configured by the user in a validation rule.
      required:
        - code
        - message
    Bundle:
      title: Bundle Details
      type: object
      description: >-
        Determines how the bundle conditions are met by the customer's order
        items. The items in the order meet the bundle condition in the following
        way: SKU, then product, then collection.
      properties:
        quantity:
          type: integer
          description: >-
            Determines how many bundles are qualified. If there are missing
            bundle products, the value is `0`. If the bundle is qualified, the
            value is `1`. The maximum number of identified bundles can equal the
            number set in `limit`. Also defines the multiplier of the discount
            for `AMOUNT`, `PERCENT`, and `UNIT` discount types. To inform
            end-customers that more products can be added to meet additional
            bundles, compare this parameter with `limit`.
          minimum: 0
          maximum: 100
        limit:
          type: integer
          description: >-
            Determines the maximum number of identified bundles. This also
            defines the maximum multiplier of the bundle discount.
          minimum: 1
          maximum: 100
        identified:
          type: array
          description: >-
            Determines products from the customer's order items that meet bundle
            conditions. SKUs meet the conditions for their product that is used
            in the bundle. Returns only the products and their quantity that
            meet the bundle.
          items:
            type: object
            description: >-
              Determines a product from the customer's order items that meets
              bundle conditions.
            properties:
              id:
                type: string
                description: >-
                  Unique identifier of the product or SKU that meets the bundle
                  condition. This is an ID assigned by Voucherify.
              object:
                type: string
                description: >-
                  Determines the type of the object that meets the bundle
                  condition.
                enum:
                  - product
                  - sku
              item_index:
                type: integer
                description: >-
                  Number assigned to the order line item in accordance with the
                  order sent in the request. It starts with `0` for the first
                  order line item in the request.
                minimum: 0
              item_quantity:
                type: integer
                description: >-
                  Quantity of items that meet the bundle conditions. If the
                  quantity in the order is higher than the quantity required by
                  the bundle, this returns only the number that meets the
                  bundle. For example, if the bundle requires `5` coffees, but
                  the order includes `10` coffees, `item_quantity` returns `5`.
            required:
              - id
              - object
              - item_index
              - item_quantity
        missing:
          type: array
          description: >-
            Determines products, SKUs, or collections from the bundle that are
            missing in the customer's order items. Determines also the missing
            quantity. For collections, this means that order items do not
            include a sufficient number of items that belong to the collection.
            Not returned when all required bundle items are in the order.
          items:
            type: object
            description: >-
              Determines a product, SKU, or collection that is in bundle
              conditions, but is missing in the customer's order items.
              Determines also the missing quantity.
            properties:
              id:
                type: string
                description: >-
                  Unique identifier of the collection, product, or SKU that is
                  missing in the customer's order items. This is an ID assigned
                  by Voucherify.
              object:
                type: string
                description: >-
                  Determines the type of the object that is missing in the
                  customer's order items.
                enum:
                  - product
                  - products_collection
                  - sku
              item_quantity:
                type: integer
                description: >-
                  Quantity of items that are missing in the order items to meet
                  the bundle conditions.
            required:
              - id
              - object
              - item_quantity
      required:
        - quantity
        - limit
    ValidationsRedeemableSkippedResultLimitExceeded:
      title: Validations Redeemable Skipped Result Limit Exceeded
      type: object
      description: >-
        Displayed when the `applicable_redeemables_limit` defined in the
        stacking rules is exceeded.
      properties:
        key:
          type: string
          default: applicable_redeemables_limit_exceeded
          enum:
            - applicable_redeemables_limit_exceeded
        message:
          type: string
          example: Applicable redeemables limit exceeded
    ValidationsRedeemableSkippedResultCategoryLimitExceeded:
      title: Validations Redeemable Skipped Result Category Limit Exceeded
      type: object
      description: >-
        Displayed when `applicable_redeemables_per_category_limit` defined in
        the stacking rules is exceeded
      properties:
        key:
          type: string
          default: applicable_redeemables_per_category_limit_exceeded
          enum:
            - applicable_redeemables_per_category_limit_exceeded
        message:
          type: string
          example: Applicable redeemables limit per category exceeded
    ValidationsRedeemableSkippedResultRedeemablesLimitExceeded:
      title: Validations Redeemable Skipped Result Redeemables Limit Exceeded
      type: object
      description: >-
        Displayed when `applicable_exclusive_redeemables_limit` defined in the 
        stacking rules is exceeded.
      properties:
        key:
          type: string
          default: applicable_exclusive_redeemables_limit_exceeded
          enum:
            - applicable_exclusive_redeemables_limit_exceeded
        message:
          type: string
          example: Applicable exclusive redeemables limit exceeded
    ValidationsRedeemableSkippedResultRedeemablesCategoryLimitExceeded:
      title: >-
        Validations Redeemable Skipped Result Redeemables Category Limit
        Exceeded
      type: object
      description: >-
        Displayed when `applicable_exclusive_redeemables_per_category_limit`
        defined in the stacking rules is exceeded.
      properties:
        key:
          type: string
          default: applicable_exclusive_redeemables_per_category_limit_exceeded
          enum:
            - applicable_exclusive_redeemables_per_category_limit_exceeded
        message:
          type: string
          example: Applicable exclusive redeemables limit per category exceeded
    ValidationsRedeemableSkippedResultExclusionRulesNotMet:
      title: Validations Redeemable Skipped Result Exclusion Rules Not Met
      type: object
      description: >-
        Displayed when the redeemable cannot be applied because the exclusion
        rules are not fulfilled.
      properties:
        key:
          type: string
          default: exclusion_rules_not_met
          enum:
            - exclusion_rules_not_met
        message:
          type: string
          example: Redeemable cannot be applied due to exclusion rules
    ValidationsRedeemableSkippedResultPrecedingValidationFailed:
      title: Validations Redeemable Skipped Result Preceding Validation Failed
      type: object
      description: >-
        Displayed in the ALL application rule when one of the preceding
        redeeambles is `INAPPLICABLE`, so the rest becomes `SKIPPED`
      properties:
        key:
          type: string
          default: preceding_validation_failed
          enum:
            - preceding_validation_failed
        message:
          type: string
          example: Redeemable cannot be applied due to preceding validation failure
    CustomerId:
      title: Customer Id
      type: object
      properties:
        id:
          type: string
          description: A unique identifier of an existing customer.
        object:
          type: string
          description: The type of the object represented by JSON.
          default: customer
          enum:
            - customer
      required:
        - id
        - object
    ReferrerId:
      title: Referrer Id
      allOf:
        - $ref: '#/components/schemas/CustomerId'
    OrderRedemptionsEntry:
      title: Order Redemptions
      type: object
      properties:
        date:
          type: string
          description: >-
            Timestamp representing the date and time when the redemption was
            created. The value is shown in the ISO 8601 format.
          example: '2022-09-02T17:06:56.649Z'
          format: date-time
        rollback_id:
          type: string
          description: Unique ID of the redemption rollback.
          example: rr_0c63c84eb78ee0a6c0
        rollback_date:
          type: string
          description: >-
            Timestamp representing the date and time when the redemption
            rollback was created. The value is shown in the ISO 8601 format.
          example: '2023-01-31T14:18:37.150Z'
          format: date-time
        related_object_type:
          type: string
          description: The source of the incentive.
          default: redemption
        related_object_id:
          type: string
          description: Unique ID of the parent redemption.
          example: r_0ba186c4824e4881e1
        related_object_parent_id:
          type: string
          description: >-
            Represent's the campaign ID of the voucher if the redemption was
            based on a voucher that was part of bulk codes generated within a
            campaign. In case of a promotion tier, this represents the campaign
            ID of the promotion tier's parent campaign.
        stacked:
          type: array
          description: >-
            Contains a list of unique IDs of child redemptions, which belong to
            the stacked incentives.
          items:
            type: string
        rollback_stacked:
          type: array
          description: >-
            Lists the rollback redemption IDs of the particular child
            redemptions.
          items:
            type: string
    OrderItem:
      type: object
      title: Order Item
      properties:
        sku_id:
          type: string
          description: Unique identifier of the SKU. It is assigned by Voucherify.
        product_id:
          type: string
          description: Unique identifier of the product. It is assigned by Voucherify.
        related_object:
          type: string
          enum:
            - product
            - sku
          description: >-
            Used along with the source_id property, can be set to either sku or
            product.
        source_id:
          type: string
          description: >-
            The merchant's product/SKU ID (if it is different from the
            Voucherify product/SKU ID). It is useful in the integration between
            multiple systems. It can be an ID from an eCommerce site, a
            database, or a third-party service.
        quantity:
          type: integer
          description: The quantity of the particular item in the cart.
        discount_quantity:
          type: integer
          description: Number of dicounted items.
        initial_quantity:
          type: integer
          description: >-
            A positive integer in the smallest unit quantity representing the
            total amount of the order; this is the sum of the order items'
            quantity.
        amount:
          type: integer
          description: The total amount of the order item (price * quantity).
        discount_amount:
          type: integer
          description: Sum of all order-item-level discounts applied to the order.
        initial_amount:
          type: integer
          description: >-
            A positive integer in the smallest currency unit (e.g. 100 cents for
            $1.00) representing the total amount of the order. This is the sum
            of the order items' amounts.
        price:
          type: integer
          description: >-
            Unit price of an item. The value is multiplied by 100 to represent 2
            decimal places. For example `10000 cents` for `$100.00`.
        product:
          type: object
          description: An object containing details of the related product.
          properties:
            id:
              type: string
              description: >-
                A unique identifier that represents the product and is assigned
                by Voucherify.
            source_id:
              type: string
              description: >-
                The merchant's product ID (if it is different than Voucherify's
                product ID). It is really useful in case of integration between
                multiple systems. It can be an ID from an eCommerce site, a
                database or a 3rd party service.
            override:
              type: boolean
              description: >-
                The override set to `true` is used to store the product
                information in the system. If the product does not exist, it
                will be created with a source_id; if it does exist, the provided
                values for the name, price, and metadata will replace those
                already stored in the system. Override works only for endpoints
                that create an order in the database.
            name:
              type: string
              description: Product name.
            metadata:
              type: object
              description: >-
                A set of custom key/value pairs that you can attach to a
                product. It can be useful for storing additional information
                about the product in a structured format. It can be used to
                create product collections.
            price:
              type: number
              description: >-
                Product price. A positive integer in the smallest currency unit
                (e.g. 100 cents for $1.00).
        sku:
          type: object
          description: An object containing details of the related SKU.
          properties:
            id:
              type: string
              description: >-
                A unique identifier that represents the SKU and is assigned by
                Voucherify.
            source_id:
              type: string
              description: >-
                The merchant's SKU ID (if it is different than Voucherify's SKU
                ID). It is really useful in case of integration between multiple
                systems. It can be an ID from an eCommerce site, a database or a
                3rd party service.
            override:
              type: boolean
              description: >-
                The override set to `true` is used to store the product
                information in the system. If the product does not exist, it
                will be created with a source_id; if it does exist, the provided
                values for the name, price, and metadata will replace those
                already stored in the system.
            sku:
              type: string
              description: The SKU name.
            price:
              type: number
              description: >-
                SKU price. A positive integer in the smallest currency unit
                (e.g. 100 cents for $1.00).
            metadata:
              type: object
              description: >-
                A set of custom key/value pairs that you can attach to an order
                item. It can be useful for storing additional information about
                the order item in a structured format. It can be used to create
                product collections.
        metadata:
          type: object
          description: >-
            A set of custom key/value pairs that you can attach to an order
            item. It can be useful for storing additional information about the
            order item in a structured format. It can be used to define business
            validation rules.
      required:
        - object
    ApplicableTo:
      title: Applicable To
      type: object
      properties:
        object:
          type: string
          enum:
            - product
            - sku
            - products_collection
          description: >-
            This object stores information about the resource to which the
            discount is applicable.
        id:
          type: string
          description: >-
            Unique product collection, product, or SKU identifier assigned by
            Voucherify.
        source_id:
          type: string
          description: The source identifier from your inventory system.
        product_id:
          type: string
          description: Parent product's unique ID assigned by Voucherify.
        product_source_id:
          type: string
          description: Parent product's source ID from your inventory system.
        price:
          type: number
          description: >-
            New fixed price of an item. Value is multiplied by 100 to precisely
            represent 2 decimal places. For example, a $10 price is written as
            1000. In case of the fixed price being calculated by the formula,
            i.e. the price_formula parameter is present in the fixed price
            definition, this value becomes the fallback value. Such that in a
            case where the formula cannot be calculated due to missing metadata,
            for example, this value will be used as the fixed price.
        price_formula:
          type: number
          description: >-
            Formula used to dynamically calculate the discounted price of an
            item.
        effect:
          description: Defines how the discount is applied to the customer's order.
          allOf:
            - $ref: '#/components/schemas/ApplicableToEffect'
        quantity_limit:
          type: integer
          description: >-
            The maximum number of units allowed to be discounted per order line
            item.
        aggregated_quantity_limit:
          type: integer
          description: >-
            The maximum number of units allowed to be discounted combined across
            all matched order line items.
        amount_limit:
          type: integer
          description: >-
            Upper limit allowed to be applied as a discount per order line item.
            Value is multiplied by 100 to precisely represent 2 decimal places.
            For example, a $6 maximum discount is written as 600.
        aggregated_amount_limit:
          type: integer
          description: >-
            Maximum discount amount per order. Value is multiplied by 100 to
            precisely represent 2 decimal places. For example, a $6 maximum
            discount on the entire order is written as 600. This value is
            definable for the following discount effects:

            - `APPLY_TO_ITEMS` (each item subtotal is discounted equally)

            - `APPLY_TO_ITEMS_BY_QUANTITY` (each unit of matched products has
            the same discount value)
        product_campaign_quantity_limit:
          type: integer
          description: >-
            Limits the number of discounted item units (product, SKU,
            collection) that all customers can receive in a given campaign. If a
            product is selected, the limit covers all discounts across all SKUs
            belonging to that product. If a product collection is selected, the
            limit covers all products/SKUs within the collection.


            This limit is available on demand as part of campaign budget limits.
            Contact [Voucherify
            support](https://www.voucherify.io/contact-support) or your account
            manager to learn more.
        product_campaign_quantity_limit_formula:
          type: string
          description: >-
            Formula used to dynamically calculate the maximum units per
            campaign.


            This limit is available on demand as part of campaign budget limits.
            Contact [Voucherify
            support](https://www.voucherify.io/contact-support) or your account
            manager to learn more.
        product_customer_campaign_quantity_limit:
          type: integer
          description: >-
            Limits the number of discounted item units (product, SKU,
            collection) that one customer can receive in a given campaign.


            This limit is available on demand as part of campaign budget limits.
            Contact [Voucherify
            support](https://www.voucherify.io/contact-support) or your account
            manager to learn more.
        product_customer_campaign_quantity_limit_formula:
          type: string
          description: >-
            Formula used to dynamically calculate the maximum units per customer
            in a campaign.


            This limit is available on demand as part of campaign budget limits.
            Contact [Voucherify
            support](https://www.voucherify.io/contact-support) or your account
            manager to learn more.
        product_in_collection_campaign_quantity_limit:
          type: integer
          description: >-
            Limits the number of discounted item units of a given product in a
            collection that all customers can receive in a given campaign.


            This limit is available on demand as part of campaign budget limits.
            Contact [Voucherify
            support](https://www.voucherify.io/contact-support) or your account
            manager to learn more.
        product_in_collection_campaign_quantity_limit_formula:
          type: string
          description: >-
            Formula used to dynamically calculate the maximum units per campaign
            for a product in a collection.


            This limit is available on demand as part of campaign budget limits.
            Contact [Voucherify
            support](https://www.voucherify.io/contact-support) or your account
            manager to learn more.
        product_in_collection_customer_campaign_quantity_limit:
          type: integer
          description: >-
            Limits the number of discounted item units of a given product in a
            collection that one customer can receive in a campaign.


            This limit is available on demand as part of campaign budget limits.
            Contact [Voucherify
            support](https://www.voucherify.io/contact-support) or your account
            manager to learn more.
        product_in_collection_customer_campaign_quantity_limit_formula:
          type: string
          description: >-
            Formula used to dynamically calculate the maximum units per customer
            for a product in a collection.


            This limit is available on demand as part of campaign budget limits.
            Contact [Voucherify
            support](https://www.voucherify.io/contact-support) or your account
            manager to learn more.
        product_promotion_tier_quantity_limit:
          type: integer
          description: >-
            Limits the number of discounted item units that all customers can
            receive in a promotion tier.


            This limit is available on demand as part of campaign budget limits.
            Contact [Voucherify
            support](https://www.voucherify.io/contact-support) or your account
            manager to learn more.
        product_promotion_tier_quantity_limit_formula:
          type: string
          description: >-
            Formula used to dynamically calculate the maximum units per
            promotion tier.


            This limit is available on demand as part of campaign budget limits.
            Contact [Voucherify
            support](https://www.voucherify.io/contact-support) or your account
            manager to learn more.
        product_customer_promotion_tier_quantity_limit:
          type: integer
          description: >-
            Limits the number of discounted item units that one customer can
            receive in a given promotion tier.


            This limit is available on demand as part of campaign budget limits.
            Contact [Voucherify
            support](https://www.voucherify.io/contact-support) or your account
            manager to learn more.
        product_customer_promotion_tier_quantity_limit_formula:
          type: string
          description: >-
            Formula used to dynamically calculate the maximum units per customer
            in a promotion tier.


            This limit is available on demand as part of campaign budget limits.
            Contact [Voucherify
            support](https://www.voucherify.io/contact-support) or your account
            manager to learn more.
        product_in_collection_promotion_tier_quantity_limit:
          type: integer
          description: >-
            Limits the number of discounted item units of a given product in a
            collection that all customers can receive in a given promotion tier.


            This limit is available on demand as part of campaign budget limits.
            Contact [Voucherify
            support](https://www.voucherify.io/contact-support) or your account
            manager to learn more.
        product_in_collection_promotion_tier_quantity_limit_formula:
          type: string
          description: >-
            Formula used to dynamically calculate the maximum units per
            promotion tier for a product in a collection.


            This limit is available on demand as part of campaign budget limits.
            Contact [Voucherify
            support](https://www.voucherify.io/contact-support) or your account
            manager to learn more.
        product_in_collection_customer_promotion_tier_quantity_limit:
          type: integer
          description: >-
            Limits the number of discounted item units of a given product in a
            collection that one customer can receive in a promotion tier.


            This limit is available on demand as part of campaign budget limits.
            Contact [Voucherify
            support](https://www.voucherify.io/contact-support) or your account
            manager to learn more.
        product_in_collection_customer_promotion_tier_quantity_limit_formula:
          type: string
          description: >-
            Formula used to dynamically calculate the maximum units per customer
            in a promotion tier for a product in a collection.


            This limit is available on demand as part of campaign budget limits.
            Contact [Voucherify
            support](https://www.voucherify.io/contact-support) or your account
            manager to learn more.
        order_item_indices:
          type: array
          description: >-
            Lists which order lines are (not) covered by the discount. The order
            in the array is determined by the sequence of applied discounts,
            while the numbers correspond to the order lines sent in the `order`
            object in the request. The first order line is assigned `0`, the
            second order line is assigned `1`, and so on.
          items:
            type: integer
        order_item_units:
          type: array
          description: >-
            Lists which units within order lines are covered by the discount.
            The order line items are listed according to sequence of applied
            discounts while the `index` corresponds to the order line sent in
            the `order` object in the request.
          items:
            type: object
            properties:
              index:
                type: integer
                description: >-
                  Number assigned to the order line item in accordance with the
                  order sent in the request.
                minimum: 0
              units:
                type: array
                description: >-
                  Numbers of units in the order line covered by the discount;
                  e.g. `2, 5, 8` for 10 units with the setting
                  `"skip_initially": 1`, `"repeat": 3`. The counting of units
                  starts from `1`. The maximum quantity of all handled units is
                  1000. If the quantity of all order items exceeds 1000, this
                  array is not returned, but `units_limit_exceeded: true`.
                  However, the discount is calculated properly for all relevant
                  units.
                items:
                  type: integer
              units_limit_exceeded:
                type: boolean
                description: >-
                  Returned as `true` only when the sum total of `quantity` of
                  all order items exceeds 1000.
        repeat:
          type: integer
          description: >-
            Determines the recurrence of the discount, e.g. `"repeat": 3` means
            that the discount is applied to every third item.
        skip_initially:
          type: integer
          description: >-
            Determines how many items are skipped before the discount is
            applied.
        target:
          type: string
          description: >-
            Determines to which kinds of objects the discount is applicable.
            `ITEM` includes products and SKUs. `UNIT` means particular units
            within an order line.
          enum:
            - ITEM
            - UNIT
      required:
        - object
        - id
        - effect
    InapplicableTo:
      title: Inapplicable To
      type: object
      allOf:
        - $ref: '#/components/schemas/ApplicableTo'
    DiscountAmount:
      type: object
      title: Amount
      properties:
        type:
          type: string
          default: AMOUNT
          enum:
            - AMOUNT
          description: Defines the type of the voucher.
        amount_off:
          type: number
          description: >-
            Amount taken off the subtotal of a price. Value is multiplied by 100
            to precisely represent 2 decimal places. For example, a $10 discount
            is written as 1000.
        amount_off_formula:
          type: string
          description: Formula used to dynamically calculate the discount.
        aggregated_amount_limit:
          type: integer
          description: Maximum discount amount per order.
        effect:
          description: Defines how the discount is applied to the customer's order.
          allOf:
            - $ref: '#/components/schemas/DiscountAmountVouchersEffectTypes'
        is_dynamic:
          type: boolean
          description: Flag indicating whether the discount was calculated using a formula.
      required:
        - type
        - amount_off
    DiscountUnit:
      type: object
      title: Unit
      properties:
        type:
          type: string
          default: UNIT
          enum:
            - UNIT
          description: Discount type.
        unit_off:
          type: integer
          description: Number of units to be granted a full value discount.
        unit_off_formula:
          type: string
          description: Formula used to dynamically calculate the number of units.
        effect:
          description: Defines how the unit is added to the customer's order.
          allOf:
            - $ref: '#/components/schemas/DiscountUnitVouchersEffectTypes'
        unit_type:
          type: string
          description: >-
            The product deemed as free, chosen from product inventory (e.g.
            time, items).
        product:
          description: Contains information about the product.
          allOf:
            - $ref: '#/components/schemas/SimpleProductDiscountUnit'
        sku:
          $ref: '#/components/schemas/SimpleSkuDiscountUnit'
        is_dynamic:
          type: boolean
          description: Flag indicating whether the discount was calculated using a formula.
      required:
        - type
        - unit_type
    DiscountUnitMultiple:
      type: object
      title: Unit Multiple
      properties:
        type:
          type: string
          default: UNIT
          enum:
            - UNIT
          description: Discount type.
        effect:
          type: string
          default: ADD_MANY_ITEMS
          enum:
            - ADD_MANY_ITEMS
          description: Defines how the discount is applied to the customer's order.
        units:
          type: array
          items:
            $ref: '#/components/schemas/DiscountUnitMultipleOneUnit'
      required:
        - type
        - units
    DiscountPercent:
      type: object
      title: Percent
      properties:
        type:
          type: string
          default: PERCENT
          enum:
            - PERCENT
          description: Defines the type of the voucher.
        percent_off:
          type: number
          description: The percent discount that the customer will receive.
        percent_off_formula:
          type: string
          description: Formula used to dynamically calculate the discount.
        amount_limit:
          type: number
          description: >-
            Upper limit allowed to be applied as a discount. Value is multiplied
            by 100 to precisely represent 2 decimal places. For example, a $6
            maximum discount is written as 600.
        aggregated_amount_limit:
          type: integer
          description: Maximum discount amount per order.
        effect:
          description: Defines how the discount is applied to the customer's order.
          allOf:
            - $ref: '#/components/schemas/DiscountPercentVouchersEffectTypes'
        is_dynamic:
          type: boolean
          description: Flag indicating whether the discount was calculated using a formula.
      required:
        - type
        - percent_off
    DiscountFixed:
      title: Fixed
      type: object
      properties:
        type:
          type: string
          default: FIXED
          enum:
            - FIXED
          description: Defines the type of the voucher.
        fixed_amount:
          type: number
          description: >-
            Sets a fixed value for an order total or the item price. The value
            is multiplied by 100 to precisely represent 2 decimal places. For
            example, a $10 discount is written as 1000. If the fixed amount is
            calculated by the formula, i.e. the `fixed_amount_formula` parameter
            is present in the fixed amount definition, this value becomes the
            **fallback value**. As a result, if the formula cannot be calculated
            due to missing metadata, for example, this value will be used as the
            fixed value.
        fixed_amount_formula:
          type: string
          description: Formula used to dynamically calculate the discount.
        effect:
          description: Defines how the discount is applied to the customer's order.
          allOf:
            - $ref: '#/components/schemas/DiscountFixedVouchersEffectTypes'
        is_dynamic:
          type: boolean
          description: Flag indicating whether the discount was calculated using a formula.
      required:
        - type
        - fixed_amount
    Category:
      title: Category
      description: This is an object representing a category.
      type: object
      properties:
        id:
          type: string
          description: Unique category ID assigned by Voucherify.
        name:
          type: string
          description: Category name.
        hierarchy:
          type: integer
          description: >-
            Category hierarchy. Categories with lower hierarchy are processed
            before categories with higher hierarchy value.
          minimum: 0
        object:
          type: string
          default: category
          enum:
            - category
          description: >-
            The type of the object represented by the JSON. This object stores
            information about the category.
        created_at:
          type: string
          description: >-
            Timestamp representing the date and time when the category was
            created. The value is shown in the ISO 8601 format.
          example: '2022-07-14T10:45:13.156Z'
          format: date-time
        updated_at:
          type: string
          example: '2022-08-16T10:52:08.094Z'
          description: >-
            Timestamp representing the date and time when the category was
            updated. The value is shown in the ISO 8601 format.
          format: date-time
      required:
        - id
        - name
        - hierarchy
        - created_at
        - object
    ApplicableToEffect:
      title: Applicable To Effect
      type: string
      enum:
        - APPLY_TO_EVERY
        - APPLY_TO_CHEAPEST
        - APPLY_FROM_CHEAPEST
        - APPLY_TO_MOST_EXPENSIVE
        - APPLY_FROM_MOST_EXPENSIVE
    DiscountAmountVouchersEffectTypes:
      title: Discount Amount Vouchers Effect Types
      enum:
        - APPLY_TO_ORDER
        - APPLY_TO_ITEMS
        - APPLY_TO_ITEMS_PROPORTIONALLY
        - APPLY_TO_ITEMS_PROPORTIONALLY_BY_QUANTITY
        - APPLY_TO_ITEMS_BY_QUANTITY
      type: string
    DiscountUnitVouchersEffectTypes:
      title: Discount Unit Vouchers Effect Types
      enum:
        - ADD_MISSING_ITEMS
        - ADD_NEW_ITEMS
        - ADD_MANY_ITEMS
        - ADD_SAME_ITEMS
      type: string
    SimpleProductDiscountUnit:
      type: object
      title: Simple Product Discount Unit
      properties:
        id:
          type: string
          description: Unique product ID, assigned by Voucherify.
        source_id:
          type: string
          description: Product's source ID.
        name:
          type: string
          description: Product name.
      required:
        - id
        - name
    SimpleSkuDiscountUnit:
      type: object
      title: Simple Sku Discount Unit
      properties:
        id:
          type: string
          description: Unique SKU ID, assigned by Voucherify.
        source_id:
          type: string
          description: Product variant's source ID.
        name:
          type: string
          description: Sku name
      required:
        - id
        - name
    DiscountUnitMultipleOneUnit:
      type: object
      title: One Unit
      properties:
        unit_off:
          type: number
          description: Number of units to be granted a full value discount.
        unit_off_formula:
          type: string
          description: Formula used to dynamically calculate the number of units.
        effect:
          type: string
          enum:
            - ADD_NEW_ITEMS
            - ADD_MISSING_ITEMS
          description: |+
            Defines how the unit is added to the customer's order.

        unit_type:
          type: string
          description: >-
            The product deemed as free, chosen from product inventory (e.g.
            time, items).
        product:
          description: Contains information about the product.
          allOf:
            - $ref: '#/components/schemas/SimpleProductDiscountUnit'
        sku:
          description: Contains information about the sku.
          allOf:
            - $ref: '#/components/schemas/SimpleSkuDiscountUnit'
      required:
        - effect
        - unit_type
    DiscountPercentVouchersEffectTypes:
      title: Discount Percent Vouchers Effect Types
      enum:
        - APPLY_TO_ORDER
        - APPLY_TO_ITEMS
      type: string
    DiscountFixedVouchersEffectTypes:
      title: Discount Fixed Vouchers Effect Types
      enum:
        - APPLY_TO_ORDER
        - APPLY_TO_ITEMS
      type: string
  securitySchemes:
    X-Client-Application-Id:
      type: apiKey
      name: X-Client-Application-Id
      in: header
    X-Client-Token:
      type: apiKey
      name: X-Client-Token
      in: header
    X-Voucherify-OAuth:
      type: oauth2
      flows:
        implicit:
          authorizationUrl: https://api.voucherify.io/v1/oauth/token
          scopes:
            api: Gives access to whole server-side API.
            vouchers: >-
              Gives access to all endpoints and methods starting with
              `v1/vouchers`.
            client_api: Gives access to whole client-side API.
            client_vouchers: >-
              Gives access to all endpoints and methods starting with
              `/client/v1/vouchers`.
            promotions: >-
              Gives access to all endpoints and methods starting with
              `/v1/promotions`.
            client_promotions: >-
              Gives access to all endpoints and methods starting with
              `/client/v1/promotions`
            campaigns: >-
              Gives access to all endpoints and methods starting with
              `v1/campaigns`.
            client_publish: >-
              Gives access to all endpoints and methods starting with
              `/client/v1/publish`.
            exports: >-
              Gives access to all endpoints and methods starting with
              `/v1/exports`.
            publications: >-
              Gives access to all endpoints and methods starting with
              `/v1/publications`.
            client_validate: >-
              Gives access to all endpoints and methods starting with
              `/client/v1/validate`.
            validations: >-
              Gives access to all endpoints and methods starting with
              `/v1/validations`.
            client_validations: >-
              Gives access to all endpoints and methods starting with
              `/client/v1/validations`.
            qualifications: >-
              Gives access to all endpoints and methods starting with
              `/v1/qualifications`.
            client_qualifications: >-
              Gives access to all endpoints and methods starting with
              `/client/v1/qualifications`.
            client_redeem: >-
              Gives access to all endpoints and methods starting with
              `/client/v1/redeem
            redemptions: >-
              Gives access to all endpoints and methods starting with
              `/v1/redemptions`.
            client_redemptions: >-
              Gives access to all endpoints and methods starting with
              `/client/v1/redemptions`
            customers: >-
              Gives access to all endpoints and methods starting with
              `/v1/customers`.
            client_customers: >-
              Gives access to all endpoints and methods starting with
              `/client/v1/customers`.
            orders: >-
              Gives access to all endpoints and methods starting with
              `/v1/orders`.
            products: >-
              Gives access to all endpoints and methods starting with
              `/v1/products`.
            skus: >-
              Gives access to all endpoints and methods starting with
              `/v1/SKUs`.
            validation-rules: >-
              Gives access to all endpoints and methods starting with
              `/v1/validation-rules`.
            validation-rules-assignments: >-
              Gives access to all endpoints and methods starting with
              `/v1/validation-rules-assignments
            segments: >-
              Gives access to all endpoints and methods starting with
              `/v1/segments`.
            events: >-
              Gives access to all endpoints and methods starting with
              `/v1/events`.
            client_events: >-
              Gives access to all endpoints and methods starting with
              `client/v1/events`.
            rewards: >-
              Gives access to all endpoints and methods starting with
              `/v1/rewards`.
            assets: >-
              Gives access to all endpoints and methods starting with
              `/v1/assets`.
            task-results: >-
              Gives access to all endpoints and methods starting with
              `/v1/task-results`.
            loyalties: >-
              Gives access to all endpoints and methods starting with
              `/v1/loyalties`.
            client_consents: >-
              Gives access to all endpoints and methods starting with
              `client/v1/consents`.
            consents: >-
              Gives access to all endpoints and methods starting with
              `/v1/consents`.
            async-actions: >-
              Gives access to all endpoints and methods starting with
              `/v1/async-actions`.
            product-collections: >-
              Gives access to all endpoints and methods starting with
              `/v1/product-collections`.
            categories: >-
              Gives access to all endpoints and methods starting with
              `/v1/categories`.
            metadata-schemas: >-
              Gives access to all endpoints and methods starting with
              `/v1/metadata-schemas`.
            locations: >-
              Gives access to all endpoints and methods starting with
              `/v1/locations`.
            referrals: >-
              Gives access to all endpoints and methods starting with
              `/v1/referrals`.
            trash-bin: >-
              Gives access to all endpoints and methods starting with
              `/v1/trash-bin`.
            templates: >-
              Gives access to all endpoints and methods starting with
              `/v1/templates`.

````