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

# Update Campaign

> Updates the specified campaign by setting the values of the parameters passed in the request body. Any parameters not provided in the payload will be left unchanged. 

Fields other than the ones listed in the request body won't be modified. Even if provided, they will be silently skipped.   

> 🚧 Vouchers will be affected
>
> This method will update vouchers aggregated in the campaign. It will affect all vouchers that are not published or redeemed yet.



## OpenAPI

````yaml /openapi/campaigns.json put /v1/campaigns/{campaignId}
openapi: 3.0.1
info:
  title: Voucherify API - Campaigns
  version: v2018-08-01
  description: >-
    Voucherify promotion engine REST API. Please see
    https://docs.voucherify.io/docs for more details.
  contact:
    name: Voucherify Team
    url: https://www.voucherify.io/contact-support
    email: support@voucherify.io
  termsOfService: https://www.voucherify.io/legal/subscription-agreement
  license:
    name: MIT
    url: https://github.com/voucherifyio/voucherify-js-sdk/blob/main/LICENSE
servers:
  - url: https://{cluster}.voucherify.io
    description: Base URL
    variables:
      cluster:
        default: api
        enum:
          - api
          - us1.api
          - as1.api
          - download
          - us1.download
          - as1.download
security: []
paths:
  /v1/campaigns/{campaignId}:
    parameters:
      - in: path
        name: campaignId
        description: >-
          You can either pass the campaign ID, which was assigned by Voucherify,
          or the name of the campaign as the path parameter value.
        schema:
          $ref: '#/components/schemas/ParameterCampaignId'
        required: true
    put:
      tags:
        - Campaigns
      summary: Update Campaign
      description: >-
        Updates the specified campaign by setting the values of the parameters
        passed in the request body. Any parameters not provided in the payload
        will be left unchanged. 


        Fields other than the ones listed in the request body won't be modified.
        Even if provided, they will be silently skipped.   


        > 🚧 Vouchers will be affected

        >

        > This method will update vouchers aggregated in the campaign. It will
        affect all vouchers that are not published or redeemed yet.
      operationId: update-campaign
      parameters: []
      requestBody:
        description: Specify the campaign parameters to be updated.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CampaignsUpdateRequestBody'
            examples:
              Example:
                value:
                  description: New description
        required: true
      responses:
        '200':
          description: Returns the campaign object if the update succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CampaignsUpdateResponseBody'
              examples:
                Example:
                  value:
                    id: camp_FZL4iTTdZw36nZOoXYQ172fQ
                    name: Loyalty Campaign
                    campaign_type: LOYALTY_PROGRAM
                    type: AUTO_UPDATE
                    voucher:
                      type: LOYALTY_CARD
                      loyalty_card:
                        points: 1000
                        expiration_rules:
                          period_type: MONTH
                          period_value: 3
                          rounding_type: END_OF_YEAR
                      redemption:
                        quantity: 10
                      code_config:
                        length: 7
                        charset: >-
                          0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
                        pattern: LOYALTY-CARD-#######
                      is_referral_code: false
                      start_date: '2020-08-16T00:00:00.000Z'
                      expiration_date: '2023-12-26T00:00:00.000Z'
                      validity_timeframe:
                        interval: P2D
                        duration: P1D
                    auto_join: false
                    join_once: false
                    use_voucher_metadata_schema: false
                    description: New description
                    start_date: '2020-08-16T00:00:00.000Z'
                    expiration_date: '2023-12-26T00:00:00.000Z'
                    validity_timeframe:
                      interval: P2D
                      duration: P1D
                    validity_day_of_week:
                      - 0
                      - 1
                      - 2
                    activity_duration_after_publishing: P24D
                    vouchers_count: 2
                    active: true
                    metadata:
                      region: APAC
                    created_at: '2022-09-21T09:39:45.479Z'
                    updated_at: '2022-09-23T09:47:00.205Z'
                    category: First
                    creation_status: MODIFYING
                    vouchers_generation_status: MODIFYING
                    protected: false
                    validation_rules_assignments:
                      object: list
                      data_ref: data
                      data: []
                      total: 0
                    category_id: cat_0bb343dee3cdb5ec0c
                    categories:
                      - id: cat_0bb343dee3cdb5ec0c
                        name: First
                        hierarchy: 1
                        created_at: '2022-09-16T11:47:19.568Z'
                        object: category
                    object: campaign
        '400':
          description: >-
            Returns an error if the restricted user does not have the permission
            to modify the campaign, because the campaign is `readonly` for them.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                Example:
                  value:
                    code: 400
                    key: resource_protected
                    message: Resource is protected
                    details: >-
                      Resource campaign with id camp_oazbyS2Y3SxKLCh9yQ3pqFr6 is
                      protected and cannot be modified
                    request_id: v-0f7548b67cc7ed8dff
                    resource_id: camp_oazbyS2Y3SxKLCh9yQ3pqFr6
                    resource_type: campaign
        '403':
          description: >-
            Returns an error if the restricted user is missing the access to an
            area or a store to which the campaign with this ID has been
            assigned.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                Example:
                  value:
                    code: 403
                    key: forbidden
                    message: Forbidden
                    details: >-
                      Resource campaign with id camp_7u3ZPLSByANMXjBkAs4kT2nS is
                      not accessible in given context
                    request_id: v-0f005192bfce923bb7
                    resource_id: camp_7u3ZPLSByANMXjBkAs4kT2nS
                    resource_type: campaign
      security:
        - X-App-Id: []
          X-App-Token: []
        - X-Voucherify-OAuth:
            - api
            - campaigns
