> ## 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.

# List Publications

> Retrieve a list of publications. To return a **particular** publication, you can use the `source_id` query parameter and provide the `source_id` of the publication you are looking for specifically.

## Pagination


> 🚧 Important!
>
> If you want to scroll through a huge set of records, it is recommended to use the [Exports API](/api-reference/exports/create-export). This API will return an error `page_over_limit` if you reach a page above 1000.

## Filter Query

The `filters` query parameter allows for joining multiple parameters with logical operators. The syntax looks as follows:


```
    "$in"
    "$not_in"
    "$is"
    "$is_not"
    "$has_value"
    "$is_unknown"
    "$contains"
    "$starts_with"
    "$ends_with"
    "$more_than"
    "$less_than"
    "$more_than_equal"
    "$less_than_equal"
```

### Examples


```url
GET /v1/publications?filters[customer_id][conditions][$is][0]=cust_lUET6gRpO5Wxlg5p2j2gRCgL
```

```url
GET /v1/publications?filters[customer_id][conditions][$in][0]=cust_lUET6gRpO5Wxlg5p2j2gRCgL&filters[customer_id][conditions][$in][1]=cust_aR7NfHusxT7PdTMAKMfWDXnc
```

```url
GET /v1/publications?filters[customer_id][conditions][$is][0]=cust_lUET6gRpO5Wxlg5p2j2gRCgL&filters[customer_id][conditions][$is][1]=cust_aR7NfHusxT7PdTMAKMfWDXnc&filters[junction]=OR
```



## OpenAPI

