---
title: "Redeem Stackable Discounts (client-side)"
method: POST
path: "/client/v1/redemptions"
tags: ["Client-side"]
---

# Redeem Stackable Discounts (client-side)

`POST /client/v1/redemptions`

This method is accessible through public keys which you can use in client side requests coming from mobile and web browser applications.

## How API returns calculated discounts and order amounts in the response

In the table below, you can see the logic the API follows to calculate discounts and amounts:

| **Field** | **Calculation** | **Description** |
|:---|:---|:---|
| amount | N/A | This field shows the order amount before applying any discount |
| total_amount | `total_amount` = `amount` - `total_discount_amount` | This field shows the order amount after applying all the discounts |
| discount_amount | `discount_amount` = `previous_discount_amount` + `applied_discount_amount` | This field sums up all order-level discounts up to and including the specific discount being calculated for the stacked redemption. |
| items_discount_amount | sum(items, i => i.discount_amount) | This field sums up all product-specific discounts |
| total_discount_amount | `total_discount_amount` = `discount_amount` + `items_discount_amount` | This field sums up all order-level and all product-specific discounts |
| applied_discount_amount | N/A | This field shows the order-level discount applied in a particular request |
| items_applied_discount_amount | sum(items, i => i.applied_discount_amount) | This field sums up all product-specific discounts applied in a particular request |
| total_applied_discount_amount | `total_applied_discount_amount` = `applied_discount_amount` + `items_applied_discount_amount` | This field sums up all order-level and all product-specific discounts applied in a particular request |


> 📘 Rollbacks
>
> You can't roll back a child redemption. When you call rollback on a stacked redemption, all child redemptions will be rolled back. You need to refer to a parent redemption ID in your [rollback request](/api-reference/redemptions/rollback-stackable-redemptions).

## Headers

- `origin` string, hostname, required

## Request body

- ClientRedemptionsRedeemRequestBody — Response body schema for **POST** `v1/redemptions`.
  - `options` object — Configure parameters returned in the response.
    - `expand` string[] — Expand array lets you configure params 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. | | ["redeemable", "redemption", "category"] | - Returns each discount type's `metadata` in each child redemption object.<br />- Returns redemption object `metadata`.<br />- Returns an expanded `categories` object, showing details about the category. |
  - `redeemables` union[], required — 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.
    - union
      - RedeemVoucher — Validate or redeem a discount code.
        - `object` 'voucher', required — Redeemable object type.
        - `id` string, required — Redeemable code.
      - RedeemPromotionTier — Validate or redeem a promotion tier.
        - `object` 'promotion_tier', required — Redeemable object type.
        - `id` string, required — Promotion tier unique id, such as: promo_Mwy9XpA0TLctSGriM5kum0qp
      - RedeemPromotionStack — Validate or redeem a promotion stack.
        - `object` 'promotion_stack', required — Redeemable object type.
        - `id` string, required — Promotion stack unique id, such as: stack_KxSD0GahLUg9ULB6TseGfUHJ
      - RedeemGiftCard — Validate or redeem a discount code.
        - `object` 'voucher', required — Redeemable object type.
        - `id` string, required — Redeemable code.
        - `gift` object — Contains information on the number of gift card credits that the customer wants to apply to the order.
          - `credits` integer — 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 — Validate or redeem a discount code.
        - `object` 'voucher', required — Redeemable object type.
        - `id` string, required — Redeemable code.
        - `reward` object — 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.
          - `id` string — 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.
          - `points` integer — 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` Order — Order information.
    - `id` string — Unique ID assigned by Voucherify of an existing order that will be linked to the redemption of this request.
    - `source_id` string, nullable — 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` 'CREATED' | 'PAID' | 'CANCELED' | 'FULFILLED' — The order status.
    - `amount` integer — 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` integer — 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` integer — 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` OrderItem[] — Array of items applied to the order. It can include up to 500 items.
      - `sku_id` string — Unique identifier of the SKU. It is assigned by Voucherify.
      - `product_id` string — Unique identifier of the product. It is assigned by Voucherify.
      - `related_object` 'product' | 'sku' — Used along with the source_id property, can be set to either sku or product.
      - `source_id` string — 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` integer — The quantity of the particular item in the cart.
      - `discount_quantity` integer — Number of dicounted items.
      - `initial_quantity` integer — 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` integer — The total amount of the order item (price * quantity).
      - `discount_amount` integer — Sum of all order-item-level discounts applied to the order.
      - `initial_amount` integer — 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` integer — Unit price of an item. The value is multiplied by 100 to represent 2 decimal places. For example `10000 cents` for `$100.00`.
      - `product` object — An object containing details of the related product.
        - `id` string — A unique identifier that represents the product and is assigned by Voucherify.
        - `source_id` string — 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` boolean — 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` string — Product name.
        - `metadata` object — 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` number — Product price. A positive integer in the smallest currency unit (e.g. 100 cents for $1.00).
      - `sku` object — An object containing details of the related SKU.
        - `id` string — A unique identifier that represents the SKU and is assigned by Voucherify.
        - `source_id` string — 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` boolean — 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` string — The SKU name.
        - `price` number — SKU price. A positive integer in the smallest currency unit (e.g. 100 cents for $1.00).
        - `metadata` object — 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` object — 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.
    - `metadata` object — 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.
  - `customer` Customer
    - `id` string — The ID of an existing customer.
    - `source_id` string — 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.
    - `name` string — Customer's first and last name.
    - `description` string — An arbitrary string that you can attach to a customer object.
    - `email` string — Customer's email address.
    - `phone` string — Customer's phone number. This parameter is mandatory when you try to send out codes to customers via an SMS channel.
    - `birthday` string, date — `Deprecated`. ~~Customer's birthdate; format YYYY-MM-DD~~.
    - `birthdate` string, date — Customer's birthdate; format YYYY-MM-DD.
    - `address` object, nullable — Customer's address.
      - `city` string — City
      - `state` string — State
      - `line_1` string — First line of address.
      - `line_2` string — Second line of address.
      - `country` string — Country.
      - `postal_code` string — Postal code.
    - `metadata` object — 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.
  - `session` Session
    - `key` string — 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` 'LOCK' — This parameter is required to establish a new session.
    - `ttl` number — 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` 'DAYS' | 'HOURS' | 'MICROSECONDS' | 'MILLISECONDS' | 'MINUTES' | 'NANOSECONDS' | 'SECONDS' — Defines the type of unit in which the session time is counted.
  - `tracking_id` string — Is correspondent to Customer's source_id
  - `metadata` object — 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.

## Response `200`

Depending on your project settings: all redeemables must be valid or just one must be valid to result as valid redemption. Read more in the [Stacking Rule Documentation](/orchestrate/stacking-rules).