components:
  schemas:
    ParameterCampaignId:
      type: string
      example: camp_rRsfatlwN7unSeUIJDCYedal
    CampaignsUpdateRequestBody:
      type: object
      title: Campaigns Update Request Body
      description: Request body schema for **PUT** `v1/campaigns/{campaignId}`.
      oneOf:
        - $ref: '#/components/schemas/CampaignsUpdateDiscountCouponsCampaign'
        - $ref: '#/components/schemas/CampaignsUpdateReferralCampaign'
        - $ref: '#/components/schemas/CampaignsUpdateGiftCampaign'
        - $ref: '#/components/schemas/CampaignsUpdateLoyaltyCampaign'
        - $ref: '#/components/schemas/CampaignsUpdatePromotionCampaign'
    CampaignsUpdateResponseBody:
      type: object
      title: Campaigns Update Response Body
      description: Response body schema for **PUT** `v1/campaigns/{campaignId}`.
      allOf:
        - $ref: '#/components/schemas/Campaign'
    Error:
      title: Error Object
      type: object
      description: Error details
      properties:
        code:
          type: integer
          description: Error's HTTP status code.
        key:
          type: string
          description: Short string describing the kind of error which occurred.
        message:
          type: string
          description: A human-readable message providing a short description of the error.
        details:
          type: string
          description: A human-readable message providing more details about the error.
        request_id:
          type: string
          example: v-0a885062c80375740f
          description: >-
            This ID is useful when troubleshooting and/or finding the root cause
            of an error response by our support team.
        resource_id:
          type: string
          description: >-
            Unique resource ID that can be used in another endpoint to get more
            details.
          example: rf_0c5d710a87c8a31f86
        resource_type:
          type: string
          description: The resource type.
          example: voucher
        error:
          type: object
          description: Includes additional information about the error.
          properties:
            message:
              type: string
              description: The message configured by the user in a validation rule.
      required:
        - code
        - message
    CampaignsUpdateDiscountCouponsCampaign:
      type: object
      title: Update Discount Coupons Campaign
      allOf:
        - $ref: '#/components/schemas/CampaignsUpdateCouponCampaignBase'
        - type: object
          title: Properties For Discount Coupons Campaign
          description: >-
            Body schema for update a campaign of discount coupons type using
            **PUT** `v1/campaigns`.
          properties:
            discount:
              description: Defines the voucher discount type and details.
              allOf:
                - $ref: '#/components/schemas/Discount'
    CampaignsUpdateReferralCampaign:
      type: object
      title: Update Referral Campaign
      allOf:
        - $ref: '#/components/schemas/CampaignsUpdateCouponCampaignBase'
        - type: object
          title: Properties For Referral Campaign
          description: >-
            Body schema for update a campaign of referral type using **PUT**
            `v1/campaigns`.
          properties:
            discount:
              description: Defines the voucher discount type and details.
              allOf:
                - $ref: '#/components/schemas/Discount'
            referral_program:
              $ref: '#/components/schemas/ReferralProgram'
    CampaignsUpdateGiftCampaign:
      type: object
      title: Update Gift Campaign
      allOf:
        - $ref: '#/components/schemas/CampaignsUpdateCouponCampaignBase'
        - type: object
          title: Properties For Gift Campaign
          description: >-
            Body schema for update a campaign of give type using **PUT**
            `v1/campaigns`.
          properties:
            gift:
              description: Defines the voucher gift details.
              allOf:
                - $ref: '#/components/schemas/Gift'
    CampaignsUpdateLoyaltyCampaign:
      type: object
      title: Update Loyalty Campaign
      allOf:
        - $ref: '#/components/schemas/CampaignsUpdateCouponCampaignBase'
        - type: object
          title: Properties For Loyalty Campaign
          description: >-
            Body schema for update a campaign of loyalty type using **PUT**
            `v1/campaigns`.
          properties:
            loyalty_tiers_expiration:
              $ref: '#/components/schemas/LoyaltyTiersExpirationAll'
            options:
              type: object
              properties:
                recalculate_tiers:
                  type: boolean
                  description: Determine if tiers should be recalculated or no.
    CampaignsUpdatePromotionCampaign:
      type: object
      title: Update Promotion Campaign
      allOf:
        - $ref: '#/components/schemas/CampaignsUpdateBase'
    Campaign:
      title: Campaign
      allOf:
        - $ref: '#/components/schemas/CampaignBase'
        - title: Campaign Additional Data
          type: object
          properties:
            promotion:
              $ref: '#/components/schemas/PromotionTiersList'
            validation_rules_assignments:
              $ref: '#/components/schemas/ValidationRulesAssignmentsList'
    CampaignsUpdateCouponCampaignBase:
      type: object
      title: Update Coupon Campaign Schema Base
      description: >-
        Base body schema for updating a campaign which contains coupon codes
        using **PUT** `v1/campaigns`.
      allOf:
        - $ref: '#/components/schemas/CampaignsUpdateBase'
        - type: object
          properties:
            activity_duration_after_publishing:
              type: string
              description: >-
                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.
            join_once:
              type: boolean
              description: >-
                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.
            auto_join:
              type: boolean
              description: >-
                Indicates whether customers will be able to auto-join a loyalty
                campaign if any earning rule is fulfilled.
            type:
              type: string
              description: >-
                Defines whether the campaign can be updated with new vouchers
                after campaign creation.


                - `AUTO_UPDATE`: By choosing the auto update option you will
                create a campaign that can be enhanced by new vouchers after the
                time of creation (e.g. by publish vouchers method).

                -  `STATIC`: vouchers need to be manually published.


                If the `type` of the campaign is `STANDALONE`, the type cannot
                be changed. Also, the `type` cannot be changed to `STANDALONE`.
              enum:
                - AUTO_UPDATE
                - STATIC
    Discount:
      title: Discount
      type: object
      description: Contains information about discount.
      oneOf:
        - $ref: '#/components/schemas/DiscountAmount'
        - $ref: '#/components/schemas/DiscountUnit'
        - $ref: '#/components/schemas/DiscountUnitMultiple'
        - $ref: '#/components/schemas/DiscountPercent'
        - $ref: '#/components/schemas/DiscountFixed'
    ReferralProgram:
      title: Referral Program
      description: >-
        Defines the referee reward and the way a referral is triggered. Context:
        `REFERRAL_PROGRAM`.
      type: object
      properties:
        conversion_event_type:
          type: string
          enum:
            - redemption
            - custom_event
          description: Define how a referral is triggered.
        custom_event:
          type: object
          description: Contains details about the custom event.
          properties:
            id:
              type: string
              example: ms_Ll9enAm2BCN0M1s4VxWobLFM
              description: Unique custom event ID.
            name:
              type: string
              description: Custom event name.
        referee_reward:
          type: object
          description: Defines the referee reward.
          properties:
            related_object_parent:
              type: object
              description: Details of the resource from which the reward originates.
              properties:
                id:
                  type: string
                  example: camp_kdxp3vf1clQ9CFs1jpqv3tZe
                  description: Unique ID of the reward source.
                name:
                  type: string
                  description: Name of the reward source.
                object:
                  type: string
                  default: CAMPAIGN
                  enum:
                    - CAMPAIGN
                  description: Type of resource represented by the source of the reward.
            type:
              type: string
              description: Type of reward.
              enum:
                - LOYALTY_CARD
                - GIFT_VOUCHER
            amount:
              type: integer
              description: >-
                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.
    Gift:
      title: Gift
      type: object
      description: Contains current gift card balance information.
      properties:
        amount:
          type: number
          description: >-
            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:
          type: integer
          description: Total amount of subtracted credits over the gift card lifetime.
        balance:
          type: number
          description: >-
            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:
          type: string
          description: Defines how the credits are applied to the customer's order.
          enum:
            - APPLY_TO_ORDER
            - APPLY_TO_ITEMS
      required:
        - amount
        - balance
    LoyaltyTiersExpirationAll:
      title: Loyalty Tiers Expiration
      type: object
      description: Defines the Loyalty Tiers Expiration.
      properties:
        qualification_type:
          type: string
          enum:
            - BALANCE
            - POINTS_IN_PERIOD
          description: >-
            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:
          type: string
          description: >-
            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 |
          enum:
            - MONTH
            - QUARTER
            - HALF_YEAR
            - YEAR
        start_date:
          type: object
          description: Defines the conditions for the start date of the tier.
          properties:
            type:
              type: string
              enum:
                - IMMEDIATE
                - NEXT_PERIOD
              description: |-
                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.
          required:
            - type
        expiration_date:
          type: object
          description: Defines the conditions for the expiration date of a tier.
          properties:
            type:
              type: string
              enum:
                - END_OF_PERIOD
                - END_OF_NEXT_PERIOD
                - BALANCE_DROP
                - CUSTOM
              description: >-
                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:
              type: string
              description: >-
                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:
              description: Defines the rounding mechanism for tier expiration.
              properties:
                type:
                  type: string
                  enum:
                    - MONTH
                    - QUARTER
                    - HALF_YEAR
                    - YEAR
                    - CUSTOM
                  description: >-
                    This mechanism describes a custom rounding for the
                    expiration date.
                strategy:
                  type: string
                  enum:
                    - START
                    - END
                  description: >-
                    This mechanism describes a rounding strategy for the
                    expiration date.
                unit:
                  type: string
                  description: >-
                    Defines the type of unit of time in which the rounding
                    period is counted.
                  default: MONTH
                  enum:
                    - MONTH
                value:
                  type: integer
                  description: >-
                    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
          required:
            - type
            - extend
      required:
        - qualification_type
        - start_date
        - expiration_date
    CampaignsUpdateBase:
      type: object
      title: Campaign Update Schema Base
      description: Base body schema for creating a campaign using **PUT** `v1/campaigns`.
      properties:
        start_date:
          type: string
          format: date-time
          description: >-
            Activation timestamp defines when the campaign starts to be active
            in ISO 8601 format. Campaign is *inactive before* this date. 
          example: '2022-09-20T00:00:00.000Z'
        expiration_date:
          type: string
          format: date-time
          description: >-
            Expiration timestamp defines when the campaign expires in ISO 8601
            format.  Campaign is *inactive after* this date.
          example: '2022-09-30T00:00:00.000Z'
        validity_timeframe:
          $ref: '#/components/schemas/ValidityTimeframe'
        validity_day_of_week:
          $ref: '#/components/schemas/ValidityDayOfWeek'
        validity_hours:
          $ref: '#/components/schemas/ValidityHours'
        description:
          type: string
          description: >-
            An optional field to keep any extra textual information about the
            campaign such as a campaign description and details.
        category:
          type: string
          description: >-
            The category assigned to the campaign. Either pass this parameter OR
            the `category_id`.
        metadata:
          type: object
          description: >-
            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.
        unset_metadata_fields:
          type: array
          nullable: true
          description: Determine which metadata should be removed from campaign.
          items:
            type: string
        category_id:
          type: string
          description: >-
            Unique category ID that this campaign belongs to. Either pass this
            parameter OR the `category`.
          example: cat_0b688929a2476386a7
        access_settings:
          $ref: '#/components/schemas/AccessSettings'
    CampaignBase:
      type: object
      title: Campaign Base
      description: This is an object representing a campaign.
      properties:
        id:
          type: string
          description: Unique campaign ID, assigned by Voucherify.
          example: camp_f7fBbQxUuTN7dI7tGOo5XMDA
        name:
          type: string
          description: Campaign name.
        description:
          type: string
          description: >-
            An optional field to keep any extra textual information about the
            campaign such as a campaign description and details.
        campaign_type:
          type: string
          enum:
            - LOYALTY_PROGRAM
            - GIFT_VOUCHERS
            - DISCOUNT_COUPONS
            - PROMOTION
            - REFERRAL_PROGRAM
          description: Type of campaign.
        type:
          type: string
          description: >-
            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
          enum:
            - AUTO_UPDATE
            - STATIC
            - STANDALONE
        voucher:
          $ref: '#/components/schemas/CampaignVoucher'
        auto_join:
          type: boolean
          description: >-
            Indicates whether customers will be able to auto-join a loyalty
            campaign if any earning rule is fulfilled.
        join_once:
          type: boolean
          description: >-
            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:
          type: boolean
          description: >-
            Flag indicating whether the campaign is to use the voucher's
            metadata schema instead of the campaign metadata schema.
        validity_timeframe:
          $ref: '#/components/schemas/ValidityTimeframe'
        validity_day_of_week:
          $ref: '#/components/schemas/ValidityDayOfWeek'
        validity_hours:
          $ref: '#/components/schemas/ValidityHours'
        activity_duration_after_publishing:
          type: string
          description: >-
            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:
          type: integer
          description: Total number of unique vouchers in campaign.
        start_date:
          type: string
          format: date-time
          description: >-
            Activation timestamp defines when the campaign starts to be active
            in ISO 8601 format. Campaign is *inactive before* this date. 
          example: '2022-09-20T00:00:00.000Z'
        expiration_date:
          type: string
          format: date-time
          description: >-
            Expiration timestamp defines when the campaign expires in ISO 8601
            format.  Campaign is *inactive after* this date.
          example: '2022-09-30T00:00:00.000Z'
        active:
          type: boolean
          description: >-
            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:
          type: object
          description: >-
            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:
          type: string
          format: date-time
          example: '2021-12-01T08:00:50.038Z'
          description: >-
            Timestamp representing the date and time when the campaign was
            created. The value is shown in the ISO 8601 format.
        updated_at:
          type: string
          format: date-time
          example: '2022-09-20T09:18:19.623Z'
          description: >-
            Timestamp representing the date and time when the campaign was last
            updated in ISO 8601 format.
        category:
          type: string
          description: Unique category name.
        creation_status:
          type: string
          enum:
            - DONE
            - IN_PROGRESS
            - FAILED
            - DRAFT
            - MODIFYING
          description: Indicates the status of the campaign creation.
        vouchers_generation_status:
          type: string
          description: Indicates the status of the campaign's voucher generation.
          enum:
            - DONE
            - IN_PROGRESS
            - FAILED
            - DRAFT
            - MODIFYING
        readonly:
          type: boolean
          description: >-
            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:
          type: boolean
          description: Indicates whether the resource can be deleted.
        category_id:
          type: string
          nullable: true
          description: Unique category ID that this campaign belongs to.
          example: cat_0b688929a2476386a7
        categories:
          type: array
          description: >-
            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.
          items:
            $ref: '#/components/schemas/Category'
        object:
          type: string
          default: campaign
          description: >-
            The type of the object represented by JSON. This object stores
            information about the campaign.
        referral_program:
          $ref: '#/components/schemas/ReferralProgram'
        loyalty_tiers_expiration:
          $ref: '#/components/schemas/LoyaltyTiersExpirationAll'
        access_settings_assignments:
          $ref: '#/components/schemas/AccessSettingsCampaignAssignmentsList'
      required:
        - id
        - name
        - campaign_type
        - type
        - auto_join
        - join_once
        - use_voucher_metadata_schema
        - created_at
        - creation_status
        - vouchers_generation_status
        - protected
        - category_id
        - categories
        - object
    PromotionTiersList:
      type: object
      description: Promotion Tiers
      title: Promotion Tiers
      properties:
        object:
          type: string
          default: list
          description: >-
            The type of the object represented by JSON. This object stores
            information about promotion tiers in a dictionary.
        data_ref:
          type: string
          default: tiers
          description: >-
            Identifies the name of the attribute that contains the array of
            promotion tier objects.
        tiers:
          type: array
          description: Contains array of promotion tier objects.
          items:
            $ref: '#/components/schemas/PromotionTier'
        total:
          type: integer
          description: Total number of promotion tiers.
        has_more:
          type: boolean
          description: >-
            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.
    ValidationRulesAssignmentsList:
      title: Validation Rules Assignments List
      description: List of Validation Rules Assignments
      type: object
      properties:
        object:
          type: string
          default: list
          enum:
            - list
          description: >-
            The type of the object represented by JSON. This object stores
            information about validation rules assignments.
        data_ref:
          type: string
          default: data
          enum:
            - data
          description: >-
            Identifies the name of the attribute that contains the array of
            validation rules assignments.
        data:
          type: array
          description: Contains array of validation rules assignments.
          items:
            $ref: '#/components/schemas/BusValRuleAssignment'
        total:
          type: integer
          minimum: 0
          description: Total number of validation rules assignments.
      required:
        - object
        - data_ref
        - data
        - total
    DiscountAmount:
      type: object
      title: Amount
      properties:
        type:
          type: string
          default: AMOUNT
          enum:
            - AMOUNT
          description: Defines the type of the voucher.
        amount_off:
          type: number
          description: >-
            Amount taken off the subtotal of a price. Value is multiplied by 100
            to precisely represent 2 decimal places. For example, a $10 discount
            is written as 1000.
        amount_off_formula:
          type: string
          description: Formula used to dynamically calculate the discount.
        aggregated_amount_limit:
          type: integer
          description: Maximum discount amount per order.
        effect:
          description: Defines how the discount is applied to the customer's order.
          allOf:
            - $ref: '#/components/schemas/DiscountAmountVouchersEffectTypes'
        is_dynamic:
          type: boolean
          description: Flag indicating whether the discount was calculated using a formula.
      required:
        - type
        - amount_off
    DiscountUnit:
      type: object
      title: Unit
      properties:
        type:
          type: string
          default: UNIT
          enum:
            - UNIT
          description: Discount type.
        unit_off:
          type: integer
          description: Number of units to be granted a full value discount.
        unit_off_formula:
          type: string
          description: Formula used to dynamically calculate the number of units.
        effect:
          description: Defines how the unit is added to the customer's order.
          allOf:
            - $ref: '#/components/schemas/DiscountUnitVouchersEffectTypes'
        unit_type:
          type: string
          description: >-
            The product deemed as free, chosen from product inventory (e.g.
            time, items).
        product:
          description: Contains information about the product.
          allOf:
            - $ref: '#/components/schemas/SimpleProductDiscountUnit'
        sku:
          $ref: '#/components/schemas/SimpleSkuDiscountUnit'
        is_dynamic:
          type: boolean
          description: Flag indicating whether the discount was calculated using a formula.
      required:
        - type
        - unit_type
    DiscountUnitMultiple:
      type: object
      title: Unit Multiple
      properties:
        type:
          type: string
          default: UNIT
          enum:
            - UNIT
          description: Discount type.
        effect:
          type: string
          default: ADD_MANY_ITEMS
          enum:
            - ADD_MANY_ITEMS
          description: Defines how the discount is applied to the customer's order.
        units:
          type: array
          items:
            $ref: '#/components/schemas/DiscountUnitMultipleOneUnit'
      required:
        - type
        - units
    DiscountPercent:
      type: object
      title: Percent
      properties:
        type:
          type: string
          default: PERCENT
          enum:
            - PERCENT
          description: Defines the type of the voucher.
        percent_off:
          type: number
          description: The percent discount that the customer will receive.
        percent_off_formula:
          type: string
          description: Formula used to dynamically calculate the discount.
        amount_limit:
          type: number
          description: >-
            Upper limit allowed to be applied as a discount. Value is multiplied
            by 100 to precisely represent 2 decimal places. For example, a $6
            maximum discount is written as 600.
        aggregated_amount_limit:
          type: integer
          description: Maximum discount amount per order.
        effect:
          description: Defines how the discount is applied to the customer's order.
          allOf:
            - $ref: '#/components/schemas/DiscountPercentVouchersEffectTypes'
        is_dynamic:
          type: boolean
          description: Flag indicating whether the discount was calculated using a formula.
      required:
        - type
        - percent_off
    DiscountFixed:
      title: Fixed
      type: object
      properties:
        type:
          type: string
          default: FIXED
          enum:
            - FIXED
          description: Defines the type of the voucher.
        fixed_amount:
          type: number
          description: >-
            Sets a fixed value for an order total or the item price. The value
            is multiplied by 100 to precisely represent 2 decimal places. For
            example, a $10 discount is written as 1000. If the fixed amount is
            calculated by the formula, i.e. the `fixed_amount_formula` parameter
            is present in the fixed amount definition, this value becomes the
            **fallback value**. As a result, if the formula cannot be calculated
            due to missing metadata, for example, this value will be used as the
            fixed value.
        fixed_amount_formula:
          type: string
          description: Formula used to dynamically calculate the discount.
        effect:
          description: Defines how the discount is applied to the customer's order.
          allOf:
            - $ref: '#/components/schemas/DiscountFixedVouchersEffectTypes'
        is_dynamic:
          type: boolean
          description: Flag indicating whether the discount was calculated using a formula.
      required:
        - type
        - fixed_amount
    ValidityTimeframe:
      title: Validity Timeframe
      type: object
      description: >-
        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`.
      properties:
        duration:
          type: string
          description: >-
            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.
          example: PT1H
        interval:
          type: string
          description: >-
            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.
          example: P2D
    ValidityDayOfWeek:
      title: Validity Day Of Week
      type: array
      description: >-
        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
      items:
        type: integer
        enum:
          - 0
          - 1
          - 2
          - 3
          - 4
          - 5
          - 6
    ValidityHours:
      title: Validity Hours
      type: object
      description: Determines the hours of validity, e.g. to create a happy hours scenario.
      properties:
        daily:
          type: array
          description: >-
            Defines the recurring period(s) when the resource is active. The
            periods should not overlap.
          items:
            type: object
            description: Defines the recurring period(s) when the resource will be active.
            properties:
              start_time:
                type: string
                format: time
                description: >-
                  Defines the starting hour of validity in the HH:mm format. The
                  resource is *inactive before* this time.
                example: '12:00'
              days_of_week:
                type: array
                description: >-
                  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
                items:
                  type: integer
                  enum:
                    - 0
                    - 1
                    - 2
                    - 3
                    - 4
                    - 5
                    - 6
              expiration_time:
                type: string
                format: time
                description: >-
                  Defines the ending hour of validity in the HH:mm format. The
                  resource is *inactive after* this time.
                example: '14:00'
    AccessSettings:
      type: object
      title: Access Settings
      description: >-
        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.
      properties:
        assign:
          type: object
          description: >-
            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.
          properties:
            areas_ids:
              type: array
              description: List all area IDs to which the campaign will be assigned.
              items:
                type: string
            area_stores_ids:
              type: array
              description: List all store IDs to which the campaign will be assigned.
              items:
                type: string
            area_all_stores_ids:
              type: array
              description: >-
                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.
              items:
                type: string
        unassign:
          type: object
          description: >-
            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.
          properties:
            areas_ids:
              type: array
              description: List all area IDs from which the campaign will be unassigned.
              items:
                type: string
            area_stores_ids:
              type: array
              description: List all store IDs from which the campaign will be unassigned.
              items:
                type: string
            area_all_stores_ids:
              type: array
              description: >-
                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.
              items:
                type: string
    CampaignVoucher:
      type: object
      description: Schema model for a campaign voucher.
      title: Campaign Voucher
      properties:
        type:
          type: string
          description: Type of voucher.
        discount:
          description: Defines the voucher discount type and details.
          allOf:
            - $ref: '#/components/schemas/Discount'
        gift:
          description: Defines the voucher gift details.
          allOf:
            - $ref: '#/components/schemas/Gift'
        loyalty_card:
          description: Defines the voucher loyalty card details.
          allOf:
            - $ref: '#/components/schemas/CampaignLoyaltyCard'
        redemption:
          type: object
          description: Defines the redemption limits on vouchers.
          properties:
            quantity:
              type: integer
              nullable: true
              description: >-
                How many times a voucher can be redeemed. A `null` value means
                unlimited.
          required:
            - quantity
        code_config:
          allOf:
            - $ref: '#/components/schemas/CodeConfig'
          required:
            - length
            - charset
            - pattern
        is_referral_code:
          type: boolean
          description: >-
            Flag indicating whether this voucher is a referral code; `true` for
            campaign type `REFERRAL_PROGRAM`.
        start_date:
          type: string
          format: date-time
          description: >-
            Activation timestamp defines when the campaign starts to be active
            in ISO 8601 format. Campaign is *inactive before* this date. 
          example: '2022-09-20T00:00:00.000Z'
        expiration_date:
          type: string
          format: date-time
          description: >-
            Expiration timestamp defines when the campaign expires in ISO 8601
            format.  Campaign is *inactive after* this date.
          example: '2022-09-30T00:00:00.000Z'
        validity_timeframe:
          $ref: '#/components/schemas/ValidityTimeframe'
        validity_day_of_week:
          $ref: '#/components/schemas/ValidityDayOfWeek'
        validity_hours:
          $ref: '#/components/schemas/ValidityHours'
      required:
        - type
        - redemption
        - code_config
        - is_referral_code
    Category:
      title: Category
      description: This is an object representing a category.
      type: object
      properties:
        id:
          type: string
          description: Unique category ID assigned by Voucherify.
        name:
          type: string
          description: Category name.
        hierarchy:
          type: integer
          description: >-
            Category hierarchy. Categories with lower hierarchy are processed
            before categories with higher hierarchy value.
          minimum: 0
        object:
          type: string
          default: category
          enum:
            - category
          description: >-
            The type of the object represented by the JSON. This object stores
            information about the category.
        created_at:
          type: string
          description: >-
            Timestamp representing the date and time when the category was
            created. The value is shown in the ISO 8601 format.
          example: '2022-07-14T10:45:13.156Z'
          format: date-time
        updated_at:
          type: string
          example: '2022-08-16T10:52:08.094Z'
          description: >-
            Timestamp representing the date and time when the category was
            updated. The value is shown in the ISO 8601 format.
          format: date-time
      required:
        - id
        - name
        - hierarchy
        - created_at
        - object
    AccessSettingsCampaignAssignmentsList:
      title: Access Settings Campaign Assignments List
      type: object
      description: >-
        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.
      properties:
        object:
          type: string
          default: list
          description: >-
            The type of the object represented by JSON. Default is `list`. This
            object stores information about campaign assignments to areas and
            stores
          enum:
            - list
        data_ref:
          type: string
          default: data
          description: >-
            Identifies the name of the attribute that contains the array of
            campaign assignments.
          enum:
            - data
        data:
          type: array
          description: Contains an array of campaign assignments.
          items:
            $ref: '#/components/schemas/AreaStoreCampaignAssignment'
        total:
          type: integer
          description: Total number of areas and stores to which the campaign is assigned.
          minimum: 0
      required:
        - object
        - data_ref
        - data
        - total
    PromotionTier:
      type: object
      description: >-
        This is an object representing a promotion tier. Promotion tiers are
        always assigned to a campaign and cannot be used standalone.
      title: Promotion Tier
      properties:
        id:
          type: string
          example: promo_63fYCt81Aw0h7lzyRkrGZh9p
          description: Unique promotion tier ID.
        created_at:
          type: string
          example: '2021-12-15T11:34:01.333Z'
          format: date-time
          description: >-
            Timestamp representing the date and time when the promotion tier was
            created. The value is shown in the ISO 8601 format.
        updated_at:
          type: string
          example: '2022-02-09T09:20:05.603Z'
          format: date-time
          description: >-
            Timestamp representing the date and time when the promotion tier was
            updated. The value is shown in the ISO 8601 format.
        name:
          type: string
          description: Name of the promotion tier.
        banner:
          type: string
          description: Text to be displayed to your customers on your website.
        action:
          type: object
          description: Contains details about the discount applied by the promotion tier.
          properties:
            discount:
              $ref: '#/components/schemas/Discount'
        metadata:
          type: object
          description: >-
            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:
          type: integer
          description: >-
            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:
          type: string
          description: Promotion unique ID.
        campaign:
          type: object
          description: Contains details about promotion tier's parent campaign.
          properties:
            id:
              type: string
              description: Unique campaign ID.
            start_date:
              type: string
              description: >-
                Activation timestamp defines when the campaign starts to be
                active in ISO 8601 format. Campaign is *inactive before* this
                date. 
              format: date-time
              example: '2022-09-22T00:00:00.000Z'
            expiration_date:
              type: string
              format: date-time
              description: >-
                Expiration timestamp defines when the campaign expires in ISO
                8601 format.  Campaign is *inactive after* this date.
              example: '2022-09-30T00:00:00.000Z'
            validity_timeframe:
              $ref: '#/components/schemas/ValidityTimeframe'
            validity_day_of_week:
              $ref: '#/components/schemas/ValidityDayOfWeek'
            validity_hours:
              $ref: '#/components/schemas/ValidityHours'
            active:
              type: boolean
              description: >-
                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:
              type: string
              example: cat_0b688929a2476386a6
              description: Unique category ID that this campaign belongs to.
            object:
              type: string
              description: >-
                The type of the object represented by the campaign object. This
                object stores information about the campaign.
              default: campaign
        campaign_id:
          type: string
          description: Promotion tier's parent campaign's unique ID.
        active:
          type: boolean
          description: >-
            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:
          type: string
          description: >-
            Activation timestamp defines when the promotion tier starts to be
            active in ISO 8601 format. Promotion tier is *inactive before* this
            date. 
          format: date-time
          example: '2022-09-23T00:00:00.000Z'
        expiration_date:
          type: string
          description: >-
            Activation timestamp defines when the promotion tier expires in ISO
            8601 format. Promotion tier is *inactive after* this date. 
          format: date-time
          example: '2022-09-26T00:00:00.000Z'
        validity_timeframe:
          $ref: '#/components/schemas/ValidityTimeframe'
        validity_day_of_week:
          $ref: '#/components/schemas/ValidityDayOfWeek'
        validity_hours:
          $ref: '#/components/schemas/ValidityHours'
        summary:
          type: object
          description: Contains statistics about promotion tier redemptions and orders.
          properties:
            redemptions:
              type: object
              description: Contains statistics about promotion tier redemptions.
              properties:
                total_redeemed:
                  type: integer
                  description: Number of times the promotion tier was redeemed.
            orders:
              type: object
              description: Contains statistics about orders related to the promotion tier.
              properties:
                total_amount:
                  type: integer
                  description: Sum of order totals.
                total_discount_amount:
                  type: integer
                  description: Sum of total discount applied using the promotion tier.
        object:
          type: string
          default: promotion_tier
          description: >-
            The type of the object represented by JSON. This object stores
            information about the promotion tier.
        validation_rule_assignments:
          $ref: '#/components/schemas/ValidationRuleAssignmentsList'
        category_id:
          type: string
          description: Promotion tier category ID.
          example: cat_0c9da30e7116ba6bba
        categories:
          type: array
          items:
            $ref: '#/components/schemas/Category'
    BusValRuleAssignment:
      title: Business Validation Rule Assignment
      description: Assignments of business validation rule
      example:
        id: asgm_LnY1g7UNFA9KyDrD
        rule_id: val_3gPNA6SnH4ae
        related_object_id: camp_CZOnEGiZfwIKWmSjhIoIT7Ol
        related_object_type: campaign
        object: validation_rules_assignment
        validation_status: PARTIALLY_VALID
        validation_omitted_rules:
          - '1'
      properties:
        id:
          type: string
          description: The unique identifier for a assignment
        rule_id:
          type: string
          description: The unique identifier for a rule
        related_object_id:
          type: string
          description: The unique identifier for a related object
        related_object_type:
          type: string
          description: The type of related object
        created_at:
          type: string
          description: >-
            Timestamp representing the date and time when the object was
            created. The value is shown in the ISO 8601 format.
          example: '2022-03-09T11:19:04.819Z'
          format: date-time
        updated_at:
          type: string
          description: >-
            Timestamp representing the date and time when the object was last
            updated in ISO 8601 format.
          example: '2022-03-09T11:19:04.819Z'
          format: date-time
        object:
          type: string
          description: The type of the object represented by JSON.
          default: validation_rules_assignment
          enum:
            - validation_rules_assignment
        validation_status:
          type: string
          description: The validation status of the assignment
          enum:
            - VALID
            - PARTIALLY_VALID
            - INVALID
        validation_omitted_rules:
          type: array
          description: The list of omitted rules
          items:
            type: string
      required:
        - id
        - rule_id
        - related_object_id
        - related_object_type
        - object
    DiscountAmountVouchersEffectTypes:
      title: Discount Amount Vouchers Effect Types
      enum:
        - APPLY_TO_ORDER
        - APPLY_TO_ITEMS
        - APPLY_TO_ITEMS_PROPORTIONALLY
        - APPLY_TO_ITEMS_PROPORTIONALLY_BY_QUANTITY
        - APPLY_TO_ITEMS_BY_QUANTITY
      type: string
    DiscountUnitVouchersEffectTypes:
      title: Discount Unit Vouchers Effect Types
      enum:
        - ADD_MISSING_ITEMS
        - ADD_NEW_ITEMS
        - ADD_MANY_ITEMS
        - ADD_SAME_ITEMS
      type: string
    SimpleProductDiscountUnit:
      type: object
      title: Simple Product Discount Unit
      properties:
        id:
          type: string
          description: Unique product ID, assigned by Voucherify.
        source_id:
          type: string
          description: Product's source ID.
        name:
          type: string
          description: Product name.
      required:
        - id
        - name
    SimpleSkuDiscountUnit:
      type: object
      title: Simple Sku Discount Unit
      properties:
        id:
          type: string
          description: Unique SKU ID, assigned by Voucherify.
        source_id:
          type: string
          description: Product variant's source ID.
        name:
          type: string
          description: Sku name
      required:
        - id
        - name
    DiscountUnitMultipleOneUnit:
      type: object
      title: One Unit
      properties:
        unit_off:
          type: number
          description: Number of units to be granted a full value discount.
        unit_off_formula:
          type: string
          description: Formula used to dynamically calculate the number of units.
        effect:
          type: string
          enum:
            - ADD_NEW_ITEMS
            - ADD_MISSING_ITEMS
          description: |+
            Defines how the unit is added to the customer's order.

        unit_type:
          type: string
          description: >-
            The product deemed as free, chosen from product inventory (e.g.
            time, items).
        product:
          description: Contains information about the product.
          allOf:
            - $ref: '#/components/schemas/SimpleProductDiscountUnit'
        sku:
          description: Contains information about the sku.
          allOf:
            - $ref: '#/components/schemas/SimpleSkuDiscountUnit'
      required:
        - effect
        - unit_type
    DiscountPercentVouchersEffectTypes:
      title: Discount Percent Vouchers Effect Types
      enum:
        - APPLY_TO_ORDER
        - APPLY_TO_ITEMS
      type: string
    DiscountFixedVouchersEffectTypes:
      title: Discount Fixed Vouchers Effect Types
      enum:
        - APPLY_TO_ORDER
        - APPLY_TO_ITEMS
      type: string
    CampaignLoyaltyCard:
      type: object
      description: Schema model for a campaign loyalty card.
      title: Campaign Loyalty Card
      properties:
        points:
          type: integer
          description: >-
            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:
          type: object
          description: >-
            Defines the loyalty point expiration rule. This expiration rule
            applies when there are no `expiration_rules` defined for an earning
            rule.
          properties:
            period_type:
              type: string
              description: >-
                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.
              enum:
                - FIXED_DAY_OF_YEAR
                - MONTH
            period_value:
              type: integer
              description: 'Value of the period. Required for the `period_type: MONTH`.'
            rounding_type:
              type: string
              description: >-
                Type of rounding of the expiration period. Optional for the
                `period_type: MONTH`.
              enum:
                - END_OF_MONTH
                - END_OF_QUARTER
                - END_OF_HALF_YEAR
                - END_OF_YEAR
                - PARTICULAR_MONTH
            rounding_value:
              type: integer
              description: >-
                Value of rounding of the expiration period. Required for the
                `rounding_type`.
            fixed_month:
              type: integer
              description: >-
                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`.
              minimum: 1
              maximum: 12
            fixed_day:
              type: integer
              description: >-
                Determines the day of the month when the points expire. Required
                for the `period_type: FIXED_DAY_OF_YEAR`.
              minimum: 1
              maximum: 31
          required:
            - period_type
      required:
        - points
    CodeConfig:
      title: Code Config
      type: object
      description: >-
        Contains information about the config used for the voucher code. Defines
        the code's pattern (prefix, postfix, length, charset, etc).
      properties:
        length:
          type: number
          description: >-
            Number of characters in a generated code (excluding prefix and
            postfix).
        charset:
          type: string
          description: >-
            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:
          type: string
          description: A text appended before the code.
        postfix:
          type: string
          description: A text appended after the code.
        pattern:
          type: string
          description: >-
            A pattern for codes where hashes (#) will be replaced with random
            characters. Overrides `length`.
        initial_count:
          type: integer
          description: Internal value, does not change anything if provided.
    AreaStoreCampaignAssignment:
      title: Areas and Stores Campain Assignment
      type: object
      description: An object representing an assignment of a campaign to an area or store.
      properties:
        id:
          type: string
          description: Unique identifier of the campaign assignment.
          example: arsca_0ef5ee192117ae2416
        area_id:
          type: string
          description: Unique identifier of the area to which the campaign is assigned.
          example: ar_0ea6cd7b781b8f857f
        all_stores:
          type: boolean
          description: >-
            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:
          type: string
          description: Unique identifier of the store to which the campaign is assigned.
          example: ars_0ec347e2016bed85f4
        created_at:
          type: string
          description: >-
            Date and time when the assignment was made. The value is shown in
            the ISO 8601 format.
          format: date-time
          example: '2024-06-25T19:04:16.260Z'
        object:
          type: string
          description: >-
            The type of the object represented by JSON. This object stores
            information about the campaign assignment to areas or stores.
          default: area_store_campaign_assignment
          enum:
            - area_store_campaign_assignment
      required:
        - id
        - area_id
        - created_at
        - object
    ValidationRuleAssignmentsList:
      type: object
      description: Validation Rule Assignments List
      title: Validation Rule Assignments List
      properties:
        object:
          type: string
          description: >-
            The type of the object represented by JSON. This object stores
            information about validation rule assignments.
          default: list
        data_ref:
          type: string
          description: >-
            Identifies the name of the JSON property that contains the array of
            validation rule assignments.
          default: data
        data:
          type: array
          description: A dictionary that contains an array of validation rule assignments.
          items:
            $ref: '#/components/schemas/ValidationRuleAssignment'
        total:
          type: integer
          description: Total number of validation rule assignments.
      required:
        - object
        - data_ref
        - data
        - total
    ValidationRuleAssignment:
      title: Validation Rule Assignment
      type: object
      description: This is an object representing a validation rule assignment.
      properties:
        id:
          type: string
          example: asgm_74F7QZoYbUoljwQO
          description: Validation rule assignment ID.
        rule_id:
          type: string
          example: val_4j7DCRm2IS59
          description: Validation rule ID.
        related_object_id:
          type: string
          example: v_JtWunK6jUo7X2qOFj0SyRHq4p9tgENlT
          description: The resource ID to which the validation rule was assigned.
        related_object_type:
          type: string
          description: The type of resource to which the validation rule was assigned.
          enum:
            - voucher
            - campaign
            - earning_rule
            - reward_assignment
            - promotion_tier
            - distribution
        created_at:
          type: string
          example: '2022-02-17T08:18:15.085Z'
          description: >-
            Timestamp representing the date and time when the validation rule
            assignment was created. The value is shown in the ISO 8601 format.
          format: date-time
        object:
          type: string
          default: validation_rules_assignment
          description: The type of the object represented by the ID.
          enum:
            - validation_rules_assignment
      required:
        - id
        - rule_id
        - related_object_id
        - related_object_type
        - created_at
        - object
  securitySchemes:
    X-App-Id:
      type: apiKey
      name: X-App-Id
      in: header
    X-App-Token:
      type: apiKey
      name: X-App-Token
      in: header
    X-Voucherify-OAuth:
      type: oauth2
      flows:
        implicit:
          authorizationUrl: https://api.voucherify.io/v1/oauth/token
          scopes:
            api: Gives access to whole server-side API.
            vouchers: >-
              Gives access to all endpoints and methods starting with
              `v1/vouchers`.
            client_api: Gives access to whole client-side API.
            client_vouchers: >-
              Gives access to all endpoints and methods starting with
              `/client/v1/vouchers`.
            promotions: >-
              Gives access to all endpoints and methods starting with
              `/v1/promotions`.
            client_promotions: >-
              Gives access to all endpoints and methods starting with
              `/client/v1/promotions`
            campaigns: >-
              Gives access to all endpoints and methods starting with
              `v1/campaigns`.
            client_publish: >-
              Gives access to all endpoints and methods starting with
              `/client/v1/publish`.
            exports: >-
              Gives access to all endpoints and methods starting with
              `/v1/exports`.
            publications: >-
              Gives access to all endpoints and methods starting with
              `/v1/publications`.
            client_validate: >-
              Gives access to all endpoints and methods starting with
              `/client/v1/validate`.
            validations: >-
              Gives access to all endpoints and methods starting with
              `/v1/validations`.
            client_validations: >-
              Gives access to all endpoints and methods starting with
              `/client/v1/validations`.
            qualifications: >-
              Gives access to all endpoints and methods starting with
              `/v1/qualifications`.
            client_qualifications: >-
              Gives access to all endpoints and methods starting with
              `/client/v1/qualifications`.
            client_redeem: >-
              Gives access to all endpoints and methods starting with
              `/client/v1/redeem
            redemptions: >-
              Gives access to all endpoints and methods starting with
              `/v1/redemptions`.
            client_redemptions: >-
              Gives access to all endpoints and methods starting with
              `/client/v1/redemptions`
            customers: >-
              Gives access to all endpoints and methods starting with
              `/v1/customers`.
            client_customers: >-
              Gives access to all endpoints and methods starting with
              `/client/v1/customers`.
            orders: >-
              Gives access to all endpoints and methods starting with
              `/v1/orders`.
            products: >-
              Gives access to all endpoints and methods starting with
              `/v1/products`.
            skus: >-
              Gives access to all endpoints and methods starting with
              `/v1/SKUs`.
            validation-rules: >-
              Gives access to all endpoints and methods starting with
              `/v1/validation-rules`.
            validation-rules-assignments: >-
              Gives access to all endpoints and methods starting with
              `/v1/validation-rules-assignments
            segments: >-
              Gives access to all endpoints and methods starting with
              `/v1/segments`.
            events: >-
              Gives access to all endpoints and methods starting with
              `/v1/events`.
            client_events: >-
              Gives access to all endpoints and methods starting with
              `client/v1/events`.
            rewards: >-
              Gives access to all endpoints and methods starting with
              `/v1/rewards`.
            assets: >-
              Gives access to all endpoints and methods starting with
              `/v1/assets`.
            task-results: >-
              Gives access to all endpoints and methods starting with
              `/v1/task-results`.
            loyalties: >-
              Gives access to all endpoints and methods starting with
              `/v1/loyalties`.
            client_consents: >-
              Gives access to all endpoints and methods starting with
              `client/v1/consents`.
            consents: >-
              Gives access to all endpoints and methods starting with
              `/v1/consents`.
            async-actions: >-
              Gives access to all endpoints and methods starting with
              `/v1/async-actions`.
            product-collections: >-
              Gives access to all endpoints and methods starting with
              `/v1/product-collections`.
            categories: >-
              Gives access to all endpoints and methods starting with
              `/v1/categories`.
            metadata-schemas: >-
              Gives access to all endpoints and methods starting with
              `/v1/metadata-schemas`.
            locations: >-
              Gives access to all endpoints and methods starting with
              `/v1/locations`.
            referrals: >-
              Gives access to all endpoints and methods starting with
              `/v1/referrals`.
            trash-bin: >-
              Gives access to all endpoints and methods starting with
              `/v1/trash-bin`.
            templates: >-
              Gives access to all endpoints and methods starting with
              `/v1/templates`.

````