````yaml /openapi/publications.json get /v1/publications
openapi: 3.0.1
info:
  title: Voucherify API - Publications
  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/publications:
    get:
      tags:
        - Publications
      summary: List Publications
      description: >-
        Retrieve a list of publications. To return a **particular** publication,
        you can use the `source_id` query parameter and provide the `source_id`
        of the publication you are looking for specifically.


        ## Pagination



        > 🚧 Important!

        >

        > If you want to scroll through a huge set of records, it is recommended
        to use the [Exports API](/api-reference/exports/create-export). This API
        will return an error `page_over_limit` if you reach a page above 1000.


        ## Filter Query


        The `filters` query parameter allows for joining multiple parameters
        with logical operators. The syntax looks as follows:



        ```
            "$in"
            "$not_in"
            "$is"
            "$is_not"
            "$has_value"
            "$is_unknown"
            "$contains"
            "$starts_with"
            "$ends_with"
            "$more_than"
            "$less_than"
            "$more_than_equal"
            "$less_than_equal"
        ```


        ### Examples



        ```url

        GET
        /v1/publications?filters[customer_id][conditions][$is][0]=cust_lUET6gRpO5Wxlg5p2j2gRCgL

        ```


        ```url

        GET
        /v1/publications?filters[customer_id][conditions][$in][0]=cust_lUET6gRpO5Wxlg5p2j2gRCgL&filters[customer_id][conditions][$in][1]=cust_aR7NfHusxT7PdTMAKMfWDXnc

        ```


        ```url

        GET
        /v1/publications?filters[customer_id][conditions][$is][0]=cust_lUET6gRpO5Wxlg5p2j2gRCgL&filters[customer_id][conditions][$is][1]=cust_aR7NfHusxT7PdTMAKMfWDXnc&filters[junction]=OR

        ```
      operationId: list-publications
      parameters:
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/page'
        - schema:
            $ref: '#/components/schemas/ParameterOrderListPublications'
          in: query
          name: order
          description: >-
            Sorts the results using one of the filtering options, where the dash
            `-` preceding a sorting option means sorting in a descending order.
        - schema:
            $ref: '#/components/schemas/ParameterString'
          in: query
          name: campaign
          description: Filters by a given campaign name.
        - schema:
            $ref: '#/components/schemas/ParameterCustomerId'
          in: query
          name: customer
          description: Filters by a unique customer ID.
        - schema:
            $ref: '#/components/schemas/ParameterCode'
          in: query
          name: voucher
          description: Filters by a given voucher code.
        - schema:
            $ref: '#/components/schemas/ParameterResultListPublications'
          in: query
          name: result
          description: Filters by a publication result.
        - schema:
            $ref: '#/components/schemas/ParameterVoucherTypeListPublications'
          in: query
          name: voucher_type
          description: Filters by a voucher type.
        - schema:
            $ref: '#/components/schemas/ParameterBoolean'
          in: query
          name: is_referral_code
          description: >-
            This filter works only for the `true` option. If set to `true`, the
            query returns only publications of codes from referral campaigns. 
        - schema:
            $ref: '#/components/schemas/ParameterFiltersListPublications'
          in: query
          name: filters
          description: Filters for listing publications.
          style: deepObject
          explode: true
        - schema:
            $ref: '#/components/schemas/ParameterString'
          in: query
          name: source_id
          description: >-
            Using this endpoint with a particular publication `source_id`, which
            was sent with the original request to create a publication, returns
            in the response, exactly the same code published initially because
            the code was assigned to the given publication. As a result, you can
            use this endpoint as a reference and return a code that was assigned
            in a publication by using a particular `source_id`.
      responses:
        '200':
          description: >-
            Returns a list of publications you've previously created with
            [create publication](/api-reference/publications/create-publication)
            or implicitly by the distribution manager. The publications are
            returned in sorted order, with the most recent ones appearing first.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicationsListResponseBody'
              examples:
                Example:
                  value:
                    object: list
                    data_ref: publications
                    publications:
                      - id: pub_QzQT50e5i2y3bRoEVvhFgrKbZ7t6BRwu
                        object: publication
                        created_at: '2022-09-28T13:31:23.522Z'
                        customer_id: cust_tAED42tFhLM9v7GmZUaklJFd
                        tracking_id: cindy.jones@email.com
                        metadata:
                          distribution_id: distr_WXm0CBttar2ug2hBx3EdPtS8Ei
                          source_type: distribution
                          source_id: distr_WXm0CBttar2ug2hBx3EdPtS8Ei
                        channel: Automation
                        source_id: null
                        result: SUCCESS
                        customer:
                          id: cust_tAED42tFhLM9v7GmZUaklJFd
                          name: Cindy Jones
                          email: cindy.jones@email.com
                          source_id: cindy.jones@email.com
                          metadata:
                            acquisition_channel: Facebook
                          object: customer
                        voucher:
                          code: FNV5IrtY
                          object: voucher
                          campaign: Loyalty Campaign
                          loyalty_card:
                            points: 0
                            balance: 0
                          is_referral_code: false
                        vouchers_id:
                          - v_i3HOzVClfJUDia0qCu7TSuGfDj7c0dgD
                      - id: pub_8KOKHObAjuemuI0b6225emIhmWDL1ZoX
                        object: publication
                        created_at: '2022-09-28T13:31:02.766Z'
                        customer_id: cust_tAED42tFhLM9v7GmZUaklJFd
                        tracking_id: sandy.jones@email.com
                        metadata: {}
                        channel: voucherify-website
                        source_id: null
                        result: SUCCESS
                        customer:
                          id: cust_tAED42tFhLM9v7GmZUaklJFd
                          name: Sandy Jones
                          email: sandy.jones@email.com
                          source_id: sandy.jones@email.com
                          metadata:
                            acquisition_channel: Facebook
                          object: customer
                        voucher:
                          code: Voucher-1
                          object: voucher
                          campaign: null
                          discount:
                            type: AMOUNT
                            amount_off: 200
                            amount_off_formula: IF(VOUCHER_PUBLISH_COUNT = 1;25;5)
                            effect: APPLY_TO_ORDER
                          is_referral_code: false
                        vouchers_id:
                          - v_1iEL92K634EIOqeYJw6AHrnjEhGPEdpu
                      - id: pub_DcQPfyVYzomtkQGXFW7dcdyNoJ6vQ4NV
                        object: publication
                        created_at: '2022-09-13T06:15:08.249Z'
                        customer_id: cust_ur1hIPGflbaAe14mLlLdon3G
                        tracking_id: '1'
                        metadata: {}
                        channel: voucherify-website
                        source_id: null
                        result: SUCCESS
                        customer:
                          id: cust_ur1hIPGflbaAe14mLlLdon3G
                          name: Bob Jones
                          email: bob.jones@email.com
                          source_id: '1'
                          metadata:
                            accepts_marketing: false
                          object: customer
                        voucher:
                          code: GIFT-WOZaK5YF1Fs87tAX
                          object: voucher
                          campaign: Gift Cards
                          gift:
                            amount: 0
                            balance: 0
                          is_referral_code: false
                        vouchers_id:
                          - v_yzOeb7vw63vbPfA30215dFm7aRXa8Xoc
                    total: 3
        '400':
          description: Returns an error if you request a page higher than 1000.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                Example:
                  value:
                    code: 400
                    key: page_over_limit
                    message: Listing resource above 1000 page is not supported
                    details: Property .page cannot be higher than 1000
                    request_id: v-0bc2a39574c61362af
      security:
        - X-App-Id: []
          X-App-Token: []
        - X-Voucherify-OAuth:
            - api
            - publications