- ClientRedemptionsRedeemResponseBody — Response body schema for **POST** `v1/redemptions`.
  - `redemptions` Redemption[]
    - `id` string, required — Unique redemption ID.
    - `object` 'redemption', required — The type of the object represented by the JSON
    - `date` string, date-time, required — Timestamp representing the date and time when the object was created. The value is shown in the ISO 8601 format.
    - `customer_id` string, nullable, required — Unique customer ID of the redeeming customer.
    - `tracking_id` string, nullable, required — Hashed customer source ID.
    - `metadata` object, nullable, required — The metadata object stores all custom attributes assigned to the redemption.
    - `amount` integer — For gift cards, this is a positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the number of redeemed credits. For loyalty cards, this is the number of loyalty points used in the transaction.
    - `redemption` string, nullable, required — Unique redemption ID of the parent redemption.
    - `result` 'SUCCESS' | 'FAILURE', required — Redemption result.
    - `status` 'SUCCEEDED' | 'FAILED' | 'ROLLED_BACK', required — Redemption status.
    - `session` object — Contains details about the redemption session lock. Sessions can be established only for discount vouchers, promotions, and gift cards.
      - `key` string — The session unique ID assigned by Voucherify or your own unique session ID sent in the request.
    - `related_redemptions` object
      - `rollbacks` object[]
        - `id` string — Unique rollback redemption ID.
        - `date` string, date-time — Timestamp representing the date and time when the object was created. The value is shown in the ISO 8601 format.
        - `rollback_order_mode` 'WITH_ORDER' | 'WITHOUT_ORDER' — 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. This is returned only in GET `v1/redemptions/` and GET `v1/redemptions/{redemptionId}` endpoints.
      - `redemptions` object[]
        - `id` string — Unique redemption ID.
        - `date` string, date-time — Timestamp representing the date and time when the object was created. The value is shown in the ISO 8601 format.
    - `failure_code` string — If the result is `FAILURE`, this parameter will provide a generic reason as to why the redemption failed.
    - `failure_message` string — If the result is `FAILURE`, this parameter will provide a more expanded reason as to why the redemption failed.
    - `order` object, nullable, required — Order information.
      - `id` string — Unique ID assigned by Voucherify of an existing order that will be linked to the redemption of this request.
      - `source_id` string, nullable — Unique source ID of an existing order that will be linked to the redemption of this request.
      - `status` 'CREATED' | 'PAID' | 'CANCELED' | 'FULFILLED' — The order status.
      - `amount` integer — 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` integer — 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` integer — 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` integer — 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` integer — 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` integer — 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` integer — 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` integer — 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` integer — 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` object — 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` 'order' — The type of the object represented by JSON.
      - `created_at` string, date-time — Timestamp representing the date and time when the order was created. The value is shown in the ISO 8601 format.
      - `updated_at` string, date-time, nullable — Timestamp representing the date and time when the order was last updated in ISO 8601 format.
      - `customer_id` string, nullable — Unique customer identifier of the customer making the purchase. The ID is assigned by Voucherify.
      - `referrer_id` string, nullable — Unique referrer ID.
      - `customer` CustomerId
        - `id` string, required — A unique identifier of an existing customer.
        - `object` 'customer', required — The type of the object represented by JSON.
      - `referrer` ReferrerId
        - `id` string, required — A unique identifier of an existing customer.
        - `object` 'customer', required — The type of the object represented by JSON.
      - `redemptions` object
      - `items` object[] — Array of items applied to the order. It can include up to 500 items.
        - `id` string — Unique identifier of the order line item.
        - `sku_id` string — Unique identifier of the SKU. It is assigned by Voucherify.
        - `product_id` string — Unique identifier of the product. It is assigned by Voucherify.
        - `related_object` 'product' | 'sku' — Used along with the source_id property, can be set to either sku or product.
        - `source_id` string — 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` integer — The quantity of the particular item in the cart.
        - `discount_quantity` integer — Number of dicounted items.
        - `initial_quantity` integer — 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` integer — The total amount of the order item (price * quantity).
        - `discount_amount` integer — Sum of all order-item-level discounts applied to the order.
        - `applied_discount_amount` integer — This field shows the order-level discount applied.
        - `applied_discount_quantity` integer — Number of the discounted items applied in the transaction.
        - `applied_quantity` integer — 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` integer — 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` integer — 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` integer — 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` integer — 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` object — An object containing details of the related product.
          - `id` string — A unique identifier that represents the product and is assigned by Voucherify.
          - `source_id` string — 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` boolean — 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` string — Product name.
          - `metadata` object — 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` number — Product price. A positive integer in the smallest currency unit (e.g. 100 cents for $1.00).
        - `sku` object — An object containing details of the related SKU.
          - `id` string — A unique identifier that represents the SKU and is assigned by Voucherify.
          - `source_id` string — 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` boolean — 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` string — The SKU name.
          - `price` number — SKU price. A positive integer in the smallest currency unit (e.g. 100 cents for $1.00).
          - `metadata` object — 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` 'order_item', required — The type of the object represented by JSON.
        - `metadata` object — 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.
        - `application_details` object[] — Array containing details about the items that are replaced and the items that are replacements for discounts with the `REPLACE_ITEMS` effect.
          - `source_index` integer — 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`.
          - `source_applied_quantity` integer — Number of source units that are replaced.
          - `source_applied_quantity_amount` integer — Amount equal to the price of the units that are replaced. Determines the change of the amount of the source item quantity.
          - `target_index` integer — 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` integer — Number of added target units that are replacements.
          - `target_applied_quantity_amount` integer — 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` integer — Discount amount applied to the target item with regard to the replacement. Equals the `target_applied_quantity_amount` minus `source_applied_quantity_amount`.
    - `channel` object, required — Defines the details of the channel through which the redemption was issued.
      - `channel_id` string — Unique channel ID of the user performing the redemption. This is either a user ID from a user using the Voucherify Dashboard or an X-APP-Id of a user using the API. For `AUTO_REDEEM`, it is the reward assignment ID.
      - `channel_type` 'USER' | 'API' | 'AUTO_REDEEM' — The source of the channel for the redemption. A `USER` corresponds to the Voucherify Dashboard, `API` corresponds to the API, and `AUTO_REDEEM` corresponds to a loyalty campaign reward that has been redeemed automatically.
    - `customer` SimpleCustomer, required — Simplified customer data.
      - `id` string — Unique identifier of an existing customer. It is assigned by Voucherify.
      - `name` string — Customer's first and last name.
      - `email` string — Customer's email address.
      - `source_id` string — A unique identifier of the customer. It can be a customer ID or email from a CRM system, database, or a third-party service.
      - `metadata` object — A set of custom key/value pairs that are attached to the customer. It stores all custom attributes assigned to the customer.
      - `object` 'customer' — The type of the object represented by JSON.
    - `related_object_type` 'voucher' | 'promotion_tier' | 'redemption', required — Defines the related object.
    - `related_object_id` string, required — Unique related object ID assigned by Voucherify, i.e. v_lfZi4rcEGe0sN9gmnj40bzwK2FH6QUno for a voucher.
    - `promotion_tier` PromotionTier — This is an object representing a promotion tier. Promotion tiers are always assigned to a campaign and cannot be used standalone.
      - `id` string — Unique promotion tier ID.
      - `created_at` string, date-time — Timestamp representing the date and time when the promotion tier was created. The value is shown in the ISO 8601 format.
      - `updated_at` string, date-time — Timestamp representing the date and time when the promotion tier was updated. The value is shown in the ISO 8601 format.
      - `name` string — Name of the promotion tier.
      - `banner` string — Text to be displayed to your customers on your website.
      - `action` object — Contains details about the discount applied by the promotion tier.
        - `discount` union — Contains information about discount.
          - object
            - `type` 'AMOUNT', required — Defines the type of the voucher.
            - `amount_off` number, required — 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` string — Formula used to dynamically calculate the discount.
            - `aggregated_amount_limit` integer — Maximum discount amount per order.
            - `effect` 'APPLY_TO_ORDER' | 'APPLY_TO_ITEMS' | 'APPLY_TO_ITEMS_PROPORTIONALLY' | 'APPLY_TO_ITEMS_PROPORTIONALLY_BY_QUANTITY' | 'APPLY_TO_ITEMS_BY_QUANTITY'
            - `is_dynamic` boolean — Flag indicating whether the discount was calculated using a formula.
          - object
            - `type` 'UNIT', required — Discount type.
            - `unit_off` integer — Number of units to be granted a full value discount.
            - `unit_off_formula` string — Formula used to dynamically calculate the number of units.
            - `effect` 'ADD_MISSING_ITEMS' | 'ADD_NEW_ITEMS' | 'ADD_MANY_ITEMS' | 'ADD_SAME_ITEMS'
            - `unit_type` string, required — The product deemed as free, chosen from product inventory (e.g. time, items).
            - `product` SimpleProductDiscountUnit
              - …
            - `sku` SimpleSkuDiscountUnit
              - …
            - `is_dynamic` boolean — Flag indicating whether the discount was calculated using a formula.
          - object
            - `type` 'UNIT', required — Discount type.
            - `effect` 'ADD_MANY_ITEMS' — Defines how the discount is applied to the customer's order.
            - `units` DiscountUnitMultipleOneUnit[], required
              - …
          - object
            - `type` 'PERCENT', required — Defines the type of the voucher.
            - `percent_off` number, required — The percent discount that the customer will receive.
            - `percent_off_formula` string — Formula used to dynamically calculate the discount.
            - `amount_limit` number — 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` integer — Maximum discount amount per order.
            - `effect` 'APPLY_TO_ORDER' | 'APPLY_TO_ITEMS'
            - `is_dynamic` boolean — Flag indicating whether the discount was calculated using a formula.
          - object
            - `type` 'FIXED', required — Defines the type of the voucher.
            - `fixed_amount` number, required — 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` string — Formula used to dynamically calculate the discount.
            - `effect` 'APPLY_TO_ORDER' | 'APPLY_TO_ITEMS'
            - `is_dynamic` boolean — Flag indicating whether the discount was calculated using a formula.
      - `metadata` object — The metadata object stores all custom attributes assigned to the promotion tier. A set of key/value pairs that you can attach to a promotion tier object. It can be useful for storing additional information about the promotion tier in a structured format.
      - `hierarchy` integer — The promotions hierarchy defines the order in which the discounts from different tiers will be applied to a customer's order. If a customer qualifies for discounts from more than one tier, discounts will be applied in the order defined in the hierarchy.
      - `promotion_id` string — Promotion unique ID.
      - `campaign` object — Contains details about promotion tier's parent campaign.
        - `id` string — Unique campaign ID.
        - `start_date` string, date-time — Activation timestamp defines when the campaign starts to be active in ISO 8601 format. Campaign is *inactive before* this date.
        - `expiration_date` string, date-time — Expiration timestamp defines when the campaign expires in ISO 8601 format. Campaign is *inactive after* this date.
        - `validity_timeframe` ValidityTimeframe — Set recurrent time periods when the earning rule is valid. For example, valid for 1 hour every other day.`start_date` **required** when including the `validity_timeframe`.
          - `duration` string — Defines the amount of time an earning rule will be active in ISO 8601 format. For example, an earning rule with a `duration` of `PT1H` will be valid for a duration of one hour.
          - `interval` string — Defines the intervening time between two time points in ISO 8601 format, expressed as a duration. For example, an earning rule with an `interval` of `P2D` will be valid every other day.
        - `validity_day_of_week` integer[] — Integer array corresponding to the particular days of the week in which the voucher is valid. - `0` Sunday - `1` Monday - `2` Tuesday - `3` Wednesday - `4` Thursday - `5` Friday - `6` Saturday
        - `validity_hours` ValidityHours — Determines the hours of validity, e.g. to create a happy hours scenario.
          - `daily` object[] — Defines the recurring period(s) when the resource is active. The periods should not overlap.
            - `start_time` string, time — Defines the starting hour of validity in the HH:mm format. The resource is *inactive before* this time.
            - `days_of_week` integer[] — Integer array corresponding to the particular days of the week in which the resource is valid. - `0` Sunday - `1` Monday - `2` Tuesday - `3` Wednesday - `4` Thursday - `5` Friday - `6` Saturday
            - `expiration_time` string, time — Defines the ending hour of validity in the HH:mm format. The resource is *inactive after* this time.
        - `active` boolean — A flag indicating whether the campaign is active or not active. A campaign can be disabled even though it's within the active period defined by the `start_date` and `expiration_date` using the [Disable Campaign](/api-reference/disable-campaign) endpoint. - `true` indicates an *active* campaign - `false` indicates an *inactive* campaign
        - `category_id` string — Unique category ID that this campaign belongs to.
        - `object` string — The type of the object represented by the campaign object. This object stores information about the campaign.
      - `campaign_id` string — Promotion tier's parent campaign's unique ID.
      - `active` boolean — A flag to toggle the promotion tier on or off. You can disable a promotion tier even though it's within the active period defined by the `start_date` and `expiration_date`. - `true` indicates an *active* promotion tier - `false` indicates an *inactive* promotion tier
      - `start_date` string, date-time — Activation timestamp defines when the promotion tier starts to be active in ISO 8601 format. Promotion tier is *inactive before* this date.
      - `expiration_date` string, date-time — Activation timestamp defines when the promotion tier expires in ISO 8601 format. Promotion tier is *inactive after* this date.
      - `validity_timeframe` ValidityTimeframe — Set recurrent time periods when the earning rule is valid. For example, valid for 1 hour every other day.`start_date` **required** when including the `validity_timeframe`.
        - `duration` string — Defines the amount of time an earning rule will be active in ISO 8601 format. For example, an earning rule with a `duration` of `PT1H` will be valid for a duration of one hour.
        - `interval` string — Defines the intervening time between two time points in ISO 8601 format, expressed as a duration. For example, an earning rule with an `interval` of `P2D` will be valid every other day.
      - `validity_day_of_week` integer[] — Integer array corresponding to the particular days of the week in which the voucher is valid. - `0` Sunday - `1` Monday - `2` Tuesday - `3` Wednesday - `4` Thursday - `5` Friday - `6` Saturday
      - `validity_hours` ValidityHours — Determines the hours of validity, e.g. to create a happy hours scenario.
        - `daily` object[] — Defines the recurring period(s) when the resource is active. The periods should not overlap.
          - `start_time` string, time — Defines the starting hour of validity in the HH:mm format. The resource is *inactive before* this time.
          - `days_of_week` integer[] — Integer array corresponding to the particular days of the week in which the resource is valid. - `0` Sunday - `1` Monday - `2` Tuesday - `3` Wednesday - `4` Thursday - `5` Friday - `6` Saturday
          - `expiration_time` string, time — Defines the ending hour of validity in the HH:mm format. The resource is *inactive after* this time.
      - `summary` object — Contains statistics about promotion tier redemptions and orders.
        - `redemptions` object — Contains statistics about promotion tier redemptions.
          - `total_redeemed` integer — Number of times the promotion tier was redeemed.
        - `orders` object — Contains statistics about orders related to the promotion tier.
          - `total_amount` integer — Sum of order totals.
          - `total_discount_amount` integer — Sum of total discount applied using the promotion tier.
      - `object` string — The type of the object represented by JSON. This object stores information about the promotion tier.
      - `validation_rule_assignments` ValidationRuleAssignmentsList — Validation Rule Assignments List
        - `object` string, required — The type of the object represented by JSON. This object stores information about validation rule assignments.
        - `data_ref` string, required — Identifies the name of the JSON property that contains the array of validation rule assignments.
        - `data` ValidationRuleAssignment[], required — A dictionary that contains an array of validation rule assignments.
          - `id` string, required — Validation rule assignment ID.
          - `rule_id` string, required — Validation rule ID.
          - `related_object_id` string, required — The resource ID to which the validation rule was assigned.
          - `related_object_type` 'voucher' | 'campaign' | 'earning_rule' | 'reward_assignment' | 'promotion_tier' | 'distribution', required — The type of resource to which the validation rule was assigned.
          - `created_at` string, date-time, required — Timestamp representing the date and time when the validation rule assignment was created. The value is shown in the ISO 8601 format.
          - `object` 'validation_rules_assignment', required — The type of the object represented by the ID.
        - `total` integer, required — Total number of validation rule assignments.
      - `category_id` string — Promotion tier category ID.
      - `categories` Category[]
        - `id` string, required — Unique category ID assigned by Voucherify.
        - `name` string, required — Category name.
        - `hierarchy` integer, required — Category hierarchy. Categories with lower hierarchy are processed before categories with higher hierarchy value.
        - `object` 'category', required — The type of the object represented by the JSON. This object stores information about the category.
        - `created_at` string, date-time, required — Timestamp representing the date and time when the category was created. The value is shown in the ISO 8601 format.
        - `updated_at` string, date-time — Timestamp representing the date and time when the category was updated. The value is shown in the ISO 8601 format.
    - `reward` RedemptionRewardResult
      - `customer` SimpleCustomer, required — Simplified customer data.
        - `id` string — Unique identifier of an existing customer. It is assigned by Voucherify.
        - `name` string — Customer's first and last name.
        - `email` string — Customer's email address.
        - `source_id` string — A unique identifier of the customer. It can be a customer ID or email from a CRM system, database, or a third-party service.
        - `metadata` object — A set of custom key/value pairs that are attached to the customer. It stores all custom attributes assigned to the customer.
        - `object` 'customer' — The type of the object represented by JSON.
      - `assignment_id` string, nullable, required — Unique reward assignment ID assigned by Voucherify.
      - `voucher` Voucher, required — This is an object representing a voucher.
        - `id` string — Assigned by the Voucherify API, identifies the voucher.
        - `code` string — A code that identifies a voucher. Pattern can use all letters of the English alphabet, Arabic numerals, and special characters.
        - `campaign` string — A unique campaign name, identifies the voucher's parent campaign.
        - `campaign_id` string — Assigned by the Voucherify API, identifies the voucher's parent campaign.
        - `category` string — Tag defining the category that this voucher belongs to. Useful when listing vouchers using the List Vouchers endpoint.
        - `category_id` string — Unique category ID assigned by Voucherify.
        - `type` 'GIFT_VOUCHER' | 'DISCOUNT_VOUCHER' | 'LOYALTY_CARD' — Defines the type of the voucher.
        - `discount` union — Contains information about discount.
          - object
            - `type` 'AMOUNT', required — Defines the type of the voucher.
            - `amount_off` number, required — 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` string — Formula used to dynamically calculate the discount.
            - `aggregated_amount_limit` integer — Maximum discount amount per order.
            - `effect` 'APPLY_TO_ORDER' | 'APPLY_TO_ITEMS' | 'APPLY_TO_ITEMS_PROPORTIONALLY' | 'APPLY_TO_ITEMS_PROPORTIONALLY_BY_QUANTITY' | 'APPLY_TO_ITEMS_BY_QUANTITY'
            - `is_dynamic` boolean — Flag indicating whether the discount was calculated using a formula.
          - object
            - `type` 'UNIT', required — Discount type.
            - `unit_off` integer — Number of units to be granted a full value discount.
            - `unit_off_formula` string — Formula used to dynamically calculate the number of units.
            - `effect` 'ADD_MISSING_ITEMS' | 'ADD_NEW_ITEMS' | 'ADD_MANY_ITEMS' | 'ADD_SAME_ITEMS'
            - `unit_type` string, required — The product deemed as free, chosen from product inventory (e.g. time, items).
            - `product` SimpleProductDiscountUnit
              - …
            - `sku` SimpleSkuDiscountUnit
              - …
            - `is_dynamic` boolean — Flag indicating whether the discount was calculated using a formula.
          - object
            - `type` 'UNIT', required — Discount type.
            - `effect` 'ADD_MANY_ITEMS' — Defines how the discount is applied to the customer's order.
            - `units` DiscountUnitMultipleOneUnit[], required
              - …
          - object
            - `type` 'PERCENT', required — Defines the type of the voucher.
            - `percent_off` number, required — The percent discount that the customer will receive.
            - `percent_off_formula` string — Formula used to dynamically calculate the discount.
            - `amount_limit` number — 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` integer — Maximum discount amount per order.
            - `effect` 'APPLY_TO_ORDER' | 'APPLY_TO_ITEMS'
            - `is_dynamic` boolean — Flag indicating whether the discount was calculated using a formula.
          - object
            - `type` 'FIXED', required — Defines the type of the voucher.
            - `fixed_amount` number, required — 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` string — Formula used to dynamically calculate the discount.
            - `effect` 'APPLY_TO_ORDER' | 'APPLY_TO_ITEMS'
            - `is_dynamic` boolean — Flag indicating whether the discount was calculated using a formula.
        - `gift` object — Object representing gift parameters. Child attributes are present only if `type` is `GIFT_VOUCHER`. Defaults to `null`.
          - `amount` integer — Total gift card income over the lifetime of the card. The value is multiplied by 100 to represent 2 decimal places. For example `10000 cents` for `$100.00`.
          - `subtracted_amount` integer — Total amount of subtracted credits over the gift card lifetime. The value is multiplied by 100 to represent 2 decimal places. For example `10000 cents` for `$100.00`.
          - `balance` integer — Available funds. The value is multiplied by 100 to represent 2 decimal places. For example `10000 cents` for `$100.00`.
          - `effect` 'APPLY_TO_ORDER' | 'APPLY_TO_ITEMS' — Defines how the credits are applied to the customer's order.
        - `loyalty_card` object — Object representing loyalty card parameters. Child attributes are present only if `type` is `LOYALTY_CARD`. Defaults to `null`.
          - `points` integer — Total number of points added to the loyalty card over its lifespan.
          - `balance` integer — Points available for reward redemption. This is calculated as follows: `balance` = `points` - `expired_points` - `subtracted_points` - `redemption.redeemed_points`.
          - `next_expiration_date` string, date — The next closest date when the next set of points are due to expire.
          - `next_expiration_points` integer — The amount of points that are set to expire next.
          - `pending_points` integer — Shows the number of pending points that will be added to the loyalty card when they are activated automatically or manually.
          - `expired_points` integer — Shows the total number of expired points over the lifetime of the loyalty card.
          - `subtracted_points` integer — Shows the total number of subtracted points over the lifetime of the loyalty card.
        - `start_date` string, date-time — Activation timestamp defines when the code starts to be active in ISO 8601 format. Voucher is *inactive before* this date.
        - `expiration_date` string, date-time — Expiration timestamp defines when the code expires in ISO 8601 format. Voucher is *inactive after* this date.
        - `validity_timeframe` ValidityTimeframe — Set recurrent time periods when the earning rule is valid. For example, valid for 1 hour every other day.`start_date` **required** when including the `validity_timeframe`.
          - `duration` string — Defines the amount of time an earning rule will be active in ISO 8601 format. For example, an earning rule with a `duration` of `PT1H` will be valid for a duration of one hour.
          - `interval` string — Defines the intervening time between two time points in ISO 8601 format, expressed as a duration. For example, an earning rule with an `interval` of `P2D` will be valid every other day.
        - `validity_day_of_week` integer[] — Integer array corresponding to the particular days of the week in which the voucher is valid. - `0` Sunday - `1` Monday - `2` Tuesday - `3` Wednesday - `4` Thursday - `5` Friday - `6` Saturday
        - `validity_hours` ValidityHours — Determines the hours of validity, e.g. to create a happy hours scenario.
          - `daily` object[] — Defines the recurring period(s) when the resource is active. The periods should not overlap.
            - `start_time` string, time — Defines the starting hour of validity in the HH:mm format. The resource is *inactive before* this time.
            - `days_of_week` integer[] — Integer array corresponding to the particular days of the week in which the resource is valid. - `0` Sunday - `1` Monday - `2` Tuesday - `3` Wednesday - `4` Thursday - `5` Friday - `6` Saturday
            - `expiration_time` string, time — Defines the ending hour of validity in the HH:mm format. The resource is *inactive after* this time.
        - `active` boolean, nullable — A flag to toggle the voucher on or off. You can disable a voucher even though it's within the active period defined by the `start_date` and `expiration_date`. - `true` indicates an *active* voucher - `false` indicates an *inactive* voucher
        - `additional_info` string — An optional field to keep any extra textual information about the code such as a code description and details.
        - `metadata` object — The metadata object stores all custom attributes assigned to the code. A set of key/value pairs that you can attach to a voucher object. It can be useful for storing additional information about the voucher in a structured format.
        - `assets` VoucherAssets — Stores links to images of QR and barcode that correspond to an encrypted voucher code.
          - `qr` object — Stores Quick Response (QR) representation of encrypted code.
            - `id` string — Encrypted voucher code ID.
            - `url` string — URL to QR code *Optional:* Attach query parameters to base URL to customize the image of the encrypted voucher code. - `size`: integer value from `1` to `100` - `format`: string, either `png` (default) or `svg`
          - `barcode` object — Stores barcode representation of encrypted code.
            - `id` string — Encrypted voucher code ID.
            - `url` string — URL to barcode *Optional:* Attach query parameters to base URL to customize the image of the encrypted voucher code. - `size`: integer value from `1` to `100` - `format`: string, either `png` (default) or `svg`
        - `is_referral_code` boolean, nullable — Flag indicating whether this voucher is a referral code; `true` for campaign type `REFERRAL_PROGRAM`.
        - `created_at` string, date-time — Timestamp representing the date and time when the voucher was created. The value is shown in the ISO 8601 format.
        - `updated_at` string, date-time — Timestamp representing the date and time when the voucher was last updated in ISO 8601 format.
        - `holder_id` string — Unique customer identifier of the redeemable holder. It equals to the customer ID assigned by Voucherify.
        - `referrer_id` string — Unique identifier of the referring person.
        - `object` string — The type of the object represented by JSON. Default is `voucher`.
        - `publish` object — Stores a summary of publication events: an event counter and endpoint to return details of each event. Publication is an assignment of a code to a customer, e.g. through a distribution.
          - `object` string — The type of the object represented is by default `list`. To get this list, you need to make a call to the endpoint returned in the `url` attribute.
          - `count` integer — Publication events counter.
          - `url` string — The endpoint where this list of publications can be accessed using a **GET** method. `/v1/vouchers/{voucher_code}/publications`
        - `redemption` object — Stores a summary of redemptions that have been applied to the voucher.
          - `quantity` integer — How many times a voucher can be redeemed. A `null` value means unlimited.
          - `redeemed_quantity` integer — How many times a voucher has already been redeemed.
          - `redeemed_points` integer — Total loyalty points redeemed.
          - `object` string — The type of the object represented is by default `list`. To get this list, you need to make a call to the endpoint returned in the url attribute.
          - `url` string — The endpoint where this list of redemptions can be accessed using a **GET** method. `/v1/vouchers/{voucher_code}/redemptions`
        - `categories` Category[] — Contains details about the category.
          - `id` string, required — Unique category ID assigned by Voucherify.
          - `name` string, required — Category name.
          - `hierarchy` integer, required — Category hierarchy. Categories with lower hierarchy are processed before categories with higher hierarchy value.
          - `object` 'category', required — The type of the object represented by the JSON. This object stores information about the category.
          - `created_at` string, date-time, required — Timestamp representing the date and time when the category was created. The value is shown in the ISO 8601 format.
          - `updated_at` string, date-time — Timestamp representing the date and time when the category was updated. The value is shown in the ISO 8601 format.
        - `validation_rules_assignments` ValidationRulesAssignmentsList — List of Validation Rules Assignments
          - `object` 'list', required — The type of the object represented by JSON. This object stores information about validation rules assignments.
          - `data_ref` 'data', required — Identifies the name of the attribute that contains the array of validation rules assignments.
          - `data` BusValRuleAssignment[], required — Contains array of validation rules assignments.
            - `id` string, required — The unique identifier for a assignment
            - `rule_id` string, required — The unique identifier for a rule
            - `related_object_id` string, required — The unique identifier for a related object
            - `related_object_type` string, required — The type of related object
            - `created_at` string, date-time — Timestamp representing the date and time when the object was created. The value is shown in the ISO 8601 format.
            - `updated_at` string, date-time — Timestamp representing the date and time when the object was last updated in ISO 8601 format.
            - `object` 'validation_rules_assignment', required — The type of the object represented by JSON.
            - `validation_status` 'VALID' | 'PARTIALLY_VALID' | 'INVALID' — The validation status of the assignment
            - `validation_omitted_rules` string[] — The list of omitted rules
          - `total` integer, required — Total number of validation rules assignments.
      - `product` Product, required — This is an object representing a product. This entity should be used to map product items from your inventory management system. The aim of products is to build which reflect product-specific campaigns.
        - `id` string, required — Unique product ID assigned by Voucherify.
        - `source_id` string, nullable, required — Unique product source ID.
        - `name` string, nullable, required — Unique user-defined product name.
        - `price` integer, nullable, required — Unit price. It is represented by a value multiplied by 100 to accurately reflect 2 decimal places, such as `$100.00` being expressed as `10000`.
        - `attributes` string[], required — A list of product attributes whose values you can customize for given SKUs: `["color","size","ranking"]`. Each child SKU can have a unique value for a given attribute.
        - `metadata` object, required — The metadata object stores all custom attributes assigned to the product. A set of key/value pairs that you can attach to a product object. It can be useful for storing additional information about the product in a structured format. It can be used to create product collections.
        - `image_url` string, nullable — The HTTPS URL pointing to the .png or .jpg file that will be used to render the product image.
        - `created_at` string, date-time — Timestamp representing the date and time when the product was created. The value is shown in the ISO 8601 format.
        - `updated_at` string, date-time, nullable — Timestamp representing the date and time when the product was updated. The value is shown in the ISO 8601 format.
        - `object` 'product', required — The type of the object represented by JSON. This object stores information about the product.
        - `skus` SkusListForProduct — Contains information about child SKUs.
          - `object` string, required — The type of the object represented by JSON. This object stores information about SKUs.
          - `data_ref` string, required — Identifies the name of the JSON property that contains the array of SKUs.
          - `data` Sku[], required — A dictionary that contains an array of SKUs.
            - `id` string, required — A unique identifier that represents the SKU and is assigned by Voucherify.
            - `source_id` string, nullable, required — A unique SKU identifier from your inventory system.
            - `product_id` string, required — The parent product's unique ID.
            - `sku` string, nullable, required — Unique user-defined SKU name.
            - `price` integer, nullable, required — Unit price. It is represented by a value multiplied by 100 to accurately reflect 2 decimal places, such as `$100.00` being expressed as `10000`.
            - `currency` string, nullable — SKU price currency.
            - `attributes` object, required — The attributes object stores values for all custom attributes inherited by the SKU from the parent product. A set of key/value pairs that are attached to a SKU object and are unique to each SKU within a product family.
            - `image_url` string, nullable, required — The HTTPS URL pointing to the .png or .jpg file that will be used to render the SKU image.
            - `metadata` object, required — The metadata object stores all custom attributes assigned to the SKU. A set of key/value pairs that you can attach to a SKU object. It can be useful for storing additional information about the SKU in a structured format. It can be used to create product collections.
            - `created_at` string, date-time, required — Timestamp representing the date and time when the SKU was created. The value is shown in the ISO 8601 format.
            - `updated_at` string, date-time, nullable, required — Timestamp representing the date and time when the SKU was updated. The value is shown in the ISO 8601 format.
            - `object` 'sku', required — The type of the object represented by JSON. This object stores information about the `SKU`.
          - `total` integer, required — Total number of SKUs in the product.
      - `sku` Sku, required — This is an object representing a product SKU.
        - `id` string, required — A unique identifier that represents the SKU and is assigned by Voucherify.
        - `source_id` string, nullable, required — A unique SKU identifier from your inventory system.
        - `product_id` string, required — The parent product's unique ID.
        - `sku` string, nullable, required — Unique user-defined SKU name.
        - `price` integer, nullable, required — Unit price. It is represented by a value multiplied by 100 to accurately reflect 2 decimal places, such as `$100.00` being expressed as `10000`.
        - `currency` string, nullable — SKU price currency.
        - `attributes` object, required — The attributes object stores values for all custom attributes inherited by the SKU from the parent product. A set of key/value pairs that are attached to a SKU object and are unique to each SKU within a product family.
        - `image_url` string, nullable, required — The HTTPS URL pointing to the .png or .jpg file that will be used to render the SKU image.
        - `metadata` object, required — The metadata object stores all custom attributes assigned to the SKU. A set of key/value pairs that you can attach to a SKU object. It can be useful for storing additional information about the SKU in a structured format. It can be used to create product collections.
        - `created_at` string, date-time, required — Timestamp representing the date and time when the SKU was created. The value is shown in the ISO 8601 format.
        - `updated_at` string, date-time, nullable, required — Timestamp representing the date and time when the SKU was updated. The value is shown in the ISO 8601 format.
        - `object` 'sku', required — The type of the object represented by JSON. This object stores information about the `SKU`.
      - `loyalty_tier_id` string, nullable, required — Unique loyalty tier ID assigned by Voucherify.
      - `id` string — Unique reward ID.
      - `name` string — Name of the reward.
      - `object` 'reward' — The type of the object represented by the JSON
      - `created_at` string, date-time — Timestamp representing the date and time when the redemption was created. The value is shown in the ISO 8601 format.
      - `updated_at` string, date-time — Timestamp in ISO 8601 format indicating when the reward was updated.
      - `parameters` object — These are parameters representing a material reward.
        - `campaign` object — Defines the product redeemed as a reward.
          - `id` string — Campaign unique ID.
          - `balance` integer — Points available for reward redemption. This is calculated as follows: `balance` = `points` - `expired_points` - `subtracted_points` - `redemption.redeemed_points`.
          - `type` string — Defines the type of the campaign.
        - `product` object — Defines the product redeemed as a reward.
          - `id` string — Unique product ID, assigned by Voucherify.
          - `sku_id` string — Unique identifier of the SKU. It is assigned by Voucherify.
        - `coin` object — Defines the ratio by mapping the number of loyalty points in `points_ratio` to a predefined cash amount in `exchange_ratio`.
          - `exchange_ratio` integer — The cash equivalent of the points defined in the `points_ratio` property.
          - `points_ratio` integer — The number of loyalty points that will map to the predefined cash amount defined by the `exchange_ratio` property.
      - `metadata` object — A set of custom key/value pairs that you can attach to a reward. The metadata object stores all custom attributes assigned to the reward.
      - `type` 'CAMPAIGN' | 'COIN' | 'MATERIAL' — Reward type.
    - `gift` object — Contains the amount subtracted from the gift card for the redemption.
      - `amount` integer — Amount subtracted from the gift card as a result of the redemption. The amount is expressed as the smallest currency unit (e.g. 100 cents for $1.00).
    - `loyalty_card` object — Contains the number of points subtracted from the loyalty card for the redemption.
      - `points` integer — Number of points subtracted from the loyalty card as a result of the redemption.
    - `voucher` object — This is an object representing a voucher holder.
      - `id` string — Assigned by the Voucherify API, identifies the voucher.
      - `code` string — A code that identifies a voucher. Pattern can use all letters of the English alphabet, Arabic numerals, and special characters.
      - `campaign` string — A unique campaign name, identifies the voucher's parent campaign.
      - `campaign_id` string — Assigned by the Voucherify API, identifies the voucher's parent campaign.
      - `category` string — Tag defining the category that this voucher belongs to. Useful when listing vouchers using the List Vouchers endpoint.
      - `category_id` string — Unique category ID assigned by Voucherify.
      - `type` 'GIFT_VOUCHER' | 'DISCOUNT_VOUCHER' | 'LOYALTY_CARD' — Defines the type of the voucher.
      - `discount` union — Contains information about discount.
        - object
          - `type` 'AMOUNT', required — Defines the type of the voucher.
          - `amount_off` number, required — 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` string — Formula used to dynamically calculate the discount.
          - `aggregated_amount_limit` integer — Maximum discount amount per order.
          - `effect` 'APPLY_TO_ORDER' | 'APPLY_TO_ITEMS' | 'APPLY_TO_ITEMS_PROPORTIONALLY' | 'APPLY_TO_ITEMS_PROPORTIONALLY_BY_QUANTITY' | 'APPLY_TO_ITEMS_BY_QUANTITY'
          - `is_dynamic` boolean — Flag indicating whether the discount was calculated using a formula.
        - object
          - `type` 'UNIT', required — Discount type.
          - `unit_off` integer — Number of units to be granted a full value discount.
          - `unit_off_formula` string — Formula used to dynamically calculate the number of units.
          - `effect` 'ADD_MISSING_ITEMS' | 'ADD_NEW_ITEMS' | 'ADD_MANY_ITEMS' | 'ADD_SAME_ITEMS'
          - `unit_type` string, required — The product deemed as free, chosen from product inventory (e.g. time, items).
          - `product` SimpleProductDiscountUnit
            - `id` string, required — Unique product ID, assigned by Voucherify.
            - `source_id` string — Product's source ID.
            - `name` string, required — Product name.
          - `sku` SimpleSkuDiscountUnit
            - `id` string, required — Unique SKU ID, assigned by Voucherify.
            - `source_id` string — Product variant's source ID.
            - `name` string, required — Sku name
          - `is_dynamic` boolean — Flag indicating whether the discount was calculated using a formula.
        - object
          - `type` 'UNIT', required — Discount type.
          - `effect` 'ADD_MANY_ITEMS' — Defines how the discount is applied to the customer's order.
          - `units` DiscountUnitMultipleOneUnit[], required
            - `unit_off` number — Number of units to be granted a full value discount.
            - `unit_off_formula` string — Formula used to dynamically calculate the number of units.
            - `effect` 'ADD_NEW_ITEMS' | 'ADD_MISSING_ITEMS', required — Defines how the unit is added to the customer's order.
            - `unit_type` string, required — The product deemed as free, chosen from product inventory (e.g. time, items).
            - `product` SimpleProductDiscountUnit
              - …
            - `sku` SimpleSkuDiscountUnit
              - …
        - object
          - `type` 'PERCENT', required — Defines the type of the voucher.
          - `percent_off` number, required — The percent discount that the customer will receive.
          - `percent_off_formula` string — Formula used to dynamically calculate the discount.
          - `amount_limit` number — 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` integer — Maximum discount amount per order.
          - `effect` 'APPLY_TO_ORDER' | 'APPLY_TO_ITEMS'
          - `is_dynamic` boolean — Flag indicating whether the discount was calculated using a formula.
        - object
          - `type` 'FIXED', required — Defines the type of the voucher.
          - `fixed_amount` number, required — 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` string — Formula used to dynamically calculate the discount.
          - `effect` 'APPLY_TO_ORDER' | 'APPLY_TO_ITEMS'
          - `is_dynamic` boolean — Flag indicating whether the discount was calculated using a formula.
      - `gift` object — Object representing gift parameters. Child attributes are present only if `type` is `GIFT_VOUCHER`. Defaults to `null`.
        - `amount` integer — Total gift card income over the lifetime of the card. The value is multiplied by 100 to represent 2 decimal places. For example `10000 cents` for `$100.00`.
        - `subtracted_amount` integer — Total amount of subtracted credits over the gift card lifetime. The value is multiplied by 100 to represent 2 decimal places. For example `10000 cents` for `$100.00`.
        - `balance` integer — Available funds. The value is multiplied by 100 to represent 2 decimal places. For example `10000 cents` for `$100.00`.
        - `effect` 'APPLY_TO_ORDER' | 'APPLY_TO_ITEMS' — Defines how the credits are applied to the customer's order.
      - `loyalty_card` object — Object representing loyalty card parameters. Child attributes are present only if `type` is `LOYALTY_CARD`. Defaults to `null`.
        - `points` integer — Total number of points added to the loyalty card over its lifespan.
        - `balance` integer — Points available for reward redemption. This is calculated as follows: `balance` = `points` - `expired_points` - `subtracted_points` - `redemption.redeemed_points`.
        - `next_expiration_date` string, date — The next closest date when the next set of points are due to expire.
        - `next_expiration_points` integer — The amount of points that are set to expire next.
        - `pending_points` integer — Shows the number of pending points that will be added to the loyalty card when they are activated automatically or manually.
        - `expired_points` integer — Shows the total number of expired points over the lifetime of the loyalty card.
        - `subtracted_points` integer — Shows the total number of subtracted points over the lifetime of the loyalty card.
      - `start_date` string, date-time — Activation timestamp defines when the code starts to be active in ISO 8601 format. Voucher is *inactive before* this date.
      - `expiration_date` string, date-time — Expiration timestamp defines when the code expires in ISO 8601 format. Voucher is *inactive after* this date.
      - `validity_timeframe` ValidityTimeframe — Set recurrent time periods when the earning rule is valid. For example, valid for 1 hour every other day.`start_date` **required** when including the `validity_timeframe`.
        - `duration` string — Defines the amount of time an earning rule will be active in ISO 8601 format. For example, an earning rule with a `duration` of `PT1H` will be valid for a duration of one hour.
        - `interval` string — Defines the intervening time between two time points in ISO 8601 format, expressed as a duration. For example, an earning rule with an `interval` of `P2D` will be valid every other day.
      - `validity_day_of_week` integer[] — Integer array corresponding to the particular days of the week in which the voucher is valid. - `0` Sunday - `1` Monday - `2` Tuesday - `3` Wednesday - `4` Thursday - `5` Friday - `6` Saturday
      - `validity_hours` ValidityHours — Determines the hours of validity, e.g. to create a happy hours scenario.
        - `daily` object[] — Defines the recurring period(s) when the resource is active. The periods should not overlap.
          - `start_time` string, time — Defines the starting hour of validity in the HH:mm format. The resource is *inactive before* this time.
          - `days_of_week` integer[] — Integer array corresponding to the particular days of the week in which the resource is valid. - `0` Sunday - `1` Monday - `2` Tuesday - `3` Wednesday - `4` Thursday - `5` Friday - `6` Saturday
          - `expiration_time` string, time — Defines the ending hour of validity in the HH:mm format. The resource is *inactive after* this time.
      - `active` boolean, nullable — A flag to toggle the voucher on or off. You can disable a voucher even though it's within the active period defined by the `start_date` and `expiration_date`. - `true` indicates an *active* voucher - `false` indicates an *inactive* voucher
      - `additional_info` string — An optional field to keep any extra textual information about the code such as a code description and details.
      - `metadata` object — The metadata object stores all custom attributes assigned to the code. A set of key/value pairs that you can attach to a voucher object. It can be useful for storing additional information about the voucher in a structured format.
      - `assets` VoucherAssets — Stores links to images of QR and barcode that correspond to an encrypted voucher code.
        - `qr` object — Stores Quick Response (QR) representation of encrypted code.
          - `id` string — Encrypted voucher code ID.
          - `url` string — URL to QR code *Optional:* Attach query parameters to base URL to customize the image of the encrypted voucher code. - `size`: integer value from `1` to `100` - `format`: string, either `png` (default) or `svg`
        - `barcode` object — Stores barcode representation of encrypted code.
          - `id` string — Encrypted voucher code ID.
          - `url` string — URL to barcode *Optional:* Attach query parameters to base URL to customize the image of the encrypted voucher code. - `size`: integer value from `1` to `100` - `format`: string, either `png` (default) or `svg`
      - `is_referral_code` boolean, nullable — Flag indicating whether this voucher is a referral code; `true` for campaign type `REFERRAL_PROGRAM`.
      - `created_at` string, date-time — Timestamp representing the date and time when the voucher was created. The value is shown in the ISO 8601 format.
      - `updated_at` string, date-time — Timestamp representing the date and time when the voucher was last updated in ISO 8601 format.
      - `holder_id` string — Unique customer identifier of the redeemable holder. It equals to the customer ID assigned by Voucherify.
      - `referrer_id` string — Unique identifier of the referring person.
      - `object` string — The type of the object represented by JSON. Default is `voucher`.
      - `publish` object — Stores a summary of publication events: an event counter and endpoint to return details of each event. Publication is an assignment of a code to a customer, e.g. through a distribution.
        - `object` string — The type of the object represented is by default `list`. To get this list, you need to make a call to the endpoint returned in the `url` attribute.
        - `count` integer — Publication events counter.
        - `url` string — The endpoint where this list of publications can be accessed using a **GET** method. `/v1/vouchers/{voucher_code}/publications`
      - `redemption` object — Stores a summary of redemptions that have been applied to the voucher.
        - `quantity` integer — How many times a voucher can be redeemed. A `null` value means unlimited.
        - `redeemed_quantity` integer — How many times a voucher has already been redeemed.
        - `redeemed_points` integer — Total loyalty points redeemed.
        - `object` string — The type of the object represented is by default `list`. To get this list, you need to make a call to the endpoint returned in the url attribute.
        - `url` string — The endpoint where this list of redemptions can be accessed using a **GET** method. `/v1/vouchers/{voucher_code}/redemptions`
      - `categories` CategoryWithStackingRulesType[] — Contains details about the category.
        - `id` string, required — Unique category ID assigned by Voucherify.
        - `name` string, required — Category name.
        - `hierarchy` integer, required — Category hierarchy. Categories with lower hierarchy are processed before categories with higher hierarchy value.
        - `object` 'category', required — The type of the object represented by the JSON. This object stores information about the category.
        - `created_at` string, date-time, required — Timestamp representing the date and time when the category was created. The value is shown in the ISO 8601 format.
        - `updated_at` string, date-time — Timestamp representing the date and time when the category was updated. The value is shown in the ISO 8601 format.
        - `stacking_rules_type` 'JOINT' | 'EXCLUSIVE' — The type of the stacking rule eligibility.
      - `validation_rules_assignments` ValidationRulesAssignmentsList — List of Validation Rules Assignments
        - `object` 'list', required — The type of the object represented by JSON. This object stores information about validation rules assignments.
        - `data_ref` 'data', required — Identifies the name of the attribute that contains the array of validation rules assignments.
        - `data` BusValRuleAssignment[], required — Contains array of validation rules assignments.
          - `id` string, required — The unique identifier for a assignment
          - `rule_id` string, required — The unique identifier for a rule
          - `related_object_id` string, required — The unique identifier for a related object
          - `related_object_type` string, required — The type of related object
          - `created_at` string, date-time — Timestamp representing the date and time when the object was created. The value is shown in the ISO 8601 format.
          - `updated_at` string, date-time — Timestamp representing the date and time when the object was last updated in ISO 8601 format.
          - `object` 'validation_rules_assignment', required — The type of the object represented by JSON.
          - `validation_status` 'VALID' | 'PARTIALLY_VALID' | 'INVALID' — The validation status of the assignment
          - `validation_omitted_rules` string[] — The list of omitted rules
        - `total` integer, required — Total number of validation rules assignments.
      - `holder` SimpleCustomer — Simplified customer data.
        - `id` string — Unique identifier of an existing customer. It is assigned by Voucherify.
        - `name` string — Customer's first and last name.
        - `email` string — Customer's email address.
        - `source_id` string — A unique identifier of the customer. It can be a customer ID or email from a CRM system, database, or a third-party service.
        - `metadata` object — A set of custom key/value pairs that are attached to the customer. It stores all custom attributes assigned to the customer.
        - `object` 'customer' — The type of the object represented by JSON.
  - `parent_redemption` Redemption — This is an object representing a redemption for **POST** `v1/redemptions` and **POST** `/client/v1/redemptions`.
    - `id` string, required — Unique redemption ID.
    - `object` 'redemption', required — The type of the object represented by the JSON
    - `date` string, date-time, required — Timestamp representing the date and time when the object was created. The value is shown in the ISO 8601 format.
    - `customer_id` string, nullable, required — Unique customer ID of the redeeming customer.
    - `tracking_id` string, nullable, required — Hashed customer source ID.
    - `metadata` object, nullable, required — The metadata object stores all custom attributes assigned to the redemption.
    - `amount` integer — For gift cards, this is a positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the number of redeemed credits. For loyalty cards, this is the number of loyalty points used in the transaction.
    - `redemption` string, nullable, required — Unique redemption ID of the parent redemption.
    - `result` 'SUCCESS' | 'FAILURE', required — Redemption result.
    - `status` 'SUCCEEDED' | 'FAILED' | 'ROLLED_BACK', required — Redemption status.
    - `session` object — Contains details about the redemption session lock. Sessions can be established only for discount vouchers, promotions, and gift cards.
      - `key` string — The session unique ID assigned by Voucherify or your own unique session ID sent in the request.
    - `related_redemptions` object
      - `rollbacks` object[]
        - `id` string — Unique rollback redemption ID.
        - `date` string, date-time — Timestamp representing the date and time when the object was created. The value is shown in the ISO 8601 format.
        - `rollback_order_mode` 'WITH_ORDER' | 'WITHOUT_ORDER' — 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. This is returned only in GET `v1/redemptions/` and GET `v1/redemptions/{redemptionId}` endpoints.
      - `redemptions` object[]
        - `id` string — Unique redemption ID.
        - `date` string, date-time — Timestamp representing the date and time when the object was created. The value is shown in the ISO 8601 format.
    - `failure_code` string — If the result is `FAILURE`, this parameter will provide a generic reason as to why the redemption failed.
    - `failure_message` string — If the result is `FAILURE`, this parameter will provide a more expanded reason as to why the redemption failed.
    - `order` object, nullable, required — Order information.
      - `id` string — Unique ID assigned by Voucherify of an existing order that will be linked to the redemption of this request.
      - `source_id` string, nullable — Unique source ID of an existing order that will be linked to the redemption of this request.
      - `status` 'CREATED' | 'PAID' | 'CANCELED' | 'FULFILLED' — The order status.
      - `amount` integer — 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` integer — 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` integer — 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` integer — 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` integer — 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` integer — 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` integer — 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` integer — 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` integer — 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` object — 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` 'order' — The type of the object represented by JSON.
      - `created_at` string, date-time — Timestamp representing the date and time when the order was created. The value is shown in the ISO 8601 format.
      - `updated_at` string, date-time, nullable — Timestamp representing the date and time when the order was last updated in ISO 8601 format.
      - `customer_id` string, nullable — Unique customer identifier of the customer making the purchase. The ID is assigned by Voucherify.
      - `referrer_id` string, nullable — Unique referrer ID.
      - `customer` CustomerId
        - `id` string, required — A unique identifier of an existing customer.
        - `object` 'customer', required — The type of the object represented by JSON.
      - `referrer` ReferrerId
        - `id` string, required — A unique identifier of an existing customer.
        - `object` 'customer', required — The type of the object represented by JSON.
      - `redemptions` object
      - `items` object[] — Array of items applied to the order. It can include up to 500 items.
        - `id` string — Unique identifier of the order line item.
        - `sku_id` string — Unique identifier of the SKU. It is assigned by Voucherify.
        - `product_id` string — Unique identifier of the product. It is assigned by Voucherify.
        - `related_object` 'product' | 'sku' — Used along with the source_id property, can be set to either sku or product.
        - `source_id` string — 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` integer — The quantity of the particular item in the cart.
        - `discount_quantity` integer — Number of dicounted items.
        - `initial_quantity` integer — 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` integer — The total amount of the order item (price * quantity).
        - `discount_amount` integer — Sum of all order-item-level discounts applied to the order.
        - `applied_discount_amount` integer — This field shows the order-level discount applied.
        - `applied_discount_quantity` integer — Number of the discounted items applied in the transaction.
        - `applied_quantity` integer — 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` integer — 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` integer — 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` integer — 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` integer — 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` object — An object containing details of the related product.
          - `id` string — A unique identifier that represents the product and is assigned by Voucherify.
          - `source_id` string — 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` boolean — 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` string — Product name.
          - `metadata` object — 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` number — Product price. A positive integer in the smallest currency unit (e.g. 100 cents for $1.00).
        - `sku` object — An object containing details of the related SKU.
          - `id` string — A unique identifier that represents the SKU and is assigned by Voucherify.
          - `source_id` string — 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` boolean — 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` string — The SKU name.
          - `price` number — SKU price. A positive integer in the smallest currency unit (e.g. 100 cents for $1.00).
          - `metadata` object — 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` 'order_item', required — The type of the object represented by JSON.
        - `metadata` object — 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.
        - `application_details` object[] — Array containing details about the items that are replaced and the items that are replacements for discounts with the `REPLACE_ITEMS` effect.
          - `source_index` integer — 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`.
          - `source_applied_quantity` integer — Number of source units that are replaced.
          - `source_applied_quantity_amount` integer — Amount equal to the price of the units that are replaced. Determines the change of the amount of the source item quantity.
          - `target_index` integer — 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` integer — Number of added target units that are replacements.
          - `target_applied_quantity_amount` integer — 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` integer — Discount amount applied to the target item with regard to the replacement. Equals the `target_applied_quantity_amount` minus `source_applied_quantity_amount`.
    - `channel` object, required — Defines the details of the channel through which the redemption was issued.
      - `channel_id` string — Unique channel ID of the user performing the redemption. This is either a user ID from a user using the Voucherify Dashboard or an X-APP-Id of a user using the API. For `AUTO_REDEEM`, it is the reward assignment ID.
      - `channel_type` 'USER' | 'API' | 'AUTO_REDEEM' — The source of the channel for the redemption. A `USER` corresponds to the Voucherify Dashboard, `API` corresponds to the API, and `AUTO_REDEEM` corresponds to a loyalty campaign reward that has been redeemed automatically.
    - `customer` SimpleCustomer, required — Simplified customer data.
      - `id` string — Unique identifier of an existing customer. It is assigned by Voucherify.
      - `name` string — Customer's first and last name.
      - `email` string — Customer's email address.
      - `source_id` string — A unique identifier of the customer. It can be a customer ID or email from a CRM system, database, or a third-party service.
      - `metadata` object — A set of custom key/value pairs that are attached to the customer. It stores all custom attributes assigned to the customer.
      - `object` 'customer' — The type of the object represented by JSON.
    - `related_object_type` 'voucher' | 'promotion_tier' | 'redemption', required — Defines the related object.
    - `related_object_id` string, required — Unique related object ID assigned by Voucherify, i.e. v_lfZi4rcEGe0sN9gmnj40bzwK2FH6QUno for a voucher.
    - `promotion_tier` PromotionTier — This is an object representing a promotion tier. Promotion tiers are always assigned to a campaign and cannot be used standalone.
      - `id` string — Unique promotion tier ID.
      - `created_at` string, date-time — Timestamp representing the date and time when the promotion tier was created. The value is shown in the ISO 8601 format.
      - `updated_at` string, date-time — Timestamp representing the date and time when the promotion tier was updated. The value is shown in the ISO 8601 format.
      - `name` string — Name of the promotion tier.
      - `banner` string — Text to be displayed to your customers on your website.
      - `action` object — Contains details about the discount applied by the promotion tier.
        - `discount` union — Contains information about discount.
          - object
            - `type` 'AMOUNT', required — Defines the type of the voucher.
            - `amount_off` number, required — 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` string — Formula used to dynamically calculate the discount.
            - `aggregated_amount_limit` integer — Maximum discount amount per order.
            - `effect` 'APPLY_TO_ORDER' | 'APPLY_TO_ITEMS' | 'APPLY_TO_ITEMS_PROPORTIONALLY' | 'APPLY_TO_ITEMS_PROPORTIONALLY_BY_QUANTITY' | 'APPLY_TO_ITEMS_BY_QUANTITY'
            - `is_dynamic` boolean — Flag indicating whether the discount was calculated using a formula.
          - object
            - `type` 'UNIT', required — Discount type.
            - `unit_off` integer — Number of units to be granted a full value discount.
            - `unit_off_formula` string — Formula used to dynamically calculate the number of units.
            - `effect` 'ADD_MISSING_ITEMS' | 'ADD_NEW_ITEMS' | 'ADD_MANY_ITEMS' | 'ADD_SAME_ITEMS'
            - `unit_type` string, required — The product deemed as free, chosen from product inventory (e.g. time, items).
            - `product` SimpleProductDiscountUnit
              - …
            - `sku` SimpleSkuDiscountUnit
              - …
            - `is_dynamic` boolean — Flag indicating whether the discount was calculated using a formula.
          - object
            - `type` 'UNIT', required — Discount type.
            - `effect` 'ADD_MANY_ITEMS' — Defines how the discount is applied to the customer's order.
            - `units` DiscountUnitMultipleOneUnit[], required
              - …
          - object
            - `type` 'PERCENT', required — Defines the type of the voucher.
            - `percent_off` number, required — The percent discount that the customer will receive.
            - `percent_off_formula` string — Formula used to dynamically calculate the discount.
            - `amount_limit` number — 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` integer — Maximum discount amount per order.
            - `effect` 'APPLY_TO_ORDER' | 'APPLY_TO_ITEMS'
            - `is_dynamic` boolean — Flag indicating whether the discount was calculated using a formula.
          - object
            - `type` 'FIXED', required — Defines the type of the voucher.
            - `fixed_amount` number, required — 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` string — Formula used to dynamically calculate the discount.
            - `effect` 'APPLY_TO_ORDER' | 'APPLY_TO_ITEMS'
            - `is_dynamic` boolean — Flag indicating whether the discount was calculated using a formula.
      - `metadata` object — The metadata object stores all custom attributes assigned to the promotion tier. A set of key/value pairs that you can attach to a promotion tier object. It can be useful for storing additional information about the promotion tier in a structured format.
      - `hierarchy` integer — The promotions hierarchy defines the order in which the discounts from different tiers will be applied to a customer's order. If a customer qualifies for discounts from more than one tier, discounts will be applied in the order defined in the hierarchy.
      - `promotion_id` string — Promotion unique ID.
      - `campaign` object — Contains details about promotion tier's parent campaign.
        - `id` string — Unique campaign ID.
        - `start_date` string, date-time — Activation timestamp defines when the campaign starts to be active in ISO 8601 format. Campaign is *inactive before* this date.
        - `expiration_date` string, date-time — Expiration timestamp defines when the campaign expires in ISO 8601 format. Campaign is *inactive after* this date.
        - `validity_timeframe` ValidityTimeframe — Set recurrent time periods when the earning rule is valid. For example, valid for 1 hour every other day.`start_date` **required** when including the `validity_timeframe`.
          - `duration` string — Defines the amount of time an earning rule will be active in ISO 8601 format. For example, an earning rule with a `duration` of `PT1H` will be valid for a duration of one hour.
          - `interval` string — Defines the intervening time between two time points in ISO 8601 format, expressed as a duration. For example, an earning rule with an `interval` of `P2D` will be valid every other day.
        - `validity_day_of_week` integer[] — Integer array corresponding to the particular days of the week in which the voucher is valid. - `0` Sunday - `1` Monday - `2` Tuesday - `3` Wednesday - `4` Thursday - `5` Friday - `6` Saturday
        - `validity_hours` ValidityHours — Determines the hours of validity, e.g. to create a happy hours scenario.
          - `daily` object[] — Defines the recurring period(s) when the resource is active. The periods should not overlap.
            - `start_time` string, time — Defines the starting hour of validity in the HH:mm format. The resource is *inactive before* this time.
            - `days_of_week` integer[] — Integer array corresponding to the particular days of the week in which the resource is valid. - `0` Sunday - `1` Monday - `2` Tuesday - `3` Wednesday - `4` Thursday - `5` Friday - `6` Saturday
            - `expiration_time` string, time — Defines the ending hour of validity in the HH:mm format. The resource is *inactive after* this time.
        - `active` boolean — A flag indicating whether the campaign is active or not active. A campaign can be disabled even though it's within the active period defined by the `start_date` and `expiration_date` using the [Disable Campaign](/api-reference/disable-campaign) endpoint. - `true` indicates an *active* campaign - `false` indicates an *inactive* campaign
        - `category_id` string — Unique category ID that this campaign belongs to.
        - `object` string — The type of the object represented by the campaign object. This object stores information about the campaign.
      - `campaign_id` string — Promotion tier's parent campaign's unique ID.
      - `active` boolean — A flag to toggle the promotion tier on or off. You can disable a promotion tier even though it's within the active period defined by the `start_date` and `expiration_date`. - `true` indicates an *active* promotion tier - `false` indicates an *inactive* promotion tier
      - `start_date` string, date-time — Activation timestamp defines when the promotion tier starts to be active in ISO 8601 format. Promotion tier is *inactive before* this date.
      - `expiration_date` string, date-time — Activation timestamp defines when the promotion tier expires in ISO 8601 format. Promotion tier is *inactive after* this date.
      - `validity_timeframe` ValidityTimeframe — Set recurrent time periods when the earning rule is valid. For example, valid for 1 hour every other day.`start_date` **required** when including the `validity_timeframe`.
        - `duration` string — Defines the amount of time an earning rule will be active in ISO 8601 format. For example, an earning rule with a `duration` of `PT1H` will be valid for a duration of one hour.
        - `interval` string — Defines the intervening time between two time points in ISO 8601 format, expressed as a duration. For example, an earning rule with an `interval` of `P2D` will be valid every other day.
      - `validity_day_of_week` integer[] — Integer array corresponding to the particular days of the week in which the voucher is valid. - `0` Sunday - `1` Monday - `2` Tuesday - `3` Wednesday - `4` Thursday - `5` Friday - `6` Saturday
      - `validity_hours` ValidityHours — Determines the hours of validity, e.g. to create a happy hours scenario.
        - `daily` object[] — Defines the recurring period(s) when the resource is active. The periods should not overlap.
          - `start_time` string, time — Defines the starting hour of validity in the HH:mm format. The resource is *inactive before* this time.
          - `days_of_week` integer[] — Integer array corresponding to the particular days of the week in which the resource is valid. - `0` Sunday - `1` Monday - `2` Tuesday - `3` Wednesday - `4` Thursday - `5` Friday - `6` Saturday
          - `expiration_time` string, time — Defines the ending hour of validity in the HH:mm format. The resource is *inactive after* this time.
      - `summary` object — Contains statistics about promotion tier redemptions and orders.
        - `redemptions` object — Contains statistics about promotion tier redemptions.
          - `total_redeemed` integer — Number of times the promotion tier was redeemed.
        - `orders` object — Contains statistics about orders related to the promotion tier.
          - `total_amount` integer — Sum of order totals.
          - `total_discount_amount` integer — Sum of total discount applied using the promotion tier.
      - `object` string — The type of the object represented by JSON. This object stores information about the promotion tier.
      - `validation_rule_assignments` ValidationRuleAssignmentsList — Validation Rule Assignments List
        - `object` string, required — The type of the object represented by JSON. This object stores information about validation rule assignments.
        - `data_ref` string, required — Identifies the name of the JSON property that contains the array of validation rule assignments.
        - `data` ValidationRuleAssignment[], required — A dictionary that contains an array of validation rule assignments.
          - `id` string, required — Validation rule assignment ID.
          - `rule_id` string, required — Validation rule ID.
          - `related_object_id` string, required — The resource ID to which the validation rule was assigned.
          - `related_object_type` 'voucher' | 'campaign' | 'earning_rule' | 'reward_assignment' | 'promotion_tier' | 'distribution', required — The type of resource to which the validation rule was assigned.
          - `created_at` string, date-time, required — Timestamp representing the date and time when the validation rule assignment was created. The value is shown in the ISO 8601 format.
          - `object` 'validation_rules_assignment', required — The type of the object represented by the ID.
        - `total` integer, required — Total number of validation rule assignments.
      - `category_id` string — Promotion tier category ID.
      - `categories` Category[]
        - `id` string, required — Unique category ID assigned by Voucherify.
        - `name` string, required — Category name.
        - `hierarchy` integer, required — Category hierarchy. Categories with lower hierarchy are processed before categories with higher hierarchy value.
        - `object` 'category', required — The type of the object represented by the JSON. This object stores information about the category.
        - `created_at` string, date-time, required — Timestamp representing the date and time when the category was created. The value is shown in the ISO 8601 format.
        - `updated_at` string, date-time — Timestamp representing the date and time when the category was updated. The value is shown in the ISO 8601 format.
    - `reward` RedemptionRewardResult
      - `customer` SimpleCustomer, required — Simplified customer data.
        - `id` string — Unique identifier of an existing customer. It is assigned by Voucherify.
        - `name` string — Customer's first and last name.
        - `email` string — Customer's email address.
        - `source_id` string — A unique identifier of the customer. It can be a customer ID or email from a CRM system, database, or a third-party service.
        - `metadata` object — A set of custom key/value pairs that are attached to the customer. It stores all custom attributes assigned to the customer.
        - `object` 'customer' — The type of the object represented by JSON.
      - `assignment_id` string, nullable, required — Unique reward assignment ID assigned by Voucherify.
      - `voucher` Voucher, required — This is an object representing a voucher.
        - `id` string — Assigned by the Voucherify API, identifies the voucher.
        - `code` string — A code that identifies a voucher. Pattern can use all letters of the English alphabet, Arabic numerals, and special characters.
        - `campaign` string — A unique campaign name, identifies the voucher's parent campaign.
        - `campaign_id` string — Assigned by the Voucherify API, identifies the voucher's parent campaign.
        - `category` string — Tag defining the category that this voucher belongs to. Useful when listing vouchers using the List Vouchers endpoint.
        - `category_id` string — Unique category ID assigned by Voucherify.
        - `type` 'GIFT_VOUCHER' | 'DISCOUNT_VOUCHER' | 'LOYALTY_CARD' — Defines the type of the voucher.
        - `discount` union — Contains information about discount.
          - object
            - `type` 'AMOUNT', required — Defines the type of the voucher.
            - `amount_off` number, required — 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` string — Formula used to dynamically calculate the discount.
            - `aggregated_amount_limit` integer — Maximum discount amount per order.
            - `effect` 'APPLY_TO_ORDER' | 'APPLY_TO_ITEMS' | 'APPLY_TO_ITEMS_PROPORTIONALLY' | 'APPLY_TO_ITEMS_PROPORTIONALLY_BY_QUANTITY' | 'APPLY_TO_ITEMS_BY_QUANTITY'
            - `is_dynamic` boolean — Flag indicating whether the discount was calculated using a formula.
          - object
            - `type` 'UNIT', required — Discount type.
            - `unit_off` integer — Number of units to be granted a full value discount.
            - `unit_off_formula` string — Formula used to dynamically calculate the number of units.
            - `effect` 'ADD_MISSING_ITEMS' | 'ADD_NEW_ITEMS' | 'ADD_MANY_ITEMS' | 'ADD_SAME_ITEMS'
            - `unit_type` string, required — The product deemed as free, chosen from product inventory (e.g. time, items).
            - `product` SimpleProductDiscountUnit
              - …
            - `sku` SimpleSkuDiscountUnit
              - …
            - `is_dynamic` boolean — Flag indicating whether the discount was calculated using a formula.
          - object
            - `type` 'UNIT', required — Discount type.
            - `effect` 'ADD_MANY_ITEMS' — Defines how the discount is applied to the customer's order.
            - `units` DiscountUnitMultipleOneUnit[], required
              - …
          - object
            - `type` 'PERCENT', required — Defines the type of the voucher.
            - `percent_off` number, required — The percent discount that the customer will receive.
            - `percent_off_formula` string — Formula used to dynamically calculate the discount.
            - `amount_limit` number — 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` integer — Maximum discount amount per order.
            - `effect` 'APPLY_TO_ORDER' | 'APPLY_TO_ITEMS'
            - `is_dynamic` boolean — Flag indicating whether the discount was calculated using a formula.
          - object
            - `type` 'FIXED', required — Defines the type of the voucher.
            - `fixed_amount` number, required — 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` string — Formula used to dynamically calculate the discount.
            - `effect` 'APPLY_TO_ORDER' | 'APPLY_TO_ITEMS'
            - `is_dynamic` boolean — Flag indicating whether the discount was calculated using a formula.
        - `gift` object — Object representing gift parameters. Child attributes are present only if `type` is `GIFT_VOUCHER`. Defaults to `null`.
          - `amount` integer — Total gift card income over the lifetime of the card. The value is multiplied by 100 to represent 2 decimal places. For example `10000 cents` for `$100.00`.
          - `subtracted_amount` integer — Total amount of subtracted credits over the gift card lifetime. The value is multiplied by 100 to represent 2 decimal places. For example `10000 cents` for `$100.00`.
          - `balance` integer — Available funds. The value is multiplied by 100 to represent 2 decimal places. For example `10000 cents` for `$100.00`.
          - `effect` 'APPLY_TO_ORDER' | 'APPLY_TO_ITEMS' — Defines how the credits are applied to the customer's order.
        - `loyalty_card` object — Object representing loyalty card parameters. Child attributes are present only if `type` is `LOYALTY_CARD`. Defaults to `null`.
          - `points` integer — Total number of points added to the loyalty card over its lifespan.
          - `balance` integer — Points available for reward redemption. This is calculated as follows: `balance` = `points` - `expired_points` - `subtracted_points` - `redemption.redeemed_points`.
          - `next_expiration_date` string, date — The next closest date when the next set of points are due to expire.
          - `next_expiration_points` integer — The amount of points that are set to expire next.
          - `pending_points` integer — Shows the number of pending points that will be added to the loyalty card when they are activated automatically or manually.
          - `expired_points` integer — Shows the total number of expired points over the lifetime of the loyalty card.
          - `subtracted_points` integer — Shows the total number of subtracted points over the lifetime of the loyalty card.
        - `start_date` string, date-time — Activation timestamp defines when the code starts to be active in ISO 8601 format. Voucher is *inactive before* this date.
        - `expiration_date` string, date-time — Expiration timestamp defines when the code expires in ISO 8601 format. Voucher is *inactive after* this date.
        - `validity_timeframe` ValidityTimeframe — Set recurrent time periods when the earning rule is valid. For example, valid for 1 hour every other day.`start_date` **required** when including the `validity_timeframe`.
          - `duration` string — Defines the amount of time an earning rule will be active in ISO 8601 format. For example, an earning rule with a `duration` of `PT1H` will be valid for a duration of one hour.
          - `interval` string — Defines the intervening time between two time points in ISO 8601 format, expressed as a duration. For example, an earning rule with an `interval` of `P2D` will be valid every other day.
        - `validity_day_of_week` integer[] — Integer array corresponding to the particular days of the week in which the voucher is valid. - `0` Sunday - `1` Monday - `2` Tuesday - `3` Wednesday - `4` Thursday - `5` Friday - `6` Saturday
        - `validity_hours` ValidityHours — Determines the hours of validity, e.g. to create a happy hours scenario.
          - `daily` object[] — Defines the recurring period(s) when the resource is active. The periods should not overlap.
            - `start_time` string, time — Defines the starting hour of validity in the HH:mm format. The resource is *inactive before* this time.
            - `days_of_week` integer[] — Integer array corresponding to the particular days of the week in which the resource is valid. - `0` Sunday - `1` Monday - `2` Tuesday - `3` Wednesday - `4` Thursday - `5` Friday - `6` Saturday
            - `expiration_time` string, time — Defines the ending hour of validity in the HH:mm format. The resource is *inactive after* this time.
        - `active` boolean, nullable — A flag to toggle the voucher on or off. You can disable a voucher even though it's within the active period defined by the `start_date` and `expiration_date`. - `true` indicates an *active* voucher - `false` indicates an *inactive* voucher
        - `additional_info` string — An optional field to keep any extra textual information about the code such as a code description and details.
        - `metadata` object — The metadata object stores all custom attributes assigned to the code. A set of key/value pairs that you can attach to a voucher object. It can be useful for storing additional information about the voucher in a structured format.
        - `assets` VoucherAssets — Stores links to images of QR and barcode that correspond to an encrypted voucher code.
          - `qr` object — Stores Quick Response (QR) representation of encrypted code.
            - `id` string — Encrypted voucher code ID.
            - `url` string — URL to QR code *Optional:* Attach query parameters to base URL to customize the image of the encrypted voucher code. - `size`: integer value from `1` to `100` - `format`: string, either `png` (default) or `svg`
          - `barcode` object — Stores barcode representation of encrypted code.
            - `id` string — Encrypted voucher code ID.
            - `url` string — URL to barcode *Optional:* Attach query parameters to base URL to customize the image of the encrypted voucher code. - `size`: integer value from `1` to `100` - `format`: string, either `png` (default) or `svg`
        - `is_referral_code` boolean, nullable — Flag indicating whether this voucher is a referral code; `true` for campaign type `REFERRAL_PROGRAM`.
        - `created_at` string, date-time — Timestamp representing the date and time when the voucher was created. The value is shown in the ISO 8601 format.
        - `updated_at` string, date-time — Timestamp representing the date and time when the voucher was last updated in ISO 8601 format.
        - `holder_id` string — Unique customer identifier of the redeemable holder. It equals to the customer ID assigned by Voucherify.
        - `referrer_id` string — Unique identifier of the referring person.
        - `object` string — The type of the object represented by JSON. Default is `voucher`.
        - `publish` object — Stores a summary of publication events: an event counter and endpoint to return details of each event. Publication is an assignment of a code to a customer, e.g. through a distribution.
          - `object` string — The type of the object represented is by default `list`. To get this list, you need to make a call to the endpoint returned in the `url` attribute.
          - `count` integer — Publication events counter.
          - `url` string — The endpoint where this list of publications can be accessed using a **GET** method. `/v1/vouchers/{voucher_code}/publications`
        - `redemption` object — Stores a summary of redemptions that have been applied to the voucher.
          - `quantity` integer — How many times a voucher can be redeemed. A `null` value means unlimited.
          - `redeemed_quantity` integer — How many times a voucher has already been redeemed.
          - `redeemed_points` integer — Total loyalty points redeemed.
          - `object` string — The type of the object represented is by default `list`. To get this list, you need to make a call to the endpoint returned in the url attribute.
          - `url` string — The endpoint where this list of redemptions can be accessed using a **GET** method. `/v1/vouchers/{voucher_code}/redemptions`
        - `categories` Category[] — Contains details about the category.
          - `id` string, required — Unique category ID assigned by Voucherify.
          - `name` string, required — Category name.
          - `hierarchy` integer, required — Category hierarchy. Categories with lower hierarchy are processed before categories with higher hierarchy value.
          - `object` 'category', required — The type of the object represented by the JSON. This object stores information about the category.
          - `created_at` string, date-time, required — Timestamp representing the date and time when the category was created. The value is shown in the ISO 8601 format.
          - `updated_at` string, date-time — Timestamp representing the date and time when the category was updated. The value is shown in the ISO 8601 format.
        - `validation_rules_assignments` ValidationRulesAssignmentsList — List of Validation Rules Assignments
          - `object` 'list', required — The type of the object represented by JSON. This object stores information about validation rules assignments.
          - `data_ref` 'data', required — Identifies the name of the attribute that contains the array of validation rules assignments.
          - `data` BusValRuleAssignment[], required — Contains array of validation rules assignments.
            - `id` string, required — The unique identifier for a assignment
            - `rule_id` string, required — The unique identifier for a rule
            - `related_object_id` string, required — The unique identifier for a related object
            - `related_object_type` string, required — The type of related object
            - `created_at` string, date-time — Timestamp representing the date and time when the object was created. The value is shown in the ISO 8601 format.
            - `updated_at` string, date-time — Timestamp representing the date and time when the object was last updated in ISO 8601 format.
            - `object` 'validation_rules_assignment', required — The type of the object represented by JSON.
            - `validation_status` 'VALID' | 'PARTIALLY_VALID' | 'INVALID' — The validation status of the assignment
            - `validation_omitted_rules` string[] — The list of omitted rules
          - `total` integer, required — Total number of validation rules assignments.
      - `product` Product, required — This is an object representing a product. This entity should be used to map product items from your inventory management system. The aim of products is to build which reflect product-specific campaigns.
        - `id` string, required — Unique product ID assigned by Voucherify.
        - `source_id` string, nullable, required — Unique product source ID.
        - `name` string, nullable, required — Unique user-defined product name.
        - `price` integer, nullable, required — Unit price. It is represented by a value multiplied by 100 to accurately reflect 2 decimal places, such as `$100.00` being expressed as `10000`.
        - `attributes` string[], required — A list of product attributes whose values you can customize for given SKUs: `["color","size","ranking"]`. Each child SKU can have a unique value for a given attribute.
        - `metadata` object, required — The metadata object stores all custom attributes assigned to the product. A set of key/value pairs that you can attach to a product object. It can be useful for storing additional information about the product in a structured format. It can be used to create product collections.
        - `image_url` string, nullable — The HTTPS URL pointing to the .png or .jpg file that will be used to render the product image.
        - `created_at` string, date-time — Timestamp representing the date and time when the product was created. The value is shown in the ISO 8601 format.
        - `updated_at` string, date-time, nullable — Timestamp representing the date and time when the product was updated. The value is shown in the ISO 8601 format.
        - `object` 'product', required — The type of the object represented by JSON. This object stores information about the product.
        - `skus` SkusListForProduct — Contains information about child SKUs.
          - `object` string, required — The type of the object represented by JSON. This object stores information about SKUs.
          - `data_ref` string, required — Identifies the name of the JSON property that contains the array of SKUs.
          - `data` Sku[], required — A dictionary that contains an array of SKUs.
            - `id` string, required — A unique identifier that represents the SKU and is assigned by Voucherify.
            - `source_id` string, nullable, required — A unique SKU identifier from your inventory system.
            - `product_id` string, required — The parent product's unique ID.
            - `sku` string, nullable, required — Unique user-defined SKU name.
            - `price` integer, nullable, required — Unit price. It is represented by a value multiplied by 100 to accurately reflect 2 decimal places, such as `$100.00` being expressed as `10000`.
            - `currency` string, nullable — SKU price currency.
            - `attributes` object, required — The attributes object stores values for all custom attributes inherited by the SKU from the parent product. A set of key/value pairs that are attached to a SKU object and are unique to each SKU within a product family.
            - `image_url` string, nullable, required — The HTTPS URL pointing to the .png or .jpg file that will be used to render the SKU image.
            - `metadata` object, required — The metadata object stores all custom attributes assigned to the SKU. A set of key/value pairs that you can attach to a SKU object. It can be useful for storing additional information about the SKU in a structured format. It can be used to create product collections.
            - `created_at` string, date-time, required — Timestamp representing the date and time when the SKU was created. The value is shown in the ISO 8601 format.
            - `updated_at` string, date-time, nullable, required — Timestamp representing the date and time when the SKU was updated. The value is shown in the ISO 8601 format.
            - `object` 'sku', required — The type of the object represented by JSON. This object stores information about the `SKU`.
          - `total` integer, required — Total number of SKUs in the product.
      - `sku` Sku, required — This is an object representing a product SKU.
        - `id` string, required — A unique identifier that represents the SKU and is assigned by Voucherify.
        - `source_id` string, nullable, required — A unique SKU identifier from your inventory system.
        - `product_id` string, required — The parent product's unique ID.
        - `sku` string, nullable, required — Unique user-defined SKU name.
        - `price` integer, nullable, required — Unit price. It is represented by a value multiplied by 100 to accurately reflect 2 decimal places, such as `$100.00` being expressed as `10000`.
        - `currency` string, nullable — SKU price currency.
        - `attributes` object, required — The attributes object stores values for all custom attributes inherited by the SKU from the parent product. A set of key/value pairs that are attached to a SKU object and are unique to each SKU within a product family.
        - `image_url` string, nullable, required — The HTTPS URL pointing to the .png or .jpg file that will be used to render the SKU image.
        - `metadata` object, required — The metadata object stores all custom attributes assigned to the SKU. A set of key/value pairs that you can attach to a SKU object. It can be useful for storing additional information about the SKU in a structured format. It can be used to create product collections.
        - `created_at` string, date-time, required — Timestamp representing the date and time when the SKU was created. The value is shown in the ISO 8601 format.
        - `updated_at` string, date-time, nullable, required — Timestamp representing the date and time when the SKU was updated. The value is shown in the ISO 8601 format.
        - `object` 'sku', required — The type of the object represented by JSON. This object stores information about the `SKU`.
      - `loyalty_tier_id` string, nullable, required — Unique loyalty tier ID assigned by Voucherify.
      - `id` string — Unique reward ID.
      - `name` string — Name of the reward.
      - `object` 'reward' — The type of the object represented by the JSON
      - `created_at` string, date-time — Timestamp representing the date and time when the redemption was created. The value is shown in the ISO 8601 format.
      - `updated_at` string, date-time — Timestamp in ISO 8601 format indicating when the reward was updated.
      - `parameters` object — These are parameters representing a material reward.
        - `campaign` object — Defines the product redeemed as a reward.
          - `id` string — Campaign unique ID.
          - `balance` integer — Points available for reward redemption. This is calculated as follows: `balance` = `points` - `expired_points` - `subtracted_points` - `redemption.redeemed_points`.
          - `type` string — Defines the type of the campaign.
        - `product` object — Defines the product redeemed as a reward.
          - `id` string — Unique product ID, assigned by Voucherify.
          - `sku_id` string — Unique identifier of the SKU. It is assigned by Voucherify.
        - `coin` object — Defines the ratio by mapping the number of loyalty points in `points_ratio` to a predefined cash amount in `exchange_ratio`.
          - `exchange_ratio` integer — The cash equivalent of the points defined in the `points_ratio` property.
          - `points_ratio` integer — The number of loyalty points that will map to the predefined cash amount defined by the `exchange_ratio` property.
      - `metadata` object — A set of custom key/value pairs that you can attach to a reward. The metadata object stores all custom attributes assigned to the reward.
      - `type` 'CAMPAIGN' | 'COIN' | 'MATERIAL' — Reward type.
    - `gift` object — Contains the amount subtracted from the gift card for the redemption.
      - `amount` integer — Amount subtracted from the gift card as a result of the redemption. The amount is expressed as the smallest currency unit (e.g. 100 cents for $1.00).
    - `loyalty_card` object — Contains the number of points subtracted from the loyalty card for the redemption.
      - `points` integer — Number of points subtracted from the loyalty card as a result of the redemption.
    - `voucher` object — This is an object representing a voucher holder.
      - `id` string — Assigned by the Voucherify API, identifies the voucher.
      - `code` string — A code that identifies a voucher. Pattern can use all letters of the English alphabet, Arabic numerals, and special characters.
      - `campaign` string — A unique campaign name, identifies the voucher's parent campaign.
      - `campaign_id` string — Assigned by the Voucherify API, identifies the voucher's parent campaign.
      - `category` string — Tag defining the category that this voucher belongs to. Useful when listing vouchers using the List Vouchers endpoint.
      - `category_id` string — Unique category ID assigned by Voucherify.
      - `type` 'GIFT_VOUCHER' | 'DISCOUNT_VOUCHER' | 'LOYALTY_CARD' — Defines the type of the voucher.
      - `discount` union — Contains information about discount.
        - object
          - `type` 'AMOUNT', required — Defines the type of the voucher.
          - `amount_off` number, required — 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` string — Formula used to dynamically calculate the discount.
          - `aggregated_amount_limit` integer — Maximum discount amount per order.
          - `effect` 'APPLY_TO_ORDER' | 'APPLY_TO_ITEMS' | 'APPLY_TO_ITEMS_PROPORTIONALLY' | 'APPLY_TO_ITEMS_PROPORTIONALLY_BY_QUANTITY' | 'APPLY_TO_ITEMS_BY_QUANTITY'
          - `is_dynamic` boolean — Flag indicating whether the discount was calculated using a formula.
        - object
          - `type` 'UNIT', required — Discount type.
          - `unit_off` integer — Number of units to be granted a full value discount.
          - `unit_off_formula` string — Formula used to dynamically calculate the number of units.
          - `effect` 'ADD_MISSING_ITEMS' | 'ADD_NEW_ITEMS' | 'ADD_MANY_ITEMS' | 'ADD_SAME_ITEMS'
          - `unit_type` string, required — The product deemed as free, chosen from product inventory (e.g. time, items).
          - `product` SimpleProductDiscountUnit
            - `id` string, required — Unique product ID, assigned by Voucherify.
            - `source_id` string — Product's source ID.
            - `name` string, required — Product name.
          - `sku` SimpleSkuDiscountUnit
            - `id` string, required — Unique SKU ID, assigned by Voucherify.
            - `source_id` string — Product variant's source ID.
            - `name` string, required — Sku name
          - `is_dynamic` boolean — Flag indicating whether the discount was calculated using a formula.
        - object
          - `type` 'UNIT', required — Discount type.
          - `effect` 'ADD_MANY_ITEMS' — Defines how the discount is applied to the customer's order.
          - `units` DiscountUnitMultipleOneUnit[], required
            - `unit_off` number — Number of units to be granted a full value discount.
            - `unit_off_formula` string — Formula used to dynamically calculate the number of units.
            - `effect` 'ADD_NEW_ITEMS' | 'ADD_MISSING_ITEMS', required — Defines how the unit is added to the customer's order.
            - `unit_type` string, required — The product deemed as free, chosen from product inventory (e.g. time, items).
            - `product` SimpleProductDiscountUnit
              - …
            - `sku` SimpleSkuDiscountUnit
              - …
        - object
          - `type` 'PERCENT', required — Defines the type of the voucher.
          - `percent_off` number, required — The percent discount that the customer will receive.
          - `percent_off_formula` string — Formula used to dynamically calculate the discount.
          - `amount_limit` number — 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` integer — Maximum discount amount per order.
          - `effect` 'APPLY_TO_ORDER' | 'APPLY_TO_ITEMS'
          - `is_dynamic` boolean — Flag indicating whether the discount was calculated using a formula.
        - object
          - `type` 'FIXED', required — Defines the type of the voucher.
          - `fixed_amount` number, required — 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` string — Formula used to dynamically calculate the discount.
          - `effect` 'APPLY_TO_ORDER' | 'APPLY_TO_ITEMS'
          - `is_dynamic` boolean — Flag indicating whether the discount was calculated using a formula.
      - `gift` object — Object representing gift parameters. Child attributes are present only if `type` is `GIFT_VOUCHER`. Defaults to `null`.
        - `amount` integer — Total gift card income over the lifetime of the card. The value is multiplied by 100 to represent 2 decimal places. For example `10000 cents` for `$100.00`.
        - `subtracted_amount` integer — Total amount of subtracted credits over the gift card lifetime. The value is multiplied by 100 to represent 2 decimal places. For example `10000 cents` for `$100.00`.
        - `balance` integer — Available funds. The value is multiplied by 100 to represent 2 decimal places. For example `10000 cents` for `$100.00`.
        - `effect` 'APPLY_TO_ORDER' | 'APPLY_TO_ITEMS' — Defines how the credits are applied to the customer's order.
      - `loyalty_card` object — Object representing loyalty card parameters. Child attributes are present only if `type` is `LOYALTY_CARD`. Defaults to `null`.
        - `points` integer — Total number of points added to the loyalty card over its lifespan.
        - `balance` integer — Points available for reward redemption. This is calculated as follows: `balance` = `points` - `expired_points` - `subtracted_points` - `redemption.redeemed_points`.
        - `next_expiration_date` string, date — The next closest date when the next set of points are due to expire.
        - `next_expiration_points` integer — The amount of points that are set to expire next.
        - `pending_points` integer — Shows the number of pending points that will be added to the loyalty card when they are activated automatically or manually.
        - `expired_points` integer — Shows the total number of expired points over the lifetime of the loyalty card.
        - `subtracted_points` integer — Shows the total number of subtracted points over the lifetime of the loyalty card.
      - `start_date` string, date-time — Activation timestamp defines when the code starts to be active in ISO 8601 format. Voucher is *inactive before* this date.
      - `expiration_date` string, date-time — Expiration timestamp defines when the code expires in ISO 8601 format. Voucher is *inactive after* this date.
      - `validity_timeframe` ValidityTimeframe — Set recurrent time periods when the earning rule is valid. For example, valid for 1 hour every other day.`start_date` **required** when including the `validity_timeframe`.
        - `duration` string — Defines the amount of time an earning rule will be active in ISO 8601 format. For example, an earning rule with a `duration` of `PT1H` will be valid for a duration of one hour.
        - `interval` string — Defines the intervening time between two time points in ISO 8601 format, expressed as a duration. For example, an earning rule with an `interval` of `P2D` will be valid every other day.
      - `validity_day_of_week` integer[] — Integer array corresponding to the particular days of the week in which the voucher is valid. - `0` Sunday - `1` Monday - `2` Tuesday - `3` Wednesday - `4` Thursday - `5` Friday - `6` Saturday
      - `validity_hours` ValidityHours — Determines the hours of validity, e.g. to create a happy hours scenario.
        - `daily` object[] — Defines the recurring period(s) when the resource is active. The periods should not overlap.
          - `start_time` string, time — Defines the starting hour of validity in the HH:mm format. The resource is *inactive before* this time.
          - `days_of_week` integer[] — Integer array corresponding to the particular days of the week in which the resource is valid. - `0` Sunday - `1` Monday - `2` Tuesday - `3` Wednesday - `4` Thursday - `5` Friday - `6` Saturday
          - `expiration_time` string, time — Defines the ending hour of validity in the HH:mm format. The resource is *inactive after* this time.
      - `active` boolean, nullable — A flag to toggle the voucher on or off. You can disable a voucher even though it's within the active period defined by the `start_date` and `expiration_date`. - `true` indicates an *active* voucher - `false` indicates an *inactive* voucher
      - `additional_info` string — An optional field to keep any extra textual information about the code such as a code description and details.
      - `metadata` object — The metadata object stores all custom attributes assigned to the code. A set of key/value pairs that you can attach to a voucher object. It can be useful for storing additional information about the voucher in a structured format.
      - `assets` VoucherAssets — Stores links to images of QR and barcode that correspond to an encrypted voucher code.
        - `qr` object — Stores Quick Response (QR) representation of encrypted code.
          - `id` string — Encrypted voucher code ID.
          - `url` string — URL to QR code *Optional:* Attach query parameters to base URL to customize the image of the encrypted voucher code. - `size`: integer value from `1` to `100` - `format`: string, either `png` (default) or `svg`
        - `barcode` object — Stores barcode representation of encrypted code.
          - `id` string — Encrypted voucher code ID.
          - `url` string — URL to barcode *Optional:* Attach query parameters to base URL to customize the image of the encrypted voucher code. - `size`: integer value from `1` to `100` - `format`: string, either `png` (default) or `svg`
      - `is_referral_code` boolean, nullable — Flag indicating whether this voucher is a referral code; `true` for campaign type `REFERRAL_PROGRAM`.
      - `created_at` string, date-time — Timestamp representing the date and time when the voucher was created. The value is shown in the ISO 8601 format.
      - `updated_at` string, date-time — Timestamp representing the date and time when the voucher was last updated in ISO 8601 format.
      - `holder_id` string — Unique customer identifier of the redeemable holder. It equals to the customer ID assigned by Voucherify.
      - `referrer_id` string — Unique identifier of the referring person.
      - `object` string — The type of the object represented by JSON. Default is `voucher`.
      - `publish` object — Stores a summary of publication events: an event counter and endpoint to return details of each event. Publication is an assignment of a code to a customer, e.g. through a distribution.
        - `object` string — The type of the object represented is by default `list`. To get this list, you need to make a call to the endpoint returned in the `url` attribute.
        - `count` integer — Publication events counter.
        - `url` string — The endpoint where this list of publications can be accessed using a **GET** method. `/v1/vouchers/{voucher_code}/publications`
      - `redemption` object — Stores a summary of redemptions that have been applied to the voucher.
        - `quantity` integer — How many times a voucher can be redeemed. A `null` value means unlimited.
        - `redeemed_quantity` integer — How many times a voucher has already been redeemed.
        - `redeemed_points` integer — Total loyalty points redeemed.
        - `object` string — The type of the object represented is by default `list`. To get this list, you need to make a call to the endpoint returned in the url attribute.
        - `url` string — The endpoint where this list of redemptions can be accessed using a **GET** method. `/v1/vouchers/{voucher_code}/redemptions`
      - `categories` CategoryWithStackingRulesType[] — Contains details about the category.
        - `id` string, required — Unique category ID assigned by Voucherify.
        - `name` string, required — Category name.
        - `hierarchy` integer, required — Category hierarchy. Categories with lower hierarchy are processed before categories with higher hierarchy value.
        - `object` 'category', required — The type of the object represented by the JSON. This object stores information about the category.
        - `created_at` string, date-time, required — Timestamp representing the date and time when the category was created. The value is shown in the ISO 8601 format.
        - `updated_at` string, date-time — Timestamp representing the date and time when the category was updated. The value is shown in the ISO 8601 format.
        - `stacking_rules_type` 'JOINT' | 'EXCLUSIVE' — The type of the stacking rule eligibility.
      - `validation_rules_assignments` ValidationRulesAssignmentsList — List of Validation Rules Assignments
        - `object` 'list', required — The type of the object represented by JSON. This object stores information about validation rules assignments.
        - `data_ref` 'data', required — Identifies the name of the attribute that contains the array of validation rules assignments.
        - `data` BusValRuleAssignment[], required — Contains array of validation rules assignments.
          - `id` string, required — The unique identifier for a assignment
          - `rule_id` string, required — The unique identifier for a rule
          - `related_object_id` string, required — The unique identifier for a related object
          - `related_object_type` string, required — The type of related object
          - `created_at` string, date-time — Timestamp representing the date and time when the object was created. The value is shown in the ISO 8601 format.
          - `updated_at` string, date-time — Timestamp representing the date and time when the object was last updated in ISO 8601 format.
          - `object` 'validation_rules_assignment', required — The type of the object represented by JSON.
          - `validation_status` 'VALID' | 'PARTIALLY_VALID' | 'INVALID' — The validation status of the assignment
          - `validation_omitted_rules` string[] — The list of omitted rules
        - `total` integer, required — Total number of validation rules assignments.
      - `holder` SimpleCustomer — Simplified customer data.
        - `id` string — Unique identifier of an existing customer. It is assigned by Voucherify.
        - `name` string — Customer's first and last name.
        - `email` string — Customer's email address.
        - `source_id` string — A unique identifier of the customer. It can be a customer ID or email from a CRM system, database, or a third-party service.
        - `metadata` object — A set of custom key/value pairs that are attached to the customer. It stores all custom attributes assigned to the customer.
        - `object` 'customer' — The type of the object represented by JSON.
  - `order` object — Order information.
    - `id` string — Unique ID assigned by Voucherify of an existing order that will be linked to the redemption of this request.
    - `source_id` string, nullable — Unique source ID of an existing order that will be linked to the redemption of this request.
    - `status` 'CREATED' | 'PAID' | 'CANCELED' | 'FULFILLED' — The order status.
    - `amount` integer — 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` integer — 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` integer — 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` integer — 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` integer — 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` integer — 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` integer — 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` integer — 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` integer — 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` object — 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` 'order' — The type of the object represented by JSON.
    - `created_at` string, date-time — Timestamp representing the date and time when the order was created. The value is shown in the ISO 8601 format.
    - `updated_at` string, date-time, nullable — Timestamp representing the date and time when the order was last updated in ISO 8601 format.
    - `customer_id` string, nullable — Unique customer identifier of the customer making the purchase. The ID is assigned by Voucherify.
    - `referrer_id` string, nullable — Unique referrer ID.
    - `customer` CustomerId
      - `id` string, required — A unique identifier of an existing customer.
      - `object` 'customer', required — The type of the object represented by JSON.
    - `referrer` ReferrerId
      - `id` string, required — A unique identifier of an existing customer.
      - `object` 'customer', required — The type of the object represented by JSON.
    - `redemptions` object
    - `items` object[] — Array of items applied to the order. It can include up to 500 items.
      - `id` string — Unique identifier of the order line item.
      - `sku_id` string — Unique identifier of the SKU. It is assigned by Voucherify.
      - `product_id` string — Unique identifier of the product. It is assigned by Voucherify.
      - `related_object` 'product' | 'sku' — Used along with the source_id property, can be set to either sku or product.
      - `source_id` string — 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` integer — The quantity of the particular item in the cart.
      - `discount_quantity` integer — Number of dicounted items.
      - `initial_quantity` integer — 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` integer — The total amount of the order item (price * quantity).
      - `discount_amount` integer — Sum of all order-item-level discounts applied to the order.
      - `applied_discount_amount` integer — This field shows the order-level discount applied.
      - `applied_discount_quantity` integer — Number of the discounted items applied in the transaction.
      - `applied_quantity` integer — 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` integer — 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` integer — 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` integer — 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` integer — 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` object — An object containing details of the related product.
        - `id` string — A unique identifier that represents the product and is assigned by Voucherify.
        - `source_id` string — 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` boolean — 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` string — Product name.
        - `metadata` object — 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` number — Product price. A positive integer in the smallest currency unit (e.g. 100 cents for $1.00).
      - `sku` object — An object containing details of the related SKU.
        - `id` string — A unique identifier that represents the SKU and is assigned by Voucherify.
        - `source_id` string — 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` boolean — 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` string — The SKU name.
        - `price` number — SKU price. A positive integer in the smallest currency unit (e.g. 100 cents for $1.00).
        - `metadata` object — 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` 'order_item', required — The type of the object represented by JSON.
      - `metadata` object — 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.
      - `application_details` object[] — Array containing details about the items that are replaced and the items that are replacements for discounts with the `REPLACE_ITEMS` effect.
        - `source_index` integer — 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`.
        - `source_applied_quantity` integer — Number of source units that are replaced.
        - `source_applied_quantity_amount` integer — Amount equal to the price of the units that are replaced. Determines the change of the amount of the source item quantity.
        - `target_index` integer — 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` integer — Number of added target units that are replacements.
        - `target_applied_quantity_amount` integer — 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` integer — Discount amount applied to the target item with regard to the replacement. Equals the `target_applied_quantity_amount` minus `source_applied_quantity_amount`.
  - `inapplicable_redeemables` ValidationsRedeemableInapplicable[] — Lists validation results of each inapplicable redeemable.
    - `status` 'INAPPLICABLE', required — Indicates whether the redeemable can be applied or not applied based on the validation rules.
    - `id` string, required — Redeemable ID, i.e. the voucher code.
    - `object` 'voucher' | 'promotion_tier', required — Redeemable's object type.
    - `result` object, required — Includes the error object with details about the reason why the redeemable is inapplicable
      - `error` Error — Error details
        - `code` integer, required — Error's HTTP status code.
        - `key` string — Short string describing the kind of error which occurred.
        - `message` string, required — A human-readable message providing a short description of the error.
        - `details` string — A human-readable message providing more details about the error.
        - `request_id` string — This ID is useful when troubleshooting and/or finding the root cause of an error response by our support team.
        - `resource_id` string — Unique resource ID that can be used in another endpoint to get more details.
        - `resource_type` string — The resource type.
        - `error` object — Includes additional information about the error.
          - `message` string — The message configured by the user in a validation rule.
      - `details` object — Provides details about the reason why the redeemable is inapplicable.
        - `message` string — Generic message from the `message` string shown in the `error` object or the message configured in a validation rule.
        - `key` string — Generic message from the `key` string shown in the `error` object.
      - `bundle` Bundle — 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.
        - `quantity` integer, required — 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`.
        - `limit` integer, required — Determines the maximum number of identified bundles. This also defines the maximum multiplier of the bundle discount.
        - `identified` object[] — 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.
          - `id` string, required — Unique identifier of the product or SKU that meets the bundle condition. This is an ID assigned by Voucherify.
          - `object` 'product' | 'sku', required — Determines the type of the object that meets the bundle condition.
          - `item_index` integer, required — 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.
          - `item_quantity` integer, required — 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`.
        - `missing` object[] — 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.
          - `id` string, required — 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` 'product' | 'products_collection' | 'sku', required — Determines the type of the object that is missing in the customer's order items.
          - `item_quantity` integer, required — Quantity of items that are missing in the order items to meet the bundle conditions.
    - `metadata` object — The metadata object stores all custom attributes in the form of key/value pairs assigned to the redeemable.
    - `categories` CategoryWithStackingRulesType[]
      - `id` string, required — Unique category ID assigned by Voucherify.
      - `name` string, required — Category name.
      - `hierarchy` integer, required — Category hierarchy. Categories with lower hierarchy are processed before categories with higher hierarchy value.
      - `object` 'category', required — The type of the object represented by the JSON. This object stores information about the category.
      - `created_at` string, date-time, required — Timestamp representing the date and time when the category was created. The value is shown in the ISO 8601 format.
      - `updated_at` string, date-time — Timestamp representing the date and time when the category was updated. The value is shown in the ISO 8601 format.
      - `stacking_rules_type` 'JOINT' | 'EXCLUSIVE' — The type of the stacking rule eligibility.
    - `campaign_name` string — Campaign name. Displayed only if the `options.expand` is passed with a `redeemable` value in the validation request body.
    - `campaign_id` string — Unique campaign ID assigned by Voucherify. Displayed only if the `options.expand` is passed with a `redeemable` value in the validation request body.
    - `name` string — Name of the promotion tier. Displayed only if the `options.expand` is passed with a `redeemable` value in the validation request body.
  - `skipped_redeemables` ValidationsRedeemableSkipped[] — Lists validation results of each redeemable. If a redeemable can be applied, the API returns `"status": "APPLICABLE"`.
    - `status` 'SKIPPED', required — Indicates whether the redeemable can be applied or not applied based on the validation rules.
    - `id` string, required — Redeemable ID, i.e. the voucher code.
    - `object` 'voucher' | 'promotion_tier', required — Redeemable's object type.
    - `result` object, required — Provides details about the reason why the redeemable is skipped.
      - `details` union
        - ValidationsRedeemableSkippedResultLimitExceeded — Displayed when the `applicable_redeemables_limit` defined in the stacking rules is exceeded.
          - `key` 'applicable_redeemables_limit_exceeded'
          - `message` string
        - ValidationsRedeemableSkippedResultCategoryLimitExceeded — Displayed when `applicable_redeemables_per_category_limit` defined in the stacking rules is exceeded
          - `key` 'applicable_redeemables_per_category_limit_exceeded'
          - `message` string
        - ValidationsRedeemableSkippedResultRedeemablesLimitExceeded — Displayed when `applicable_exclusive_redeemables_limit` defined in the stacking rules is exceeded.
          - `key` 'applicable_exclusive_redeemables_limit_exceeded'
          - `message` string
        - ValidationsRedeemableSkippedResultRedeemablesCategoryLimitExceeded — Displayed when `applicable_exclusive_redeemables_per_category_limit` defined in the stacking rules is exceeded.
          - `key` 'applicable_exclusive_redeemables_per_category_limit_exceeded'
          - `message` string
        - ValidationsRedeemableSkippedResultExclusionRulesNotMet — Displayed when the redeemable cannot be applied because the exclusion rules are not fulfilled.
          - `key` 'exclusion_rules_not_met'
          - `message` string
        - ValidationsRedeemableSkippedResultPrecedingValidationFailed — Displayed in the ALL application rule when one of the preceding redeeambles is `INAPPLICABLE`, so the rest becomes `SKIPPED`
          - `key` 'preceding_validation_failed'
          - `message` string
    - `metadata` object — The metadata object stores all custom attributes in the form of key/value pairs assigned to the redeemable.
    - `categories` CategoryWithStackingRulesType[]
      - `id` string, required — Unique category ID assigned by Voucherify.
      - `name` string, required — Category name.
      - `hierarchy` integer, required — Category hierarchy. Categories with lower hierarchy are processed before categories with higher hierarchy value.
      - `object` 'category', required — The type of the object represented by the JSON. This object stores information about the category.
      - `created_at` string, date-time, required — Timestamp representing the date and time when the category was created. The value is shown in the ISO 8601 format.
      - `updated_at` string, date-time — Timestamp representing the date and time when the category was updated. The value is shown in the ISO 8601 format.
      - `stacking_rules_type` 'JOINT' | 'EXCLUSIVE' — The type of the stacking rule eligibility.
    - `campaign_name` string — Campaign name. Displayed only if the `options.expand` is passed with a `redeemable` value in the validation request body.
    - `campaign_id` string — Unique campaign ID assigned by Voucherify. Displayed only if the `options.expand` is passed with a `redeemable` value in the validation request body.
    - `name` string — Name of the promotion tier. Displayed only if the `options.expand` is passed with a `redeemable` value in the validation request body.

---

[API](https://skmtc.net/voucherifyio/apis/voucherify-api-async-actions.md) · [All operations](https://skmtc.net/voucherifyio/apis/voucherify-api-async-actions/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/voucherifyio/voucherify-api-async-actions/versions/4982266e0494/schema)
