---
title: "Create Campaign"
method: POST
path: "/v1/campaigns"
tags: ["Campaigns"]
---

# Create Campaign

`POST /v1/campaigns`

Method to create a batch of vouchers aggregated in one campaign. You can choose a variety of voucher types and define a unique pattern for generating codes.  


> 📘 Global uniqueness
>
> All campaign codes are unique across the whole project. Voucherify will not allow you to generate 2 campaigns with the same coupon code.  

> 🚧 Code generation status
>
> This is an asynchronous action; you can't read or modify a newly created campaign until the code generation is completed. See the `creation_status` field in the [campaign object](/api-reference/campaigns/campaign-object) description.

## Request body

- union — Request body schema for **POST** `v1/campaigns`.
  - object — Body schema for creating a campaign of discount coupons type using **POST** `v1/campaigns`.
    - `name` string — Campaign name.
    - `description` string — An optional field to keep any extra textual information about the campaign such as a campaign description and details.
    - `type` 'AUTO_UPDATE' | 'STATIC' | 'STANDALONE' — Defines whether the campaign can be updated with new vouchers after campaign creation or if the campaign consists of generic (standalone) vouchers. - `AUTO_UPDATE`: the campaign is dynamic, i.e. vouchers will generate based on set criteria - `STATIC`: vouchers need to be manually published - `STANDALONE`: the campaign is a generic (standalone) one with a single voucher for public use (only for discount and gift card campaigns)
    - `join_once` boolean — If this value is set to `true`, customers will be able to join the campaign only once. For loyalty campaigns, it's forced to `true`, even if `join_once: false` is passed in the request.
    - `auto_join` boolean — Indicates whether customers will be able to auto-join a loyalty campaign if any earning rule is fulfilled.
    - `use_voucher_metadata_schema` boolean — Flag indicating whether the campaign is to use the voucher's metadata schema instead of the campaign metadata schema.
    - `vouchers_count` integer — Total number of unique vouchers in campaign (size of campaign).
    - `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.
    - `activity_duration_after_publishing` string — Defines the amount of time the vouchers will be active after publishing. The value is shown in the ISO 8601 format. For example, a voucher with the value of P24D will be valid for a duration of 24 days.
    - `category_id` string — Unique category ID that this campaign belongs to. Either pass this parameter OR the `category`.
    - `category` string — The category assigned to the campaign. Either pass this parameter OR the `category_id`.
    - `metadata` object — The metadata object stores all custom attributes assigned to the campaign. A set of key/value pairs that you can attach to a campaign object. It can be useful for storing additional information about the campaign in a structured format.
    - `access_settings` AccessSettings — Assigns or unassigns an area or store to the campaign. **NOTE**: this object can be sent if the Areas and Stores enterprise feature is enabled. Contact [Voucherify Sales](https://www.voucherify.io/contact-sales) to learn more.
      - `assign` object — Assigns the campaign to an area or a store. Provide the area and/or store IDs in the respective arrays. If a campaign changes assignments between areas or stores, unassign it from the area. For example, if a campaign is assigned to Area-01, but it must be now assigned to Store-01 within this area, you have to unassign the campaign from Area-01 and assign to Store-01 only. If you want to assign the campaign to stores only, you do not have to send the area ID.
        - `areas_ids` string[] — List all area IDs to which the campaign will be assigned.
        - `area_stores_ids` string[] — List all store IDs to which the campaign will be assigned.
        - `area_all_stores_ids` string[] — List all area IDs where the campaign is assigned to all stores in the area. This assignment is not equal to the assignment to all `area_stores_ids` listed separately.
      - `unassign` object — Unassigns the campaign from an area or a store. Provide the area and/or store IDs in the respective arrays. If a campaign changes assignments between areas or stores, unassign it first. For example, if a campaign is assigned to Area-01, but it must be now assigned to Store-01 within this area, you have to unassign the campaign from Area-01 and assigned to Store-01 only. If you want to assign the campaign to stores only, you do not have to send the area ID.
        - `areas_ids` string[] — List all area IDs from which the campaign will be unassigned.
        - `area_stores_ids` string[] — List all store IDs from which the campaign will be unassigned.
        - `area_all_stores_ids` string[] — List all area IDs where the campaign will be unassigned from all stores in the area. This unassignment is not equal to the unassignment from all `area_stores_ids` listed separately.
    - `validation_rules` string[] — Array containing the ID of the validation rule associated with the promotion tier.
    - `campaign_type` 'DISCOUNT_COUPONS' — Type of campaign.
    - `voucher` DiscountCouponsCampaignVoucher
      - `type` 'DISCOUNT_VOUCHER', required — Type of voucher.
      - `discount` union, required — 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.
      - `code_config` CodeConfig — Contains information about the config used for the voucher code. Defines the code's pattern (prefix, postfix, length, charset, etc).
        - `length` number — Number of characters in a generated code (excluding prefix and postfix).
        - `charset` string — Characters that can appear in the code. Examples: - Alphanumeric: `0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ` - Alphabetic: `abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ` - Alphabetic Lowercase: `abcdefghijklmnopqrstuvwxyz` - Alphabetic Uppercase: `ABCDEFGHIJKLMNOPQRSTUVWXYZ` - Numbers: `0123456789` - Custom: a custom character set
        - `prefix` string — A text appended before the code.
        - `postfix` string — A text appended after the code.
        - `pattern` string — A pattern for codes where hashes (#) will be replaced with random characters. Overrides `length`.
        - `initial_count` integer — Internal value, does not change anything if provided.
      - `redemption` object — Defines the redemption limits on vouchers.
        - `quantity` integer, nullable — How many times a voucher can be redeemed. A `null` value means unlimited.
  - object — Body schema for creating a campaign of referral type using **POST** `v1/campaigns`.
    - `name` string — Campaign name.
    - `description` string — An optional field to keep any extra textual information about the campaign such as a campaign description and details.
    - `type` 'AUTO_UPDATE' | 'STATIC' | 'STANDALONE' — Defines whether the campaign can be updated with new vouchers after campaign creation or if the campaign consists of generic (standalone) vouchers. - `AUTO_UPDATE`: the campaign is dynamic, i.e. vouchers will generate based on set criteria - `STATIC`: vouchers need to be manually published - `STANDALONE`: the campaign is a generic (standalone) one with a single voucher for public use (only for discount and gift card campaigns)
    - `join_once` boolean — If this value is set to `true`, customers will be able to join the campaign only once. For loyalty campaigns, it's forced to `true`, even if `join_once: false` is passed in the request.
    - `auto_join` boolean — Indicates whether customers will be able to auto-join a loyalty campaign if any earning rule is fulfilled.
    - `use_voucher_metadata_schema` boolean — Flag indicating whether the campaign is to use the voucher's metadata schema instead of the campaign metadata schema.
    - `vouchers_count` integer — Total number of unique vouchers in campaign (size of campaign).
    - `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.
    - `activity_duration_after_publishing` string — Defines the amount of time the vouchers will be active after publishing. The value is shown in the ISO 8601 format. For example, a voucher with the value of P24D will be valid for a duration of 24 days.
    - `category_id` string — Unique category ID that this campaign belongs to. Either pass this parameter OR the `category`.
    - `category` string — The category assigned to the campaign. Either pass this parameter OR the `category_id`.
    - `metadata` object — The metadata object stores all custom attributes assigned to the campaign. A set of key/value pairs that you can attach to a campaign object. It can be useful for storing additional information about the campaign in a structured format.
    - `access_settings` AccessSettings — Assigns or unassigns an area or store to the campaign. **NOTE**: this object can be sent if the Areas and Stores enterprise feature is enabled. Contact [Voucherify Sales](https://www.voucherify.io/contact-sales) to learn more.
      - `assign` object — Assigns the campaign to an area or a store. Provide the area and/or store IDs in the respective arrays. If a campaign changes assignments between areas or stores, unassign it from the area. For example, if a campaign is assigned to Area-01, but it must be now assigned to Store-01 within this area, you have to unassign the campaign from Area-01 and assign to Store-01 only. If you want to assign the campaign to stores only, you do not have to send the area ID.
        - `areas_ids` string[] — List all area IDs to which the campaign will be assigned.
        - `area_stores_ids` string[] — List all store IDs to which the campaign will be assigned.
        - `area_all_stores_ids` string[] — List all area IDs where the campaign is assigned to all stores in the area. This assignment is not equal to the assignment to all `area_stores_ids` listed separately.
      - `unassign` object — Unassigns the campaign from an area or a store. Provide the area and/or store IDs in the respective arrays. If a campaign changes assignments between areas or stores, unassign it first. For example, if a campaign is assigned to Area-01, but it must be now assigned to Store-01 within this area, you have to unassign the campaign from Area-01 and assigned to Store-01 only. If you want to assign the campaign to stores only, you do not have to send the area ID.
        - `areas_ids` string[] — List all area IDs from which the campaign will be unassigned.
        - `area_stores_ids` string[] — List all store IDs from which the campaign will be unassigned.
        - `area_all_stores_ids` string[] — List all area IDs where the campaign will be unassigned from all stores in the area. This unassignment is not equal to the unassignment from all `area_stores_ids` listed separately.
    - `validation_rules` string[] — Array containing the ID of the validation rule associated with the promotion tier.
    - `campaign_type` 'REFERRAL_PROGRAM' — Type of campaign.
    - `referral_program` ReferralProgram — Defines the referee reward and the way a referral is triggered. Context: `REFERRAL_PROGRAM`.
      - `conversion_event_type` 'redemption' | 'custom_event' — Define how a referral is triggered.
      - `custom_event` object — Contains details about the custom event.
        - `id` string — Unique custom event ID.
        - `name` string — Custom event name.
      - `referee_reward` object — Defines the referee reward.
        - `related_object_parent` object — Details of the resource from which the reward originates.
          - `id` string — Unique ID of the reward source.
          - `name` string — Name of the reward source.
          - `object` 'CAMPAIGN' — Type of resource represented by the source of the reward.
        - `type` 'LOYALTY_CARD' | 'GIFT_VOUCHER' — Type of reward.
        - `amount` integer — Define the number of `points` to add to a loyalty card or `credits` to the balance on a gift card. In case of the gift card, the value is multiplied by 100 to precisely represent 2 decimal places. For example, $100 amount is written as 10000.
    - `voucher` ReferralCampaignVoucher
      - `type` 'DISCOUNT_VOUCHER', required — Type of voucher.
      - `discount` union, required — 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.
      - `code_config` CodeConfig — Contains information about the config used for the voucher code. Defines the code's pattern (prefix, postfix, length, charset, etc).
        - `length` number — Number of characters in a generated code (excluding prefix and postfix).
        - `charset` string — Characters that can appear in the code. Examples: - Alphanumeric: `0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ` - Alphabetic: `abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ` - Alphabetic Lowercase: `abcdefghijklmnopqrstuvwxyz` - Alphabetic Uppercase: `ABCDEFGHIJKLMNOPQRSTUVWXYZ` - Numbers: `0123456789` - Custom: a custom character set
        - `prefix` string — A text appended before the code.
        - `postfix` string — A text appended after the code.
        - `pattern` string — A pattern for codes where hashes (#) will be replaced with random characters. Overrides `length`.
        - `initial_count` integer — Internal value, does not change anything if provided.
      - `redemption` object — Defines the redemption limits on vouchers.
        - `quantity` integer, nullable — How many times a voucher can be redeemed. A `null` value means unlimited.
      - `is_referral_code` boolean, required — Flag indicating whether this voucher is a referral code; `true` for campaign type `REFERRAL_PROGRAM`.
  - object — Body schema for creating a campaign of gift type using **POST** `v1/campaigns`.
    - `name` string — Campaign name.
    - `description` string — An optional field to keep any extra textual information about the campaign such as a campaign description and details.
    - `type` 'AUTO_UPDATE' | 'STATIC' | 'STANDALONE' — Defines whether the campaign can be updated with new vouchers after campaign creation or if the campaign consists of generic (standalone) vouchers. - `AUTO_UPDATE`: the campaign is dynamic, i.e. vouchers will generate based on set criteria - `STATIC`: vouchers need to be manually published - `STANDALONE`: the campaign is a generic (standalone) one with a single voucher for public use (only for discount and gift card campaigns)
    - `join_once` boolean — If this value is set to `true`, customers will be able to join the campaign only once. For loyalty campaigns, it's forced to `true`, even if `join_once: false` is passed in the request.
    - `auto_join` boolean — Indicates whether customers will be able to auto-join a loyalty campaign if any earning rule is fulfilled.
    - `use_voucher_metadata_schema` boolean — Flag indicating whether the campaign is to use the voucher's metadata schema instead of the campaign metadata schema.
    - `vouchers_count` integer — Total number of unique vouchers in campaign (size of campaign).
    - `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.
    - `activity_duration_after_publishing` string — Defines the amount of time the vouchers will be active after publishing. The value is shown in the ISO 8601 format. For example, a voucher with the value of P24D will be valid for a duration of 24 days.
    - `category_id` string — Unique category ID that this campaign belongs to. Either pass this parameter OR the `category`.
    - `category` string — The category assigned to the campaign. Either pass this parameter OR the `category_id`.
    - `metadata` object — The metadata object stores all custom attributes assigned to the campaign. A set of key/value pairs that you can attach to a campaign object. It can be useful for storing additional information about the campaign in a structured format.
    - `access_settings` AccessSettings — Assigns or unassigns an area or store to the campaign. **NOTE**: this object can be sent if the Areas and Stores enterprise feature is enabled. Contact [Voucherify Sales](https://www.voucherify.io/contact-sales) to learn more.
      - `assign` object — Assigns the campaign to an area or a store. Provide the area and/or store IDs in the respective arrays. If a campaign changes assignments between areas or stores, unassign it from the area. For example, if a campaign is assigned to Area-01, but it must be now assigned to Store-01 within this area, you have to unassign the campaign from Area-01 and assign to Store-01 only. If you want to assign the campaign to stores only, you do not have to send the area ID.
        - `areas_ids` string[] — List all area IDs to which the campaign will be assigned.
        - `area_stores_ids` string[] — List all store IDs to which the campaign will be assigned.
        - `area_all_stores_ids` string[] — List all area IDs where the campaign is assigned to all stores in the area. This assignment is not equal to the assignment to all `area_stores_ids` listed separately.
      - `unassign` object — Unassigns the campaign from an area or a store. Provide the area and/or store IDs in the respective arrays. If a campaign changes assignments between areas or stores, unassign it first. For example, if a campaign is assigned to Area-01, but it must be now assigned to Store-01 within this area, you have to unassign the campaign from Area-01 and assigned to Store-01 only. If you want to assign the campaign to stores only, you do not have to send the area ID.
        - `areas_ids` string[] — List all area IDs from which the campaign will be unassigned.
        - `area_stores_ids` string[] — List all store IDs from which the campaign will be unassigned.
        - `area_all_stores_ids` string[] — List all area IDs where the campaign will be unassigned from all stores in the area. This unassignment is not equal to the unassignment from all `area_stores_ids` listed separately.
    - `validation_rules` string[] — Array containing the ID of the validation rule associated with the promotion tier.
    - `campaign_type` 'GIFT_VOUCHERS' — Type of campaign.
    - `voucher` GiftCampaignVoucher — Schema model for a discount voucher.
      - `type` 'GIFT_VOUCHER', required — Type of voucher.
      - `gift` Gift, required — Contains current gift card balance information.
        - `amount` number, required — 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.
        - `balance` number, required — Available funds. The value is multiplied by 100 to represent 2 decimal places. For example `10000 cents` for `$100.00`. `balance` = `amount` - `subtracted_amount` - `redemption.redeemed_amount`.
        - `effect` 'APPLY_TO_ORDER' | 'APPLY_TO_ITEMS' — Defines how the credits are applied to the customer's order.
      - `redemption` object — Defines the redemption limits on vouchers.
        - `quantity` integer, nullable — How many times a voucher can be redeemed. A `null` value means unlimited.
      - `code_config` CodeConfig — Contains information about the config used for the voucher code. Defines the code's pattern (prefix, postfix, length, charset, etc).
        - `length` number — Number of characters in a generated code (excluding prefix and postfix).
        - `charset` string — Characters that can appear in the code. Examples: - Alphanumeric: `0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ` - Alphabetic: `abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ` - Alphabetic Lowercase: `abcdefghijklmnopqrstuvwxyz` - Alphabetic Uppercase: `ABCDEFGHIJKLMNOPQRSTUVWXYZ` - Numbers: `0123456789` - Custom: a custom character set
        - `prefix` string — A text appended before the code.
        - `postfix` string — A text appended after the code.
        - `pattern` string — A pattern for codes where hashes (#) will be replaced with random characters. Overrides `length`.
        - `initial_count` integer — Internal value, does not change anything if provided.
  - object — Body schema for creating a campaign of loyalty type using **POST** `v1/campaigns`.
    - `name` string — Campaign name.
    - `description` string — An optional field to keep any extra textual information about the campaign such as a campaign description and details.
    - `type` 'AUTO_UPDATE' | 'STATIC' | 'STANDALONE' — Defines whether the campaign can be updated with new vouchers after campaign creation or if the campaign consists of generic (standalone) vouchers. - `AUTO_UPDATE`: the campaign is dynamic, i.e. vouchers will generate based on set criteria - `STATIC`: vouchers need to be manually published - `STANDALONE`: the campaign is a generic (standalone) one with a single voucher for public use (only for discount and gift card campaigns)
    - `join_once` boolean — If this value is set to `true`, customers will be able to join the campaign only once. For loyalty campaigns, it's forced to `true`, even if `join_once: false` is passed in the request.
    - `auto_join` boolean — Indicates whether customers will be able to auto-join a loyalty campaign if any earning rule is fulfilled.
    - `use_voucher_metadata_schema` boolean — Flag indicating whether the campaign is to use the voucher's metadata schema instead of the campaign metadata schema.
    - `vouchers_count` integer — Total number of unique vouchers in campaign (size of campaign).
    - `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.
    - `activity_duration_after_publishing` string — Defines the amount of time the vouchers will be active after publishing. The value is shown in the ISO 8601 format. For example, a voucher with the value of P24D will be valid for a duration of 24 days.
    - `category_id` string — Unique category ID that this campaign belongs to. Either pass this parameter OR the `category`.
    - `category` string — The category assigned to the campaign. Either pass this parameter OR the `category_id`.
    - `metadata` object — The metadata object stores all custom attributes assigned to the campaign. A set of key/value pairs that you can attach to a campaign object. It can be useful for storing additional information about the campaign in a structured format.
    - `access_settings` AccessSettings — Assigns or unassigns an area or store to the campaign. **NOTE**: this object can be sent if the Areas and Stores enterprise feature is enabled. Contact [Voucherify Sales](https://www.voucherify.io/contact-sales) to learn more.
      - `assign` object — Assigns the campaign to an area or a store. Provide the area and/or store IDs in the respective arrays. If a campaign changes assignments between areas or stores, unassign it from the area. For example, if a campaign is assigned to Area-01, but it must be now assigned to Store-01 within this area, you have to unassign the campaign from Area-01 and assign to Store-01 only. If you want to assign the campaign to stores only, you do not have to send the area ID.
        - `areas_ids` string[] — List all area IDs to which the campaign will be assigned.
        - `area_stores_ids` string[] — List all store IDs to which the campaign will be assigned.
        - `area_all_stores_ids` string[] — List all area IDs where the campaign is assigned to all stores in the area. This assignment is not equal to the assignment to all `area_stores_ids` listed separately.
      - `unassign` object — Unassigns the campaign from an area or a store. Provide the area and/or store IDs in the respective arrays. If a campaign changes assignments between areas or stores, unassign it first. For example, if a campaign is assigned to Area-01, but it must be now assigned to Store-01 within this area, you have to unassign the campaign from Area-01 and assigned to Store-01 only. If you want to assign the campaign to stores only, you do not have to send the area ID.
        - `areas_ids` string[] — List all area IDs from which the campaign will be unassigned.
        - `area_stores_ids` string[] — List all store IDs from which the campaign will be unassigned.
        - `area_all_stores_ids` string[] — List all area IDs where the campaign will be unassigned from all stores in the area. This unassignment is not equal to the unassignment from all `area_stores_ids` listed separately.
    - `campaign_type` 'LOYALTY_PROGRAM' — Type of campaign.
    - `voucher` CampaignLoyaltyVoucher — Schema model for a discount voucher.
      - `type` 'LOYALTY_CARD', required — Type of voucher.
      - `loyalty_card` CampaignLoyaltyCard, required — Schema model for a campaign loyalty card.
        - `points` integer, required — The initial number of points to assign to the loyalty card. This is the current loyalty card score i.e. the number of loyalty points on the card.
        - `expiration_rules` object — Defines the loyalty point expiration rule. This expiration rule applies when there are no `expiration_rules` defined for an earning rule.
          - `period_type` 'FIXED_DAY_OF_YEAR' | 'MONTH', required — Type of period. Can be set for `MONTH` or `FIXED_DAY_OF_YEAR`. `MONTH` requires the `period_value` field. `FIXED_DAY_OF_YEAR` requires the `fixed_month` and `fixed_day` fields.
          - `period_value` integer — Value of the period. Required for the `period_type: MONTH`.
          - `rounding_type` 'END_OF_MONTH' | 'END_OF_QUARTER' | 'END_OF_HALF_YEAR' | 'END_OF_YEAR' | 'PARTICULAR_MONTH' — Type of rounding of the expiration period. Optional for the `period_type: MONTH`.
          - `rounding_value` integer — Value of rounding of the expiration period. Required for the `rounding_type`.
          - `fixed_month` integer — Determines the month when the points expire; `1` is January, `2` is February, and so on. Required for the `period_type: FIXED_DAY_OF_YEAR`.
          - `fixed_day` integer — Determines the day of the month when the points expire. Required for the `period_type: FIXED_DAY_OF_YEAR`.
      - `redemption` object — Defines the redemption limits on vouchers.
        - `quantity` integer, nullable — How many times a voucher can be redeemed. A `null` value means unlimited.
      - `code_config` CodeConfig — Contains information about the config used for the voucher code. Defines the code's pattern (prefix, postfix, length, charset, etc).
        - `length` number — Number of characters in a generated code (excluding prefix and postfix).
        - `charset` string — Characters that can appear in the code. Examples: - Alphanumeric: `0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ` - Alphabetic: `abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ` - Alphabetic Lowercase: `abcdefghijklmnopqrstuvwxyz` - Alphabetic Uppercase: `ABCDEFGHIJKLMNOPQRSTUVWXYZ` - Numbers: `0123456789` - Custom: a custom character set
        - `prefix` string — A text appended before the code.
        - `postfix` string — A text appended after the code.
        - `pattern` string — A pattern for codes where hashes (#) will be replaced with random characters. Overrides `length`.
        - `initial_count` integer — Internal value, does not change anything if provided.
  - object — Body schema for creating a campaign of promotion type using **POST** `v1/campaigns`.
    - `name` string — Campaign name.
    - `description` string — An optional field to keep any extra textual information about the campaign such as a campaign description and details.
    - `type` 'AUTO_UPDATE' | 'STATIC' | 'STANDALONE' — Defines whether the campaign can be updated with new vouchers after campaign creation or if the campaign consists of generic (standalone) vouchers. - `AUTO_UPDATE`: the campaign is dynamic, i.e. vouchers will generate based on set criteria - `STATIC`: vouchers need to be manually published - `STANDALONE`: the campaign is a generic (standalone) one with a single voucher for public use (only for discount and gift card campaigns)
    - `join_once` boolean — If this value is set to `true`, customers will be able to join the campaign only once. For loyalty campaigns, it's forced to `true`, even if `join_once: false` is passed in the request.
    - `auto_join` boolean — Indicates whether customers will be able to auto-join a loyalty campaign if any earning rule is fulfilled.
    - `use_voucher_metadata_schema` boolean — Flag indicating whether the campaign is to use the voucher's metadata schema instead of the campaign metadata schema.
    - `vouchers_count` integer — Total number of unique vouchers in campaign (size of campaign).
    - `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.
    - `activity_duration_after_publishing` string — Defines the amount of time the vouchers will be active after publishing. The value is shown in the ISO 8601 format. For example, a voucher with the value of P24D will be valid for a duration of 24 days.
    - `category_id` string — Unique category ID that this campaign belongs to. Either pass this parameter OR the `category`.
    - `category` string — The category assigned to the campaign. Either pass this parameter OR the `category_id`.
    - `metadata` object — The metadata object stores all custom attributes assigned to the campaign. A set of key/value pairs that you can attach to a campaign object. It can be useful for storing additional information about the campaign in a structured format.
    - `access_settings` AccessSettings — Assigns or unassigns an area or store to the campaign. **NOTE**: this object can be sent if the Areas and Stores enterprise feature is enabled. Contact [Voucherify Sales](https://www.voucherify.io/contact-sales) to learn more.
      - `assign` object — Assigns the campaign to an area or a store. Provide the area and/or store IDs in the respective arrays. If a campaign changes assignments between areas or stores, unassign it from the area. For example, if a campaign is assigned to Area-01, but it must be now assigned to Store-01 within this area, you have to unassign the campaign from Area-01 and assign to Store-01 only. If you want to assign the campaign to stores only, you do not have to send the area ID.
        - `areas_ids` string[] — List all area IDs to which the campaign will be assigned.
        - `area_stores_ids` string[] — List all store IDs to which the campaign will be assigned.
        - `area_all_stores_ids` string[] — List all area IDs where the campaign is assigned to all stores in the area. This assignment is not equal to the assignment to all `area_stores_ids` listed separately.
      - `unassign` object — Unassigns the campaign from an area or a store. Provide the area and/or store IDs in the respective arrays. If a campaign changes assignments between areas or stores, unassign it first. For example, if a campaign is assigned to Area-01, but it must be now assigned to Store-01 within this area, you have to unassign the campaign from Area-01 and assigned to Store-01 only. If you want to assign the campaign to stores only, you do not have to send the area ID.
        - `areas_ids` string[] — List all area IDs from which the campaign will be unassigned.
        - `area_stores_ids` string[] — List all store IDs from which the campaign will be unassigned.
        - `area_all_stores_ids` string[] — List all area IDs where the campaign will be unassigned from all stores in the area. This unassignment is not equal to the unassignment from all `area_stores_ids` listed separately.
    - `validation_rules` string[] — Array containing the ID of the validation rule associated with the promotion tier.
    - `campaign_type` 'PROMOTION' — Type of campaign.
    - `promotion` object
      - `tiers` PromotionTierCreateParams[], nullable
        - `name` string, required — 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
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
        - `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.
        - `validation_rules` string[] — Array containing the ID of the validation rule associated with the promotion tier.
        - `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
        - `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.
        - `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.
        - `category` string — Assign category to the promotion tier.
        - `category_id` string — Instead of using the category name, you can alternatively assign a new category to a promotion tier using a unique category ID, i.e. `cat_0c9da30e7116ba6bba`.

## Response `200`

Returns a campaign object if the call succeeded.

- CampaignsCreateResponseBody — This is an object representing a campaign.
  - `id` string, required — Unique campaign ID, assigned by Voucherify.
  - `name` string, required — Campaign name.
  - `description` string — An optional field to keep any extra textual information about the campaign such as a campaign description and details.
  - `campaign_type` 'LOYALTY_PROGRAM' | 'GIFT_VOUCHERS' | 'DISCOUNT_COUPONS' | 'PROMOTION' | 'REFERRAL_PROGRAM', required — Type of campaign.
  - `type` 'AUTO_UPDATE' | 'STATIC' | 'STANDALONE', required — Defines whether the campaign can be updated with new vouchers after campaign creation or if the campaign consists of generic (standalone) vouchers. - `AUTO_UPDATE`: the campaign is dynamic, i.e. vouchers will generate based on set criteria - `STATIC`: vouchers need to be manually published - `STANDALONE`: campaign for single vouchers
  - `voucher` CampaignVoucher — Schema model for a campaign voucher.
    - `type` string, required — Type of 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
            - `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
      - 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` Gift — Contains current gift card balance information.
      - `amount` number, required — 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.
      - `balance` number, required — Available funds. The value is multiplied by 100 to represent 2 decimal places. For example `10000 cents` for `$100.00`. `balance` = `amount` - `subtracted_amount` - `redemption.redeemed_amount`.
      - `effect` 'APPLY_TO_ORDER' | 'APPLY_TO_ITEMS' — Defines how the credits are applied to the customer's order.
    - `loyalty_card` CampaignLoyaltyCard — Schema model for a campaign loyalty card.
      - `points` integer, required — The initial number of points to assign to the loyalty card. This is the current loyalty card score i.e. the number of loyalty points on the card.
      - `expiration_rules` object — Defines the loyalty point expiration rule. This expiration rule applies when there are no `expiration_rules` defined for an earning rule.
        - `period_type` 'FIXED_DAY_OF_YEAR' | 'MONTH', required — Type of period. Can be set for `MONTH` or `FIXED_DAY_OF_YEAR`. `MONTH` requires the `period_value` field. `FIXED_DAY_OF_YEAR` requires the `fixed_month` and `fixed_day` fields.
        - `period_value` integer — Value of the period. Required for the `period_type: MONTH`.
        - `rounding_type` 'END_OF_MONTH' | 'END_OF_QUARTER' | 'END_OF_HALF_YEAR' | 'END_OF_YEAR' | 'PARTICULAR_MONTH' — Type of rounding of the expiration period. Optional for the `period_type: MONTH`.
        - `rounding_value` integer — Value of rounding of the expiration period. Required for the `rounding_type`.
        - `fixed_month` integer — Determines the month when the points expire; `1` is January, `2` is February, and so on. Required for the `period_type: FIXED_DAY_OF_YEAR`.
        - `fixed_day` integer — Determines the day of the month when the points expire. Required for the `period_type: FIXED_DAY_OF_YEAR`.
    - `redemption` object, required — Defines the redemption limits on vouchers.
      - `quantity` integer, nullable, required — How many times a voucher can be redeemed. A `null` value means unlimited.
    - `code_config` CodeConfig, required — Contains information about the config used for the voucher code. Defines the code's pattern (prefix, postfix, length, charset, etc).
      - `length` number — Number of characters in a generated code (excluding prefix and postfix).
      - `charset` string — Characters that can appear in the code. Examples: - Alphanumeric: `0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ` - Alphabetic: `abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ` - Alphabetic Lowercase: `abcdefghijklmnopqrstuvwxyz` - Alphabetic Uppercase: `ABCDEFGHIJKLMNOPQRSTUVWXYZ` - Numbers: `0123456789` - Custom: a custom character set
      - `prefix` string — A text appended before the code.
      - `postfix` string — A text appended after the code.
      - `pattern` string — A pattern for codes where hashes (#) will be replaced with random characters. Overrides `length`.
      - `initial_count` integer — Internal value, does not change anything if provided.
    - `is_referral_code` boolean, required — Flag indicating whether this voucher is a referral code; `true` for campaign type `REFERRAL_PROGRAM`.
    - `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.
  - `auto_join` boolean, required — Indicates whether customers will be able to auto-join a loyalty campaign if any earning rule is fulfilled.
  - `join_once` boolean, required — If this value is set to `true`, customers will be able to join the campaign only once. It is always `false` for generic (standalone) vouchers campaigns and it cannot be changed in them. It is always `true` for loyalty campaigns and it cannot be changed in them.
  - `use_voucher_metadata_schema` boolean, required — Flag indicating whether the campaign is to use the voucher's metadata schema instead of the campaign metadata schema.
  - `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.
  - `activity_duration_after_publishing` string — Defines the amount of time the vouchers will be active after publishing. The value is shown in the ISO 8601 format. For example, a voucher with the value of P24D will be valid for a duration of 24 days.
  - `vouchers_count` integer — Total number of unique vouchers in campaign.
  - `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.
  - `active` boolean — A flag to toggle the campaign on or off. You can disable a campaign even though it's within the active period defined by the `start_date` and `expiration_date`. - `true` indicates an *active* campaign - `false` indicates an *inactive* campaign
  - `metadata` object — The metadata object stores all custom attributes assigned to the campaign. A set of key/value pairs that you can attach to a campaign object. It can be useful for storing additional information about the campaign in a structured format.
  - `created_at` string, date-time, required — Timestamp representing the date and time when the campaign was created. The value is shown in the ISO 8601 format.
  - `updated_at` string, date-time — Timestamp representing the date and time when the campaign was last updated in ISO 8601 format.
  - `category` string — Unique category name.
  - `creation_status` 'DONE' | 'IN_PROGRESS' | 'FAILED' | 'DRAFT' | 'MODIFYING', required — Indicates the status of the campaign creation.
  - `vouchers_generation_status` 'DONE' | 'IN_PROGRESS' | 'FAILED' | 'DRAFT' | 'MODIFYING', required — Indicates the status of the campaign's voucher generation.
  - `readonly` boolean — Indicates whether the campaign can be only read by a restricted user in the Areas and Stores enterprise feature. It is returned only to restricted users; this field is not returned for users with other roles. It is also not returned for restricted users who use the [GET Campaign summary](/api-reference/campaigns/get-campaign-summary) endpoint.
  - `protected` boolean, required — Indicates whether the resource can be deleted.
  - `category_id` string, nullable, required — Unique category ID that this campaign belongs to.
  - `categories` Category[], required — Contains details about the campaign category. For the GET [List campaigns](/api-reference/campaigns/list-campaigns) endpoint, this is returned only if the `expand=category` query parameter is passed in the request. Otherwise, it is returned as an empty array. For GET [Campaign summary](/api-reference/campaigns/get-campaign-summary) endpoint, it is always returned as an empty array.
    - `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.
  - `object` string, required — The type of the object represented by JSON. This object stores information about the campaign.
  - `referral_program` ReferralProgram — Defines the referee reward and the way a referral is triggered. Context: `REFERRAL_PROGRAM`.
    - `conversion_event_type` 'redemption' | 'custom_event' — Define how a referral is triggered.
    - `custom_event` object — Contains details about the custom event.
      - `id` string — Unique custom event ID.
      - `name` string — Custom event name.
    - `referee_reward` object — Defines the referee reward.
      - `related_object_parent` object — Details of the resource from which the reward originates.
        - `id` string — Unique ID of the reward source.
        - `name` string — Name of the reward source.
        - `object` 'CAMPAIGN' — Type of resource represented by the source of the reward.
      - `type` 'LOYALTY_CARD' | 'GIFT_VOUCHER' — Type of reward.
      - `amount` integer — Define the number of `points` to add to a loyalty card or `credits` to the balance on a gift card. In case of the gift card, the value is multiplied by 100 to precisely represent 2 decimal places. For example, $100 amount is written as 10000.
  - `loyalty_tiers_expiration` LoyaltyTiersExpirationAll — Defines the Loyalty Tiers Expiration.
    - `qualification_type` 'BALANCE' | 'POINTS_IN_PERIOD', required — Tier qualification. `BALANCE`: Points balance is based on the customer's current points balance. Customers qualify for the tier if their points balance is in the points range of the tier. `POINTS_IN_PERIOD`: A customer qualifies for the tier only if the sum of the accumulated points in a **defined time interval** reaches the tier threshold.
    - `qualification_period` 'MONTH' | 'QUARTER' | 'HALF_YEAR' | 'YEAR' — Customers can qualify for the tier if they collected enough points in a given time period. So, in addition to the customer having to reach a points range, they also need to have collected the points within a set time period. | **Period** | **Definition** | |:---|:---| | **Calendar Month** | Points collected in one calendar month<br />January, February, March, etc. | | **Calendar Quarter** | Points collected in the quarter<br />- January - March<br />- April - June<br />- July - September<br />- October - December | | **Calendar Half-year** | Points collected in the half-year<br />- January - June<br />- July - December | | **Calendar Year** | Points collected in one calendar year<br />January - December |
    - `start_date` object, required — Defines the conditions for the start date of the tier.
      - `type` 'IMMEDIATE' | 'NEXT_PERIOD', required — What triggers the tier to be valid for a customer. `IMMEDIATE`: After reaching the minimum required points. `NEXT_PERIOD`: When the next qualification period starts.
    - `expiration_date` object, required — Defines the conditions for the expiration date of a tier.
      - `type` 'END_OF_PERIOD' | 'END_OF_NEXT_PERIOD' | 'BALANCE_DROP' | 'CUSTOM', required — What triggers the tier to expire for a customer. `END_OF_PERIOD`: Expire tier at the end of the period. `END_OF_NEXT_PERIOD`: Expire tier at the end of the next period. `BALANCE_DROP`: Tier expires when the points balance drops below the required range of the tier. `CUSTOM`: Tier expires after a certain time period passes following the instance the points balance drops below the required range of the tier.
      - `extend` string, required — Extend the expiration by adding extra months or days in ISO 8601 format. The tier will remain active even though it reaches its expiration time period. For example, a tier with a duration of `P3M` will be valid for an additional duration of 3 months and a tier with a duration of `P1D` will be valid for an additional duration of 1 day.
      - `rounding` object — Defines the rounding mechanism for tier expiration.
        - `type` 'MONTH' | 'QUARTER' | 'HALF_YEAR' | 'YEAR' | 'CUSTOM' — This mechanism describes a custom rounding for the expiration date.
        - `strategy` 'START' | 'END' — This mechanism describes a rounding strategy for the expiration date.
        - `unit` 'MONTH' — Defines the type of unit of time in which the rounding period is counted.
        - `value` integer — Value for the unit of time that the rounding applies to. Units for this parameter are defined by the `rounding.unit` parameter. - `0`: January - `1`: February - `2`: March - `3`: April - `4`: May - `5`: June - `6`: July - `7`: August - `8`: September - `9`: October - `10`: November - `11`: December
  - `access_settings_assignments` AccessSettingsCampaignAssignmentsList — Lists all assignments of the campaign to areas and stores. For [GET List Campaigns](/api-reference/campaigns/list-campaigns), this is returned if the `expand=access_settings_assignments` query parameter is passed in the request. This object is not returned for the [GET Campaign summary endpoint](/api-reference/campaigns/get-campaign-summary). **NOTE**: This object is returned only if the Areas and Stores enterprise feature is enabled. Contact [Voucherify Sales](https://www.voucherify.io/contact-sales) to learn more.
    - `object` 'list', required — The type of the object represented by JSON. Default is `list`. This object stores information about campaign assignments to areas and stores
    - `data_ref` 'data', required — Identifies the name of the attribute that contains the array of campaign assignments.
    - `data` AreaStoreCampaignAssignment[], required — Contains an array of campaign assignments.
      - `id` string, required — Unique identifier of the campaign assignment.
      - `area_id` string, required — Unique identifier of the area to which the campaign is assigned.
      - `all_stores` boolean — Determines if the campaign is assigned to all of the stores in the area, i.e. if an area ID is passed in the `access_settings.assign.area_all_stores_ids` in the request.
      - `area_store_id` string — Unique identifier of the store to which the campaign is assigned.
      - `created_at` string, date-time, required — Date and time when the assignment was made. The value is shown in the ISO 8601 format.
      - `object` 'area_store_campaign_assignment', required — The type of the object represented by JSON. This object stores information about the campaign assignment to areas or stores.
    - `total` integer, required — Total number of areas and stores to which the campaign is assigned.
  - `promotion` PromotionTiersList — Promotion Tiers
    - `object` string — The type of the object represented by JSON. This object stores information about promotion tiers in a dictionary.
    - `data_ref` string — Identifies the name of the attribute that contains the array of promotion tier objects.
    - `tiers` PromotionTier[] — Contains array of promotion tier objects.
      - `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.
    - `total` integer — Total number of promotion tiers.
    - `has_more` boolean — As query results are always limited (by the limit parameter), the `has_more` flag indicates if there are more records for given filter parameters. This lets you know if you can run another request to get more records returned in the results.
  - `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.

## Other responses

- `400` — Returns an error if an incomplete request body is provided.
- `404` — When a payload value is not found.
- `409` — Returns an error if a campaign with the same name already exists.

---

[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)