components:
  parameters:
    limit:
      name: limit
      in: query
      required: false
      schema:
        $ref: '#/components/schemas/ParameterLimit'
      description: >-
        Limits the number of objects to be returned. The limit can range between
        1 and 100 items. If no limit is set, it returns 10 items.
    page:
      name: page
      in: query
      required: false
      schema:
        $ref: '#/components/schemas/ParameterPage'
      description: Which page of results to return. The lowest value is `1`.
  schemas:
    ParameterOrderListPublications:
      type: string
      enum:
        - id
        - '-id'
        - voucher_code
        - '-voucher_code'
        - tracking_id
        - '-tracking_id'
        - customer_id
        - '-customer_id'
        - created_at
        - '-created_at'
        - channel
        - '-channel'
    ParameterString:
      type: string
    ParameterCustomerId:
      type: string
      example: cust_nk0N1uNQ1YnupAoJGOgvsODC
    ParameterCode:
      type: string
      example: 2CpRCE2c
    ParameterResultListPublications:
      type: string
      enum:
        - SUCCESS
        - FAILURE
    ParameterVoucherTypeListPublications:
      type: string
      enum:
        - discount
        - loyalty
    ParameterBoolean:
      type: boolean
    ParameterFiltersListPublications:
      type: object
      properties:
        junction:
          $ref: '#/components/schemas/Junction'
        failure_code:
          type: object
          description: Filter publications by ids.
          properties:
            conditions:
              $ref: '#/components/schemas/FilterConditionsString'
        result:
          type: object
          description: Filter publications by names.
          properties:
            conditions:
              $ref: '#/components/schemas/FilterConditionsString'
        customer_id:
          type: object
          description: Filter publications by customer ids.
          properties:
            conditions:
              $ref: '#/components/schemas/FilterConditionsString'
        campaign_name:
          type: object
          description: Filter publications by campaign names.
          properties:
            conditions:
              $ref: '#/components/schemas/FilterConditionsString'
        voucher_type:
          type: object
          description: Filter publications by voucher types.
          properties:
            conditions:
              $ref: '#/components/schemas/FilterConditionsString'
        is_referral_code:
          type: object
          description: Filter publications by is referall code.
          properties:
            conditions:
              $ref: '#/components/schemas/FilterConditionsString'
        parent_object_id:
          type: object
          description: Filter publications by parent object id.
          properties:
            conditions:
              $ref: '#/components/schemas/FilterConditionsString'
        related_object_id:
          type: object
          description: Filter publications by related object id.
          properties:
            conditions:
              $ref: '#/components/schemas/FilterConditionsString'
        source_id:
          type: object
          description: Filter publications by source id.
          properties:
            conditions:
              $ref: '#/components/schemas/FilterConditionsString'
    PublicationsListResponseBody:
      type: object
      description: >-
        Response body schema for listing publications using **GET**
        `v1/publications`.
      title: Publications List Response Body
      properties:
        object:
          type: string
          default: list
          description: >-
            The type of the object represented by JSON. This object stores
            information about publications in a dictionary.
        data_ref:
          type: string
          default: publications
          description: >-
            Identifies the name of the attribute that contains the array of
            publications.
        publications:
          type: array
          description: >-
            Contains array of publication objects, voucher object will be
            simplified.
          items:
            title: Publications List Response Body Publications Item
            description: >-
              Response schema model for publishing vouchers to a specific
              customer.
            oneOf:
              - $ref: '#/components/schemas/ListPublicationsItemValidSingleVoucher'
              - $ref: '#/components/schemas/ListPublicationsItemValidMultipleVouchers'
              - $ref: '#/components/schemas/ListPublicationsItemInvalid'
        total:
          type: integer
          description: Total number of publications.
      required:
        - object
        - data_ref
        - publications
        - total
    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
    ParameterLimit:
      type: integer
      minimum: 1
      maximum: 100
    ParameterPage:
      type: integer
      minimum: 1
      maximum: 100
    Junction:
      title: Junction
      description: >-
        Logical Operator Between Filters. Filter by conditions set on the
        `junction` parameter indicating how the `conditions` should be accounted
        for in the query. An `AND` is an all-inclusive logical operator, meaning
        the `AND` operator displays a record if **ALL** the conditions separated
        by AND are TRUE, while  an `OR` operator displays a record if **ANY** of
        the conditions separated by OR is TRUE.
      enum:
        - and
        - or
      type: string
    FilterConditionsString:
      title: Filter by conditions
      type: object
      description: >-
        Data filters used to narrow down the data records to be returned in the
        result.
      properties:
        $in:
          type: array
          description: >-
            Array of resource values that should be included in the results
            (multiple values).
          items:
            type: string
        $not_in:
          type: array
          description: >-
            Array of resource values that should be included in the results
            (multiple values).
          items:
            type: string
        $is:
          type: string
          description: Value is exactly this value (single value).
        $is_not:
          type: string
          description: Results omit this value (single value).
        $has_value:
          type: string
          description: Value is NOT null. The value for this parameter is an empty string.
        $is_unknown:
          type: string
          description: Value is null. The value for this parameter is an empty string.
        $starts_with:
          type: string
          description: Value starts with the specified string.
        $ends_with:
          type: string
          description: Value ends with the specified string.
        $contains:
          type: string
          description: Value includes the specified string.
        $not_contain:
          type: string
          description: Value does NOT include the specified string.
    ListPublicationsItemValidSingleVoucher:
      title: Valid Single Voucher
      type: object
      allOf:
        - $ref: '#/components/schemas/ListPublicationsItemBase'
        - type: object
          properties:
            result:
              type: string
              default: SUCCESS
              enum:
                - SUCCESS
              description: Status of the publication attempt.
            voucher:
              $ref: '#/components/schemas/ListPublicationsItemVoucher'
          required:
            - result
            - voucher
    ListPublicationsItemValidMultipleVouchers:
      title: Valid Multiple Vouchers
      type: object
      allOf:
        - $ref: '#/components/schemas/ListPublicationsItemBase'
        - type: object
          properties:
            result:
              type: string
              default: SUCCESS
              enum:
                - SUCCESS
              description: Status of the publication attempt.
            vouchers:
              type: array
              description: >-
                Contains the unique voucher codes that was assigned by
                Voucherify.
              items:
                type: string
                example: Q1K4XT5S
          required:
            - result
            - vouchers
    ListPublicationsItemInvalid:
      title: Invalid
      type: object
      allOf:
        - $ref: '#/components/schemas/ListPublicationsItemBase'
        - type: object
          properties:
            result:
              type: string
              default: FAILURE
              enum:
                - FAILURE
              description: Status of the publication attempt.
            failure_code:
              type: string
              description: >-
                Generic reason as to why the create publication operation
                failed.
            failure_message:
              type: string
              description: >-
                This parameter will provide more expanded reason as to why the
                create publication operation failed.
          required:
            - result
            - vouchers
    ListPublicationsItemBase:
      title: List Publications Item Base
      type: object
      properties:
        id:
          type: string
          example: pub_BbjAXnmm8e0SIm3zG8qvvFCP0KuLywtp
          description: Unique publication ID, assigned by Voucherify.
        object:
          type: string
          default: publication
          enum:
            - publication
          description: >-
            The type of the object represented by the JSON. This object stores
            information about the `publication`.
        created_at:
          type: string
          example: '2022-09-23T09:57:00.434Z'
          description: >-
            Timestamp representing the date and time when the publication was
            created. The value is shown in the ISO 8601 format.
          format: date-time
        customer_id:
          type: string
          example: cust_eWgXlBBiY6THFRJwX45Iakv4
          description: Unique customer ID of the customer receiving the publication.
        tracking_id:
          type: string
          description: Customer's `source_id`.
        metadata:
          type: object
          description: >-
            The metadata object stores all custom attributes assigned to the
            publication. A set of key/value pairs that you can attach to a
            publication object. It can be useful for storing additional
            information about the publication in a structured format.
          properties:
            source_type:
              type: string
              description: Defines the type of the distribution source.
            source_id:
              type: string
              description: Unique identifier of the distribution source.
            distribution_id:
              type: string
              description: Unique identifier of the distribution.
        channel:
          type: string
          description: >-
            How the publication was originated. It can be your own custom
            channel or an example value provided here.
        source_id:
          type: string
          nullable: true
          description: >-
            The merchant's publication ID if it is different from the Voucherify
            publication ID. It's an optional tracking identifier of a
            publication. It is really useful in case of an integration between
            multiple systems. It can be a publication ID from a CRM system,
            database or 3rd-party service. 
        customer:
          $ref: '#/components/schemas/CustomerWithSummaryLoyaltyReferrals'
        vouchers:
          type: array
          description: Contains the voucher IDs that was assigned by Voucherify.
          items:
            type: string
            example: ZFMKNAEK
        vouchers_id:
          type: array
          description: >-
            Contains the unique internal voucher IDs that was assigned by
            Voucherify.
          items:
            type: string
            example: v_Bw3qWZWv47yb1Onra8F2LlFI1enLakfA
      required:
        - id
        - object
        - created_at
        - customer_id
        - metadata
        - channel
        - source_id
        - customer
        - vouchers_id
    ListPublicationsItemVoucher:
      type: object
      title: List Publications Item Voucher
      properties:
        code:
          type: string
          description: Voucher code.
        object:
          type: string
          description: The type of the object represented by JSON.
          default: voucher
          enum:
            - voucher
        campaign:
          description: Campaign name
          type: string
        gift:
          description: Gift object response
          allOf:
            - $ref: '#/components/schemas/Gift'
        loyalty_card:
          description: Defines the loyalty card details.
          type: object
        discount:
          $ref: '#/components/schemas/Discount'
        is_referral_code:
          type: boolean
          description: >-
            Flag indicating whether this voucher is a referral code; `true` for
            campaign type `REFERRAL_PROGRAM`.
      required:
        - code
        - object
        - campaign
    CustomerWithSummaryLoyaltyReferrals:
      title: Customer With Summary Loyalty Referrals
      allOf:
        - type: object
          title: Customer Response Data
          properties:
            id:
              type: string
              description: >-
                The ID of an existing customer that will be linked to redemption
                in this request.
            source_id:
              type: string
              description: >-
                A unique identifier of the customer who validates a voucher. It
                can be a customer ID or email from a CRM system, database, or a
                third-party service. If you also pass a customer ID (unique ID
                assigned by Voucherify), the source ID will be ignored.
            summary:
              nullable: true
              allOf:
                - $ref: '#/components/schemas/CustomerSummary'
            loyalty:
              nullable: true
              allOf:
                - $ref: '#/components/schemas/CustomerLoyalty'
            referrals:
              nullable: true
              allOf:
                - $ref: '#/components/schemas/CustomerReferrals'
            system_metadata:
              type: object
              description: Object used to store system metadata information.
            created_at:
              type: string
              description: >-
                Timestamp representing the date and time when the customer was
                created. The value is shown in the ISO 8601 format.
              example: '2022-08-30T06:32:07.380Z'
              format: date-time
            updated_at:
              type: string
              description: >-
                Timestamp representing the date and time when the customer was
                updated. The value is shown in the ISO 8601 format.
              example: '2022-08-31T06:32:07.380Z'
              format: date-time
            assets:
              type: object
              description: >-
                Contains information about the customer's cockpit.


                ⚠️ Warning: Customer cockpits were removed. The customer cockpit
                URLs redirect to customer preference center.
              properties:
                cockpit_url:
                  type: string
                  description: >-
                    URL address to customer preference center. Previously, a
                    customer's cockpit URL address.
                cockpit_preference_center_url:
                  type: string
                  description: URL address to customer preference center.
            object:
              type: string
              description: The type of the object represented by JSON.
              default: customer
              enum:
                - customer
          required:
            - summary
            - loyalty
            - referrals
            - object
        - $ref: '#/components/schemas/CustomerBase'
    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
          enum:
            - APPLY_TO_ORDER
            - APPLY_TO_ITEMS
          description: Defines how the credits are applied to the customer's order.
      required:
        - amount
        - balance
    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'
    CustomerSummary:
      title: Customer Summary
      type: object
      properties:
        redemptions:
          $ref: '#/components/schemas/CustomerSummaryRedemptions'
        orders:
          $ref: '#/components/schemas/CustomerSummaryOrders'
      required:
        - redemptions
        - orders
    CustomerLoyalty:
      title: Customer Loyalty
      type: object
      properties:
        points:
          type: integer
          description: >-
            Customer's loyalty points minus expired for all loyalty cards which
            the customer has.
        referred_customers:
          type: integer
          description: Total number of customers referred by the customer.
        campaigns:
          type: object
          description: >-
            Contains campaigns with details about point balances and how many
            customers were referred by the customer.
          additionalProperties:
            type: object
            description: >-
              Contains details about the point balances left on loyalty cards
              and the number of referred customers in each campaign.
            properties:
              points:
                type: integer
                description: Remaining point balance in campaign.
              loyalty_tier:
                type: string
                example: ltr_UJ5Q54Q0OvEhua87Qfv2Ki5x
                description: Customer's loyalty tier within the campaign.
              referred_customers:
                type: integer
                description: Number of customers referred by the customer in campaign.
      required:
        - points
        - referred_customers
        - campaigns
    CustomerReferrals:
      title: Customer Referrals
      type: object
      description: >-
        Summary of customer's referrals, in this case, the customer being the
        referee, i.e. information about the source of referrals and number of
        times the customer was referred by other customers.
      properties:
        total:
          type: integer
          description: >-
            Total number of times this customer received a referral, i.e. was
            referred by another customer.
        campaigns:
          type: array
          description: >-
            Contains an array of campaigns that served as the source of a
            referral for the customer.
          items:
            title: Customer Referrals Campaigns Item
            type: object
            description: Contains information about the source of the referral.
            properties:
              campaign_id:
                type: string
                description: Unique campaign ID, assigned by Voucherify.
                example: camp_rRsfatlwN7unSeUIJDCYedal
              referrer_id:
                type: string
                example: cust_sehkNIi8Uq2qQuRqSr7xn4Zi
                description: >-
                  Unique referrer ID, assigned by Voucherify. This is the
                  customer ID of a customer that is referring this customer.
              related_object_id:
                type: string
                description: Related object id
                example: r_0b9d4cc4aa164dd073
              related_object_type:
                type: string
                description: Related object type, i.e. `redemption`.
              date:
                type: string
                format: date-time
                example: '2022-08-30T10:19:39.196Z'
                description: >-
                  Timestamp representing the date and time when the customer was
                  referred in ISO 8601 format.
            required:
              - campaign_id
              - referrer_id
              - related_object_id
              - related_object_type
              - date
      required:
        - total
        - campaigns
    CustomerBase:
      title: Customer Base
      type: object
      properties:
        name:
          type: string
          description: Customer's first and last name.
        description:
          type: string
          description: An arbitrary string that you can attach to a customer object.
        email:
          type: string
          description: Customer's email address.
        phone:
          type: string
          description: >-
            Customer's phone number. This parameter is mandatory when you try to
            send out codes to customers via an SMS channel.
        birthday:
          type: string
          description: '`Deprecated`. ~~Customer''s birthdate; format YYYY-MM-DD~~.'
          format: date
        birthdate:
          type: string
          description: Customer's birthdate; format YYYY-MM-DD.
          format: date
        address:
          type: object
          nullable: true
          description: Customer's address.
          properties:
            city:
              type: string
              description: City
            state:
              type: string
              description: State
            line_1:
              type: string
              description: First line of address.
            line_2:
              type: string
              description: Second line of address.
            country:
              type: string
              description: Country.
            postal_code:
              type: string
              description: Postal code.
        metadata:
          type: object
          description: >-
            A set of custom key/value pairs that you can attach to a customer.
            The metadata object stores all custom attributes assigned to the
            customer. It can be useful for storing additional information about
            the customer in a structured format. This metadata can be used for
            validating whether the customer qualifies for a discount or it can
            be used in building customer segments.
    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
    CustomerSummaryRedemptions:
      title: Customer Summary Redemptions
      type: object
      properties:
        total_redeemed:
          type: integer
          description: Total number of redemptions made by the customer.
        total_failed:
          type: integer
          description: Total number of redemptions that failed.
        total_succeeded:
          type: integer
          description: Total number of redemptions that succeeded.
        total_rolled_back:
          type: integer
          description: Total number of redemptions that were rolled back for the customer.
        total_rollback_failed:
          type: integer
          description: Total number of redemption rollbacks that failed.
        total_rollback_succeeded:
          type: integer
          description: Total number of redemption rollbacks that succeeded.
        gift:
          type: object
          description: Summary of gift card credits.
          required:
            - redeemed_amount
            - amount_to_go
          properties:
            redeemed_amount:
              type: integer
              description: >-
                Total amount of gift card credits redeemed by customer. The
                value is multiplied by 100 to represent 2 decimal places. For
                example `10000 cents` for `$100.00`.
              default: 0
            amount_to_go:
              type: integer
              description: >-
                Remaining gift card balance across all gift cards. The value is
                multiplied by 100 to represent 2 decimal places. For example
                `10000 cents` for `$100.00`.
              default: 0
        loyalty_card:
          type: object
          description: Summary of loyalty points.
          required:
            - redeemed_points
            - points_to_go
          properties:
            redeemed_points:
              type: integer
              description: Total number of loyalty points redeemed by the customer.
            points_to_go:
              type: integer
              description: >-
                Sum of remaining available point balance across all loyalty
                cards.
      required:
        - total_redeemed
        - total_failed
        - total_succeeded
        - total_rolled_back
        - total_rollback_failed
        - total_rollback_succeeded
        - gift
        - loyalty_card
    CustomerSummaryOrders:
      title: Customer Summary Orders
      description: >-
        Lists details about orders related to the customer. Lists only data for
        orders with the `PAID` or `FULFILLED` status. Data from orders with a
        `CREATED` or `CANCELED` status are not included. The data is updated
        also when an order changes status.
      type: object
      properties:
        total_amount:
          type: integer
          description: >-
            The total amount spent by the customer. The value is multiplied by
            100 to represent 2 decimal places. For example `10000 cents` for
            `$100.00`.
        total_count:
          type: integer
          description: Total number of orders made by the customer.
        average_amount:
          type: integer
          description: >-
            Average amount spent on orders. `total_amount` &divide;
            `total_count`. The value is multiplied by 100 to represent 2 decimal
            places. For example `10000 cents` for `$100.00`.
        last_order_amount:
          type: integer
          description: >-
            Amount spent on last order. The value is multiplied by 100 to
            represent 2 decimal places. For example `10000 cents` for `$100.00`.
        last_order_date:
          type: string
          format: date-time
          example: '2022-08-30T11:51:08.029Z'
          description: >-
            Timestamp representing the date and time of the customer's last
            order in ISO 8601 format.
      required:
        - total_amount
        - total_count
        - average_amount
        - last_order_amount
    DiscountAmountVouchersEffectTypes:
      title: Discount Amount Vouchers Effect Types
      enum:
        - APPLY_TO_ORDER
        - APPLY_TO_ITEMS
        - APPLY_TO_ITEMS_PROPORTIONALLY
        - APPLY_TO_ITEMS_PROPORTIONALLY_BY_QUANTITY
        - APPLY_TO_ITEMS_BY_QUANTITY
      type: string
    DiscountUnitVouchersEffectTypes:
      title: Discount Unit Vouchers Effect Types
      enum:
        - ADD_MISSING_ITEMS
        - ADD_NEW_ITEMS
        - ADD_MANY_ITEMS
        - ADD_SAME_ITEMS
      type: string
    SimpleProductDiscountUnit:
      type: object
      title: Simple Product Discount Unit
      properties:
        id:
          type: string
          description: Unique product ID, assigned by Voucherify.
        source_id:
          type: string
          description: Product's source ID.
        name:
          type: string
          description: Product name.
      required:
        - id
        - name
    SimpleSkuDiscountUnit:
      type: object
      title: Simple Sku Discount Unit
      properties:
        id:
          type: string
          description: Unique SKU ID, assigned by Voucherify.
        source_id:
          type: string
          description: Product variant's source ID.
        name:
          type: string
          description: Sku name
      required:
        - id
        - name
    DiscountUnitMultipleOneUnit:
      type: object
      title: One Unit
      properties:
        unit_off:
          type: number
          description: Number of units to be granted a full value discount.
        unit_off_formula:
          type: string
          description: Formula used to dynamically calculate the number of units.
        effect:
          type: string
          enum:
            - ADD_NEW_ITEMS
            - ADD_MISSING_ITEMS
          description: |+
            Defines how the unit is added to the customer's order.

        unit_type:
          type: string
          description: >-
            The product deemed as free, chosen from product inventory (e.g.
            time, items).
        product:
          description: Contains information about the product.
          allOf:
            - $ref: '#/components/schemas/SimpleProductDiscountUnit'
        sku:
          description: Contains information about the sku.
          allOf:
            - $ref: '#/components/schemas/SimpleSkuDiscountUnit'
      required:
        - effect
        - unit_type
    DiscountPercentVouchersEffectTypes:
      title: Discount Percent Vouchers Effect Types
      enum:
        - APPLY_TO_ORDER
        - APPLY_TO_ITEMS
      type: string
    DiscountFixedVouchersEffectTypes:
      title: Discount Fixed Vouchers Effect Types
      enum:
        - APPLY_TO_ORDER
        - APPLY_TO_ITEMS
      type: string
  securitySchemes:
    X-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`.

````