diff --git a/changelog/ARTICLES.md b/changelog/ARTICLES.md
index 3aaf505b7..815823874 100644
--- a/changelog/ARTICLES.md
+++ b/changelog/ARTICLES.md
@@ -5,6 +5,10 @@
Older changes in [DEPRECATED.md](deprecated/DEPRECATED.md)
+## 2026-07-16
+
+Add info about caching to `checking-eligibility.mdx`.
+
## 2026-07-06
- Deleted `team-management.mdx` as it was outdated and duplicated fresh content.
diff --git a/changelog/OPEN-API.md b/changelog/OPEN-API.md
index efc0fe675..ac7fa7f4a 100644
--- a/changelog/OPEN-API.md
+++ b/changelog/OPEN-API.md
@@ -4,6 +4,14 @@
Older changes in [DEPRECATED.md](deprecated/DEPRECATED.md)
+## 2026-07-21
+
+Deprecated all `v1/loyalties` methods
+
+## 2026-07-17
+
+Changed ReadMe callouts to Mintlify ones in the `OpenAPI.json` file.
+
## 2026-07-16
Add info about caching to `v1/qualifications` and `/client/v1/qualifications`.
diff --git a/documentation/api-reference/errors.mdx b/documentation/api-reference/errors.mdx
index 366ad3336..23df396fe 100644
--- a/documentation/api-reference/errors.mdx
+++ b/documentation/api-reference/errors.mdx
@@ -40,6 +40,7 @@ The Voucherify API uses conventional HTTP status codes to indicate success or fa
| 406 | Not Acceptable | The API is unable to produce a response in a format specified by the `Accept` header. In most cases the only available response format is `application/json`. |
| 409 | Duplicated resource found | A resource with similar parameters has been found, so the request couldn't be processed. For example, a request was sent to create a voucher with a name that was already in use. |
| 415 | Unsupported Media Type | The API is unable to consume a request in a format specified by the `Content-Type` header. |
+| 423 | Locked | The resource exists, but its current state blocks the operation. Loyalty v2 examples include an inactive program (`non_active_program`) or a loyalty card with zero balance (`zero_card_balance`). |
| 429 | API limit reached | Error occurs when you exceed your limit of API calls or when your subscription plan has ended. |
| 500 | Internal Server Error | An internal API error occurred. Don't worry, we track and verify all such errors and try to react as asap as possible. |
@@ -86,7 +87,10 @@ The table below shows a list of errors that may be returned along with a brief d
| `missing_order_items` | order items were not specified |
| `missing_order_items_amount` | missing order item's amount(s) |
| `missing_reward` | reward is missing |
+| `member_already_exists` | the customer is already a member of the loyalty v2 program |
| `multiple_requests` | multiple requests detected; i.e. when a redemption is in progress and a session lock is in place, then an attempt to validate the voucher will result in this error because it is unknown whether the voucher can or cannot be used |
+| `non_active_program` | the loyalty v2 program is not in `ACTIVE` status for an operation that requires an active program |
+| `zero_card_balance` | the loyalty card has no points available for a spend operation such as pay with points |
| `no_voucher_suitable_for_publication` | lack of vouchers suitable for publication |
| `not_found` | resource with given ID/code does not exist |
| `order_rules_violated` | order did not match validation rules |
diff --git a/documentation/api-reference/listing.mdx b/documentation/api-reference/listing.mdx
index dbbac8fd1..fe3f12623 100644
--- a/documentation/api-reference/listing.mdx
+++ b/documentation/api-reference/listing.mdx
@@ -36,6 +36,32 @@ However, the following list API methods use the `starting_after_id` query parame
The response to these methods may include a `more_starting_after` key that takes a string value with an ID. Use this ID with the `starting_after_id` query parameter to display another page of results.
+## Cursor pagination (Loyalty v2)
+
+Loyalty v2 list endpoints use cursor pagination instead of `page` or `starting_after_id`.
+
+Typical response shape:
+
+```json
+{
+ "data": [],
+ "cursor": {
+ "next": "lcrsctx_12989e71c62b6d5baf",
+ "expires_at": "2026-06-18T16:32:07.896Z"
+ },
+ "object": "list"
+}
+```
+
+How to page results:
+
+1. Call the list endpoint without `cursor` to get the first page.
+2. If `cursor.next` is present, call the same endpoint again with `?cursor={cursor.next}`.
+3. Stop when `cursor` is `null` or `cursor.next` is missing.
+4. Treat `cursor.expires_at` as the validity window for that cursor value. Request a new first page if the cursor expires.
+
+Cursor prefixes differ by resource (for example `lcrsctx_` for card transactions and `lcrsmbr_` for members). Always pass the exact `cursor.next` value returned by the previous response. See the Loyalty v2 endpoint pages under API reference for resource-specific cursor patterns.
+
## Response format
The listing method returns a dictionary with a data property that contains an array of resources. The maximum number of resources returned is determined by the `limit` query parameter. If no more resources are available, the resulting array on a given page will be empty. The result can be narrowed down according to the specified (or default) filters.
diff --git a/documentation/api-reference/loyalties/introduction-to-legacy-loyalty.mdx b/documentation/api-reference/loyalties/introduction-to-legacy-loyalty.mdx
new file mode 100644
index 000000000..4e1a5db39
--- /dev/null
+++ b/documentation/api-reference/loyalties/introduction-to-legacy-loyalty.mdx
@@ -0,0 +1,25 @@
+---
+title: "Legacy loyalty API"
+description: "Legacy loyalty API endpoints for managing loyalty campaigns, members, points, tiers, and rewards."
+---
+
+
+
+Legacy loyalty API
+
+These endpoints belong to the legacy loyalty API (`/v1/loyalties`).
+
+Voucherify will not develop new features for this API. Critical issues may still receive fixes.
+
+For new integrations, use [Loyalty v2](/build/loyalty-overview).
+
+If you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support "Contact Voucherify support").
+
+
+
+The Loyalties API lets you manage legacy loyalty campaigns and their members, points, earning rules, tiers, and rewards through the `/v1/loyalties` endpoints.
+
+For the current loyalty solution, see:
+- [Loyalty v2 overview](/build/loyalty-overview).
+- the Loyalty v2 section in the API reference.
+- [Integrate loyalty v2](/guides/loyalty-v2-integrate).
diff --git a/documentation/api-reference/validations/validation-object.mdx b/documentation/api-reference/validations/validation-object.mdx
index 0e6de3058..2afe444f0 100644
--- a/documentation/api-reference/validations/validation-object.mdx
+++ b/documentation/api-reference/validations/validation-object.mdx
@@ -66,7 +66,8 @@ mode: "frame"
stacking_rules
object, all redeemables here will be
APPLICABLE.
- Read more in [the Stacking rules article]/orchestrate/stacking-rules.
+ Read more in
+ the Stacking rules article.
Array any of:
diff --git a/documentation/build/create-benefits.mdx b/documentation/build/create-benefits.mdx
new file mode 100644
index 000000000..405a20c99
--- /dev/null
+++ b/documentation/build/create-benefits.mdx
@@ -0,0 +1,214 @@
+---
+title: Create benefits
+description: Configure a reusable benefit for loyalty earning rules
+keywords: ['benefits', 'loyalty benefits', 'benefit builder', 'earning rule benefits']
+tag: "NEW"
+---
+
+Benefits define rewards that can be awarded through loyalty earning rules.
+
+Go to **Loyalty hub** > **Benefits**.
+
+From the **Benefits** view, you can:
+- View all existing benefits and their status
+- Open benefits to review their configuration
+- Search benefits using the search bar
+- Filter benefits using **Add filter**
+- Reload the benefits list using **Reload**
+- Create benefits using **+ Create benefit**
+- Activate, edit, or delete benefits using the **⋮** actions menu
+
+## Prerequisites for creating benefits
+
+Before creating a benefit, prepare the resources required for the selected benefit type.
+
+Depending on the benefit type, you may need:
+- A point wallet for point-based benefits.
+- Products or SKUs for material benefits.
+- Gift voucher or discount coupon campaigns for digital benefits.
+- Metadata schemas for metadata-based proportional points.
+- Custom event schemas for metadata values based on custom events.
+
+
+
+Some resources can be created directly from the builder using the **+** icon. SKUs, gift voucher campaigns, and discount coupon campaigns cannot be created from the benefit builder.
+
+
+
+## Create a benefit
+
+Benefits are configured in a multi-step builder.
+
+You can use **Save draft** and complete the configuration later.
+
+Go to **Loyalty hub** > **Benefits** and use **+ Create benefit**.
+
+
+
+
+
+ ### General settings
+
+ Configure the benefit name and stock.
+
+ Enter the benefit name in **Name benefit**.
+
+ By the default, the stock checkbox is set to **Unlimited stock**. Uncheck it and enter the **Stock limit**, which defines how many times the benefit can be issued.
+
+
+
+
+
+ ### Configuration
+
+ Select the benefit type and configure its details.
+
+ Supported benefit types:
+ - **Points**
+ - **Material**
+ - **Digital**
+
+
+
+
+
+ Use **Points** to create a point-based benefit.
+
+ In **Points configuration**, select how points are awarded.
+
+ #### Fixed points
+
+ Use **Fixed** to award the same number of points each time the benefit is applied.
+
+ You can create a new point wallet directly from the builder using the **+** icon.
+
+ Configure the following fields:
+ - **Point wallet**: Selects the point wallet that receives the points.
+ - **Point value**: Number of points awarded.
+
+ #### Proportional points
+
+ Use **Proportional** to calculate points from order values, item quantities, or metadata values.
+
+ Configure the following fields:
+ - **Calculation type**: Defines the value used to calculate points.
+ - **Card definition**: Selects the wallet that receives the points.
+ - **Points**: Number of points awarded for the selected value
+
+ Calculation methods are grouped by type.
+
+
+
+
+
+ Use order amount calculations to award points based on total order values.
+
+ Available order amount calculations:
+ - **Pre-discount order amount**: Uses the total order amount before discounts are applied. Configure **Points** and **Amount**.
+ - **Post-discount order amount**: Uses the total order amount after discounts are applied. Configure **Points** and **Amount**.
+
+
+
+
+
+ Use order item calculations to award points based on selected order items.
+
+ Use **Applicable to** to select products, SKUs, or product collections included in the calculation. You can create a new product or product collection directly from the builder using the **+** icon.
+
+ Available order item calculations:
+ - **Pre-discount order items amount**: Uses selected order item values before discounts are applied. Configure **Points**, **Amount**, and **Applicable to**.
+ - **Post-discount order items amount**: Uses selected order item values after discounts are applied. Configure **Points**, **Amount**, and **Applicable to**.
+ - **Order items quantity**: Uses the quantity of selected order items. Configure **Points**, **Amount**, and **Applicable to**.
+
+
+
+
+
+ Use metadata calculations to award points based on metadata values.
+
+ You can create a new metadata property directly from the builder using the **+** icon.
+
+ Available metadata calculations:
+ - **Customer metadata value**: Uses a selected customer metadata property. Configure **Points**, **Value**, and **Metadata property**.
+ - **Order metadata value**: Uses a selected order metadata property. Configure **Value** and **Metadata property**.
+ - **Custom event metadata value**: Uses a selected custom event metadata property. Configure **Value** and **Metadata property**.
+
+
+
+
+
+
+
+
+
+ Use **Material** to create a benefit based on a product or SKU.
+
+ In **Material configuration**, select the source item.
+
+ #### Product
+
+ Use **Product** to select one product as the benefit.
+
+ You can create a new product directly from the builder using the **+** icon.
+
+ #### SKU
+
+ Use **SKU** to select a specific product variant as the benefit.
+
+ SKUs cannot be created from the benefit builder.
+
+
+
+
+
+ Use **Digital** to create a benefit based on an existing voucher campaign.
+
+ In **Digital configuration**, select the voucher type.
+
+ #### Gift vouchers
+
+ Use **Gift voucher campaign** to select a gift voucher campaign.
+
+ In **Balance**, enter the credit balance added to the gift voucher.
+
+
+
+ The balance adds credits to the gift voucher. If a new gift voucher is issued as a benefit, the value in **Balance** will be added to the initial value of the gift voucher as defined in the gift card campaign.
+
+
+
+ #### Discount coupons
+
+ Use **Discount coupons** to select a discount coupon campaign.
+
+ The benefit will issue a voucher from the selected campaign.
+
+
+
+
+
+
+
+
+
+ ### Summary
+
+ Review the benefit configuration before saving.
+
+ The summary page displays all configured sections:
+ - **General settings**
+ - **Configuration**
+
+ Use **Go to step** to return to a selected section and make changes before saving the benefit.
+
+ After reviewing the configuration:
+ - Use **Save draft** to save the benefit without activating it.
+ - Use **Save** to create and activate the benefit.
+
+
+
+
+
+Once saved, the benefit is listed in **Benefits** in **Loyalty hub**.
+
+You can select it in the **Benefit** effect when configuring an **earning rule**.
diff --git a/documentation/build/create-earning-rules.mdx b/documentation/build/create-earning-rules.mdx
new file mode 100644
index 000000000..bc5a38448
--- /dev/null
+++ b/documentation/build/create-earning-rules.mdx
@@ -0,0 +1,481 @@
+---
+title: Create earning rules
+description: Create and manage rules that control how loyalty points are awarded
+keywords: ['earning rules', 'earning rule builder', 'loyalty earning rules', 'points earning', 'loyalty rules', 'earning conditions']
+tag: "NEW"
+---
+
+import MetaConfig from '/snippets/metadata-configuration.mdx'
+import Brackets from '/snippets/accordions/accordion-group-rules-and-brackets.mdx'
+
+Earning rules define when customers receive points for selected activities and transactions.
+
+
+
+Time-related settings in earning rule configuration use the time zone configured in **Project settings**. They are not calculated in UTC.
+
+
+
+Go to **Loyalty hub** > **Earning rules**.
+
+From the **Earning rules** view, you can:
+- View all existing earning rules and their status.
+- Open earning rules to review their configuration and **Activate** or **Deactivate** them.
+- Search earning rules with the search bar.
+- Filter earning rules with **Add filter**.
+- Create earning rules with **+ Create earning rule**.
+- Edit, change status, or delete earning rules with the contextual actions menu (`⋮`).
+
+## Create an earning rule
+
+Earning rules are configured in a multi-step builder. Some settings depend on each other. If something is missing or incompatible, the builder displays an **Action required** status.
+
+You can also use **Save draft** and complete the configuration later.
+
+Go to **Loyalty hub** > **Earning rules** and use **+ Create earning rule**.
+
+Enter the earning rule name in **Name earning rule**.
+
+
+
+
+
+### Trigger
+
+Define the event that activates the earning rule.
+
+Configure:
+- **Trigger event**: Selects the event that activates the rule.
+- **Custom error message**: Optional message displayed when the earning rule cannot be applied.
+
+Supported trigger events:
+- **Order paid**: Triggers the earning rule after an order is successfully paid.
+- **Custom event**: Triggers the earning rule when a selected custom event is sent to Voucherify.
+- **Segment entered**: Triggers the earning rule when a customer enters a selected segment.
+
+Additional configuration depends on the selected trigger event.
+
+
+
+
+
+No additional configuration is required.
+
+
+
+
+
+Select the event in **Custom event**.
+
+Use the search field to find existing custom events or use the **+** icon to create a new one directly from the builder.
+
+
+
+
+
+Select the segment in **Segment**.
+
+Use the search field to find existing segments or use the **+** icon to create a new one directly from the builder.
+
+
+
+
+
+
+
+
+
+### Earnings
+
+Define the conditions and effects used to award points.
+
+Use **+ Add earning** to create additional earning configurations within the same earning rule.
+
+Earning configurations are evaluated in the order they appear in the builder. **Earning #1** has the highest priority.
+
+If the customer does not match the first earning configuration, Voucherify checks the next one in order until an earning is fulfilled. If no earning is fulfilled, no points or benefits are awarded.
+
+Each earning configuration consists of the following steps.
+
+
+
+
+
+ Enter the earning name.
+
+
+
+
+
+ Use the **Tier** section to select which loyalty tiers the earning configuration applies to (optional). Members who don't belong to a selected loyalty tier won't earn points as defined in this earning.
+
+ You can select one or more tiers from different tier structures.
+
+
+
+
+
+ Use the **When** section to define conditions for the earning configuration (optional).
+
+ Use **Add rule** to create conditions and **Add brackets** to group multiple conditions into logical expressions.
+
+ Conditions are grouped by category.
+
+
+
+
+
+ Audience rules define customer-based conditions.
+
+ - **Customer segment**: Checks whether the customer belongs to a selected segment.
+
+
+
+
+
+ Product rules define conditions related to items in the order.
+
+ - **Any order item**: Checks whether at least one order item matches the condition.
+ - **Every order item**: Checks whether all order items match the condition.
+ - **None of the order items**: Checks whether no order items match the condition.
+ - **Most expensive of the order items**: Checks the most expensive item in the order.
+ - **Cheapest of the order items**: Checks the cheapest item in the order.
+
+
+
+
+
+ Price and quantity rules define conditions related to order values and quantities.
+
+ - **Total amount before discounts**: Checks the order value before discounts are applied.
+ - **Total amount after discounts**: Checks the order value after discounts are applied.
+ - **Initial amount**: Checks the original order amount.
+ - **Items quantity**: Checks the number of items in the order.
+ - **Price of each item**: Checks the price of every item in the order.
+ - **Price of any item**: Checks the price of at least one item in the order.
+
+
+
+
+
+ Customer metadata rules define conditions based on customer metadata values.
+
+ Available metadata keys depend on the customer metadata schema configured in your project.
+
+ Use **Add to schema** to create a new metadata key directly from the builder.
+
+
+
+
+
+ Order metadata rules define conditions based on order metadata values.
+
+ Available metadata keys depend on the order metadata schema configured in your project.
+
+ Use **Add to schema** to create a new metadata key directly from the builder.
+
+
+
+
+
+
+
+
+
+
+
+ Use the **Then** section to define the effects applied when the earning conditions are matched.
+
+ Each earning can contain multiple effects. Use **+ Add effect** to create additional effects within the same earning.
+
+ Choose one of the following effect types:
+ - **Fixed points**
+ - **Proportional points**
+ - **Incentive**
+
+
+
+
+
+ Award a fixed number of points to the selected wallet.
+
+ Configure the following fields:
+ - **Point wallet**: Selects the point wallet that receives the points.
+ - **Points**: Number of points awarded when the earning rule is triggered.
+
+ You can create a new wallet directly from the builder using the **+** icon.
+
+
+
+
+
+ Award points proportionally based on order values, quantities, or metadata values.
+
+ Configure the following fields:
+ - **Calculation type**: Defines how the proportional points are calculated.
+ - **Point wallet**: Selects the point wallet that receives the points.
+ - **Points**: Number of points awarded.
+
+ Calculation methods are grouped by type.
+
+
+
+ Use order amount calculations to award points based on total order values:
+ - **Pre-discount order amount**: Uses the total order amount before discounts are applied. Configure **Amount**.
+ - **Post-discount order amount**: Uses the total order amount after discounts are applied. Configure **Amount**.
+
+
+
+ Use order item calculations to award points based on selected order items:
+ - **Pre-discount order items amount**: Uses selected order item values before discounts are applied. Configure **Amount** and **Applicable to**.
+ - **Post-discount order items amount**: Uses selected order item values after discounts are applied. Configure **Amount** and **Applicable to**.
+ - **Order items quantity**: Uses the quantity of selected order items. Configure **Quantity** and **Applicable to**.
+
+ Use **Applicable to** to select products or product collections included in the calculation. You can select multiple products or collections.
+
+
+
+ Use metadata calculations to award points based on metadata values:
+ - **Customer metadata value**: Uses a selected customer metadata property. Configure **Value** and **Metadata property**.
+ - **Order metadata value**: Uses a selected order metadata property. Configure **Value** and **Metadata property**.
+
+ You can create a new metadata property directly from the builder using the **+** icon.
+
+
+
+ You can create a new wallet directly from the builder using the **+** icon.
+
+
+
+
+
+ Award incentives instead of loyalty points.
+
+ Configure the following field:
+ - **Incentive**: selects the incentive awarded when the earning rule is triggered.
+
+ You can create a new incentive directly from the builder using the **+** icon.
+
+
+
+
+
+
+
+
+
+
+
+
+
+### Trigger limits
+
+Define cooldown and frequency limits for triggering the earning rule.
+
+#### Cooldown
+
+Control how often the earning rule can be triggered for the same customer.
+
+Available options:
+- **No cooldown**: The earning rule can be triggered at any time.
+- **Fixed cooldown**: Limits how often the earning rule can be triggered for the same customer.
+
+When **Fixed cooldown** is selected, configure the following fields:
+- **Period**: Cooldown duration value.
+- **Period unit**: Cooldown duration unit.
+
+
+Supported period units:
+- **Hour**
+- **Day**
+- **Week**
+- **Month**
+- **Year**
+
+
+Maximum values depend on the selected period unit.
+
+#### Frequency
+
+Limit how many times the earning rule can be triggered within a selected time period.
+
+Available options:
+- **No limit**: No restriction on how often the earning rule can be triggered.
+- **Limited**: Limits the number of eligible triggers within a selected time period.
+
+When **Limited** is selected, configure the following fields:
+- **Max triggers**: Maximum number of allowed triggers. The maximum supported value is `10,000`.
+- **Period**: Time period used for the frequency limit.
+
+
+Supported period units:
+- **Day**
+- **Week**
+- **Month**
+- **Quarter**
+- **Year**
+
+
+
+
+
+
+### Timeframe
+
+Define when the earning rule becomes active and when it expires.
+
+
+
+Time-related settings in timeframe configuration use the time zone configured in project settings.
+
+
+
+#### Starts on
+
+Define when the earning rule becomes active.
+
+Available options:
+- **Creation**: The earning rule becomes active immediately after it is created.
+- **Specific date**: The earning rule becomes active at a selected date and time.
+
+When **Specific date** is selected, configure:
+- **Date**: Activation date.
+- **Time**: Activation time.
+
+#### Expiration
+
+Define when the earning rule expires.
+
+Available options:
+- **Never**: The earning rule does not expire.
+- **On specific date**: The earning rule expires at a selected date and time.
+
+When **On specific date** is selected, configure:
+- **Date**: Expiration date.
+- **Time**: Expiration time.
+
+#### Valid hours per day
+
+Limit when the earning rule can be triggered during the week.
+
+By default, the earning rule is applicable all days of the week, all day long.
+
+Use **+ Add valid hours per day** to limit when the earning rule can be triggered during the week.
+
+When configuring valid hours, define:
+- **Start time**: Beginning of the valid time range.
+- **Expiration time**: End of the valid time range.
+- **Days of the week**: Days when the earning rule is active within the selected time range.
+
+
+Available days:
+- Sunday
+- Monday
+- Tuesday
+- Wednesday
+- Thursday
+- Friday
+- Saturday
+
+
+
+You can configure multiple valid hour ranges can be configured.
+
+
+
+ Happy hours
+
+ You can use the **Days of the week** setting to set up a "happy hours" scenario, when members can earn more points.
+
+
+
+
+
+
+
+### Metadata
+
+
+
+
+
+
+
+### Summary
+
+Review the earning rule configuration before saving.
+
+The summary page displays all configured sections:
+- Trigger
+- Earnings
+- Trigger limits
+- Timeframe
+- Metadata
+
+Use **Go to step** to return to a selected section and make changes before saving the earning rule.
+
+After reviewing the configuration:
+- Use **Save draft** to save the earning rule without activating it
+- Use **Save** to create and activate the earning rule immediately
+
+
+
+
+
+## Manage earning rules in the loyalty designer
+
+Earning rules can be assigned and managed directly from the loyalty program designer.
+
+The **Earning rules** section displays all earning rules currently assigned to the program and all earning rules to the added point wallets.
+
+Earning rules award points to point wallets selected in the **Point wallet** field.
+
+You can assign only the earning rules that are either assigned to the point wallets used in the loyalty program or that award benefits (meaning earning rules that do not give points).
+
+To assign an earning rule from the loyalty designer:
+1. In the **Earning rules** section, select:
+ - The **+** button in the **Building blocks**,
+ - Or the **No earning rules assigned** field.
+2. In the assignment dialog:
+ - Select an existing earning rule from the list,
+ - Or select **+ Create new** to open the simplified earning rule builder.
+
+The simplified earning rule builder supports:
+- Defining the earning rule name
+- Selecting the trigger event
+- Configuring earning effects
+- Assigning point wallets
+- Multiple earning effects
+
+Select **Advanced options** to open the full earning rule builder with additional configuration options, including earning conditions and trigger limits.
+
+You can also assign earning rules from the **Building blocks** panel.
+
+Earning rules can be assigned regardless of their current status. Assigning or unassigning earning rules does not change whether the earning rule is active or inactive.
+
+Assigned earning rules can later be:
+- Edited from the loyalty designer workspace.
+- Unassigned from the loyalty program.
+- Deleted from the **Building blocks** panel once the earning rule is unassigned from the loyalty program.
+
+Deleting an earning rule removes it from all loyalty programs where it is currently assigned.
+
+Selecting the edit icon from the loyalty designer opens the full earning rule builder.
+
+## Related features
+
+
+
+
+
+Learn how to create and manage wallets used in earning rules through the **Point wallet** configuration.
+
+
+
+
+
+Learn how to configure loyalty programs and manage program building blocks.
+
+
+
+
\ No newline at end of file
diff --git a/documentation/build/create-loyalty-campaign.mdx b/documentation/build/create-loyalty-campaign.mdx
index 1b8210114..838b04a2d 100644
--- a/documentation/build/create-loyalty-campaign.mdx
+++ b/documentation/build/create-loyalty-campaign.mdx
@@ -2,6 +2,7 @@
title: "Create loyalty campaign"
description: "Learn how to create a loyalty campaign in the Campaign builder"
keywords: ['loyalty program', 'loyalty tiers', 'earn points', 'loyalty card', 'earning rule', 'pending points', 'distribution']
+tag: "Legacy"
---
import CampDetails from '/snippets/campaign-details.mdx'
@@ -18,6 +19,9 @@ import AccFraudPrevention from '/snippets/accordions/accordion-fraud-prevention.
import ValRule from '/snippets/callouts/note-validation-rule.mdx'
import NoteMetadata from '/snippets/callouts/note-metadata.mdx'
import CampaignDraft from '/snippets/callouts/tip-campaign-draft.mdx'
+import LegacyLoyalty from '/snippets/callouts/warning-legacy-loyalty.mdx'
+
+
The loyalty campaign builder guides you through the following steps to launch your program.
diff --git a/documentation/build/create-loyalty-program.mdx b/documentation/build/create-loyalty-program.mdx
new file mode 100644
index 000000000..9177bdfc2
--- /dev/null
+++ b/documentation/build/create-loyalty-program.mdx
@@ -0,0 +1,219 @@
+---
+title: Tutorial – Create a basic loyalty program
+description: Learn how to create a loyalty program with a point wallet and an earning rule
+keywords: ['loyalty program', 'loyalty points', 'point wallet', 'earning rule', 'loyalty designer']
+tag: "NEW"
+---
+
+
+
+Recommended reading
+
+See [an interactive demo](https://app.demoboost.com/playback/bFOPIzGc?step=2 "Voucherify loyalty program designer demo") of the loyalty program designer.
+
+Read [Key concepts](/build/loyalty-key-concepts) first to learn more about loyalty program components and how they work together.
+
+
+
+Create a basic loyalty program that awards points to customers after they pay for their orders. The program includes a point wallet, which defines how points behave, and an earning rule, which sets the conditions for awarding points. Once the program is ready, you can activate it and start enrolling customers as program members. Optionally, you can create a reward that customers can redeem for their earned points.
+
+To create your first loyalty program, go to **Loyalty hub** on the left sidebar and click **Programs**. This opens the **Programs** page which lists all your programs and where you can create a new program by clicking **+ Create program**.
+
+## Create the loyalty program
+
+A basic loyalty program requires at least one point wallet and one earning rule. Once they're added, the program is ready to be activated.
+
+
+
+
+
+Once you've clicked **+ Create program**, name your program and save the program draft.
+
+You'll be taken to the designer view where you can add your first building block.
+
+
+
+
+
+Create a point wallet that sets rules for how points will behave on loyalty cards assigned to program members.
+
+Create a point wallet as follows:
+1. In the **Point wallets** section, click the **+** button to create a new point wallet or add an existing one to the program. Optionally, click the **+** button in the **Building blocks** panel on the right.
+2. Click **Create new**.
+3. Enter a name in **Point wallet name**.
+4. Click **Save draft** to create the point wallet in a draft state.
+
+The point wallet is added to the program, but it's not active yet.
+
+In this scenario, it's not necessary to configure any additional settings, such as **Points expiration**, **Pending points**, **Earning limits**, or **Spending limits**.
+
+
+
+ Learn more about point wallets
+
+ Learn what point wallets are and how they work in the [Key concepts](/build/loyalty-key-concepts#point-wallet) page.
+
+ Go to the [Point wallet builder](/build/point-wallet-builder) page to learn more about how to configure point wallets and the advanced settings available.
+
+
+
+
+
+
+
+Create an earning rule that awards points for paid orders.
+
+Create an earning rule as follows:
+1. In the **Earning rules** section, click the **+** button to create a new earning rule or add an existing one to the program. Optionally, click the **+** button in the **Building blocks** panel on the right.
+2. Click **Create new**.
+3. Enter a name in **Earning rule name**.
+4. Select **Order paid** in **Trigger event**.
+5. In **Effect \#1**, leave **Fixed points** and the pre-selected point wallet you've created in the earlier step.
+6. Set **Points** to a desired number of points to award for each paid order. Default is **1** point.
+7. Click **Save draft** to create the earning rule in a draft state.
+
+The earning rule is added to the program, but it's not active yet.
+
+In this scenario, it's not necessary to configure any additional settings, such as secondary earnings, **Trigger limits**, or **Time frames**.
+
+
+
+ Learn more about earning rules
+
+ Learn what earning rules are and how they work in the [Key concepts](/build/loyalty-key-concepts#earning-rule) page.
+
+ Go to the [Earning rule builder](/build/loyalty-earning-rule) page to learn more about how to configure earning rules and the advanced settings available.
+
+
+
+
+
+
+
+Activate the loyalty program to enroll program members who can start earning points:
+1. Click **Review and launch** at the top of the screen.
+2. Review the activation recommendations. You will see 1 point wallet and 1 earning rule to activate.
+3. Select **Activate** next to the point wallet and earning rule.
+4. Click **Launch** to activate the program.
+
+
+
+ Once activated, you won't be able to add more point wallets or assign tier structures. However, you can still add new earning rules or rewards.
+
+
+
+
+The activation checklist shows recommended loyalty program components, such as wallets, earning rules, and rewards. Not all components are required to activate the program.
+
+
+
+
+
+
+Your loyalty program is now active. You can start enrolling program members and they can earn points through paid orders.
+
+## Enroll program members
+
+Once the program is active, go to **Details** at the top of the screen to **Create member**. The create member window opens:
+1. Select an existing Voucherify customer to be enrolled as a program member. You can also [create a new customer](/prepare/customers#create-a-customer-profile) by clicking the **+** button.
+2. Click **Save** to add the customer to the program.
+
+You can add new members only from existing Voucherify customers.
+
+Repeat the process to enroll more program members.
+
+Once a customer is enrolled, they:
+- Become a program member with a unique loyalty member ID.
+- Receive a loyalty card with a unique loyalty card ID.
+- Can start earning points by making paid orders.
+
+Click the member ID to view the member details. The member details page shows the member's loyalty card, point balance, and other relevant information.
+
+Click the loyalty card ID to view the loyalty card details. The loyalty card details page shows the loyalty card's status, lifetime point breakdown, and other relevant information.
+
+You can also view all **Loyalty memberships** of the customer in the customer details page.
+
+
+
+ Learn more about program members
+
+ Learn what program members are and how they work in the [Key concepts](/build/loyalty-key-concepts#loyalty-member) page.
+
+
+
+## Award points to program members
+
+To simulate how points are earned through paid orders, you can create a new order and assign it to the customer who is a program member.
+
+In the left sidebar, go to **Campaign hub** > **Orders** to **Create order**. The create order builder opens.
+
+
+
+
+
+ In the **Details** step, set the **Status** to **Paid**.
+
+
+ If you select any other status or leave it blank, the customer will not earn points.
+
+
+
+
+
+
+ In the **Items** step, enter any number in the **Total order amount** field.
+
+ Since the program awards points for each paid order, the specific order amount does not affect the points earned.
+
+
+
+
+
+ In the **Customer** step, select a customer who is an active program member.
+
+
+
+
+
+ Skip the **Referrer (optional)** and **Metadata (optional)** steps and go to the **Summary** step.
+
+ Save the order.
+
+
+
+
+
+ Go to **Loyalty hub** > **Programs** and click your program. Go to **Details**, click the member ID and you will see the points earned.
+
+ Click the loyalty card ID to view the loyalty card details. In the **Card transactions** tab, you can see the details of the particular transaction.
+
+
+
+
+
+## Optional: Create rewards
+
+You can also create rewards that customers can redeem with their earned points. Rewards cover digital rewards (like discount coupons, gift cards, or points on a loyalty card) and material rewards (products). In this tutorial, you will create a physical reward.
+
+Create a reward as follows:
+1. In the **Rewards** section, click the **+** button to create a new reward or add an existing one to the program. Optionally, click the **+** button in the **Building blocks** panel on the right.
+2. Click **Create new**.
+3. Enter a name in **Reward name**.
+4. Select **Material reward**.
+5. Select a product or SKU from the list. If your Voucherify account doesn't have products, click the **+** button to create a new product or SKU.
+6. In **Spending**, set the number of points required to redeem the reward in the **Point cost** field.
+7. Leave other fields as is and click **Save draft** to create the reward in a draft state.
+
+The reward is added to the program, but it's not active yet. You can activate the reward by clicking the **▶** button next to the reward name. You won't be able to edit its details like type, but you can still change its cost.
+
+In this scenario, it's not necessary to configure any additional settings, such as tier and other conditions, or time frames.
+
+
+
+ Learn more about rewards
+
+ Learn what rewards are and how they work in the [Key concepts](/build/loyalty-key-concepts#rewards) page.
+
+ Go to the [Reward builder](/build/loyalty-reward-builder) page to learn more about how to configure rewards and the advanced settings available.
+
+
diff --git a/documentation/build/create-loyalty-rewards.mdx b/documentation/build/create-loyalty-rewards.mdx
new file mode 100644
index 000000000..fac394efc
--- /dev/null
+++ b/documentation/build/create-loyalty-rewards.mdx
@@ -0,0 +1,440 @@
+---
+title: Create loyalty rewards
+description: Configure digital and material rewards for loyalty programs, define spendings, and manage rewards in the Loyalty hub
+keywords: ['rewards', 'loyalty rewards', 'reward builder', 'discount coupons', 'gift cards', 'material rewards', 'digital rewards', 'spendings', 'loyalty hub']
+tag: "NEW"
+---
+
+import MetaConfig from '/snippets/metadata-configuration.mdx'
+import Brackets from '/snippets/accordions/accordion-group-rules-and-brackets.mdx'
+
+
+
+ This page describes how to create rewards in the **Loyalty hub**. These rewards can be used only in loyalty programs. To create rewards for legacy loyalty campaigns and referral campaigns, read the [Create rewards](/optimize/create-rewards) page.
+
+
+
+Rewards are items that loyalty members redeem by spending points. You can offer discount coupons, gift cards, or physical products.
+
+Go to **Loyalty hub** > **Rewards** and click **Create reward**.
+
+## Rewards list
+
+The **Loyalty rewards** section lists all rewards created in your project. Each reward appears as a row with the following columns:
+
+- **Status**: Shows whether the reward is **Active**, **Inactive**, or **Draft**.
+- **Name**: The name of the reward.
+- **Type**: The reward type: **Digital** or **Material**.
+- **Reward**: The name of the resource connected to this reward, such as a campaign or product.
+- **Refundable**: Shows whether points spent on this reward can be returned after a refund: **Refundable** or **Non-refundable**.
+- **Created**: The date and time the reward was created.
+
+Use the search bar to find a reward by name. Use **Add filter** to narrow the list by **Loyalty reward attributes**.
+
+
+- **Name**: Filter by reward name.
+- **Type**: Filter by reward type.
+- **Creation date**: Filter by when the reward was created.
+
+
+## Create a reward
+
+
+
+ Prerequisite: Sources of rewards
+
+ Before creating a reward, prepare the resources required for the selected reward type.
+
+ Depending on the reward type, you may need:
+ - A discount campaign for discount coupon rewards.
+ - A gift cards campaign for gift card rewards.
+ - A point wallet for points on loyalty card rewards.
+ - A product or SKU for material rewards.
+
+
+
+Start by entering a name in the **Name reward** field. If a required field is missing or settings are incompatible, you will see an **Action required** message. You can also **Save draft** and finish the setup later.
+
+
+
+
+
+### Details
+
+Choose the reward type and configure the reward.
+
+
+
+
+
+Digital rewards issue a discount coupon or gift card to the member.
+
+Select the **Digital reward type**.
+
+
+
+
+
+Issues a discount coupon from an existing discount campaign. In **Discount campaign**, select the campaign to issue coupons from.
+
+
+
+
+
+Issues a gift card from an existing gift card campaign.
+
+- **Gift card campaign**: Select the campaign to issue gift cards from.
+- **Gift card balance**: Set the balance added to the initial amount of the gift card when issued.
+
+
+
+Set **Gift card balance** to `0` if you don't want to top up the card beyond its initial amount.
+
+For example, if the members can buy a gift card as a reward from a campaign which generates cards with \$100 credits, it's better to use `0`. If you set here `10`, the member will get a gift card reward with a \$110 credit.
+
+If you want to create a reward that only tops up the current gift card balance, set the desired value. For example, if you set `10` and the member has a gift card with \$46 balance currently, they can use the reward to buy additional credits with loyalty points and top the card up to \$56.
+
+
+
+
+
+
+
+Grants points directly to a loyalty card in a selected point wallet.
+
+- **Target point wallet**: Select the point wallet where points will be added.
+- **Points to grant**: Set how many points to add.
+
+
+
+This reward type works only with new loyalty programs. You can't set this reward for legacy loyalty campaigns.
+
+
+
+
+
+
+
+
+
+
+
+Material rewards represent a physical product or SKU that members can redeem.
+
+Use **Product or SKU** to search for an existing product by typing at least 3 characters.
+
+If the product doesn't exist yet, use **+** to **Add product**:
+- **Product name**: the name of the product (required).
+- **Source ID**: an optional external identifier for the product.
+- **Price**: the price of the product.
+- **Attributes**: optional product attributes.
+
+
+
+
+
+Select **Refundable** to allow points spent on this reward to be returned after a refund.
+
+
+
+
+
+### Spendings
+
+**Spending** defines how much a reward will cost in points, which point wallet will be used, as well as it determines other conditions. Spendings are evaluated top to bottom. If a member doesn't match the first spending configuration, Voucherify checks the next one in order until a spending is fulfilled. If no spending is fulfilled, the reward can't be redeemed.
+
+
+
+If a member's wallet doesn't have enough points, Voucherify doesn't automatically try another point wallet. Add another spending to cover that case.
+
+
+
+Use **+ Add spending** to create additional spending configurations. Drag spendings to change their priority. You can add up to 10 spendings.
+
+Each spending configuration consists of the following steps.
+
+
+
+
+ Enter an internal name to identify the spending configuration.
+
+
+
+
+
+ Use the **Tier** section to select which loyalty tiers the spending applies to (optional).
+
+ Leave the **Tiers** field blank to apply the spending to all loyalty members.
+
+
+
+
+
+ Use the **When** section to define conditions for the spending configuration (optional).
+
+ Use **Add rule** to create conditions and **Add brackets** to group multiple conditions into logical expressions.
+
+ Conditions are grouped by category.
+
+
+
+
+
+ Audience rules define member-based conditions:
+ - **Customer segment**: Checks whether the customer belongs to a selected segment.
+
+
+
+
+
+ Customer metadata rules define conditions based on customer metadata values.
+
+ Available metadata keys depend on the customer metadata schema configured in your project.
+
+ Use **Add to schema** to create a new metadata key directly from the builder.
+
+
+
+
+
+ Member metadata rules define conditions based on member metadata values.
+
+ Available metadata keys depend on the member metadata schema configured in your project.
+
+ Use **Add to schema** to create a new metadata key directly from the builder.
+
+
+
+
+
+
+
+
+
+
+
+ Use the **Then redeem from** section to define which point wallet is used and how many points the redemption costs.
+
+ Configure the following fields:
+ - **Point wallet**: Selects the point wallet from which points are deducted when the reward is redeemed.
+ - **Points cost**: The number of points required to redeem this reward.
+
+
+
+ If you want the reward to be redeemed with different point values from various point wallets in one loyalty program, add another spending.
+
+
+
+
+
+ A reward can be redeemed from point wallets that belong to one loyalty program. If you configure point wallets that belong to different loyalty programs, you won't be able to assign the reward to a program.
+
+ Also, if you assign the reward to a loyalty program, you won't be able to configure spendings with point wallets from other programs.
+
+
+
+
+
+
+
+
+
+
+
+### Timeframe
+
+Define when the reward can be redeemed and when it is no longer available.
+
+
+
+Time-related settings in timeframe configuration use the time zone configured in [Project settings](/manage/project-settings).
+
+
+
+#### Starts on
+
+Define when the reward becomes active.
+
+Available options:
+- **Creation**: The reward becomes active immediately after it is created.
+- **Specific date**: The reward becomes active at a selected date and time.
+
+When **Specific date** is selected, configure:
+- **Date**: Activation date.
+- **Time**: Activation time.
+
+#### Expires
+
+Define when the reward stops being active, so it becomes unavailable for redemption.
+
+Available options:
+- **Never**: The reward doesn't expire and it's always available.
+- **On specific date**: The reward expires at a selected date and time. It is no longer available after this date.
+
+When **On specific date** is selected, configure:
+- **Date**: Expiration date.
+- **Time**: Expiration time.
+
+#### Valid hours per day
+
+By default the reward is available for redemption throughout all days of the week, all day long.
+
+Use **+ Add valid hours per day** to limit when the reward can be redeemed during the week.
+
+When configuring valid hours, define:
+- **Start time**: Beginning of the valid time range.
+- **Expiration time**: End of the valid time range.
+- **Days of the week**: Days when the reward is active within the selected time range.
+
+
+Available days:
+- Sunday
+- Monday
+- Tuesday
+- Wednesday
+- Thursday
+- Friday
+- Saturday
+
+
+You can configure multiple valid hour ranges.
+
+
+
+ Happy hours
+
+ You can use the **Days of the week** setting to set up a "happy hours" scenario, when members can redeem the reward for a lower point price.
+
+
+
+
+
+
+
+### Metadata
+
+
+
+
+
+
+
+### Summary
+
+Review the reward configuration before saving.
+
+The summary page displays all configured sections:
+- Details
+- Spendings
+- Timeframe
+- Metadata
+
+Use **Go to step** to return to a selected section and make changes before saving the reward.
+
+After reviewing the configuration:
+- Use **Save draft** to save the reward without activating it.
+- Use **Save and activate** to create and activate the reward.
+
+
+
+
+
+Once saved, the reward is created. It is listed in the **Rewards** section in **Loyalty hub** in the **Draft** or **Active** state.
+
+## Rewards in the loyalty designer
+
+You can create, assign, and manage rewards directly from the loyalty program designer.
+
+### Rewards section
+
+The **Rewards** section in the designer displays all rewards currently assigned to the program.
+
+Each reward card shows:
+- Reward name and status
+- Reward type and configuration
+- Refundable status
+- Stock (starting number of available items)
+- Connected point wallet and point cost
+
+Use the edit icon to open the reward configuration. Use the unassign icon to remove the reward from the program.
+
+Use the search icon to find rewards by name within the assigned rewards.
+
+Use **+** in the **Rewards** section header to assign an existing reward or create a new one. Creating a new reward opens a simplified builder where you can configure:
+- Reward name
+- Reward type and digital reward type
+- Connected campaign
+- Refundable status
+- Spending: point wallet and point cost
+- Stock
+
+Select **Advanced options** to open the full reward builder with all configuration options, including spendings with conditions, time frame, and metadata.
+
+### Building blocks panel
+
+The **Building blocks** panel lists all rewards available in the loyalty program. The available rewards are the rewards that have spendings that use the point wallets assigned to the program.
+
+In the **Rewards** section of the panel, you can:
+- Browse all rewards and their status.
+- Search rewards by name using the search field.
+- Filter rewards by assignment status using the **All**, **Not assigned**, and **Assigned** tabs.
+- Assign or unassign a reward using the link icon.
+- Create a new reward using the **+** icon.
+- Edit a reward using the edit icon.
+- Delete a reward using the delete icon.
+
+Creating a new reward using **+** opens the same simplified builder available in the **Rewards** section. Select **Advanced options** to open the full reward builder.
+
+### Reward assignment
+
+Use the **Quick assign** button to assign the reward to the loyalty program.
+
+The reward builder window will open, where you can edit the reward.
+
+Define the stock limit, which determines:
+- **Unlimited stock** (default): There is an unlimited number of rewards that members can redeem.
+- **Stock limit**: Members can redeem the defined number of rewards. Once depleted, members can't redeem more rewards.
+
+## Loyalty reward maintenance
+
+In the **Loyalty rewards** list view, use the **three-dot menu** (⋮) on any reward to:
+- **Activate** or **Deactivate** the reward: The available action depends on the current status.
+- **Assign to program**: Connect the reward to a loyalty program.
+- **Edit**: Open the reward configuration.
+- **Delete**: Remove the reward permanently.
+
+Select a reward to open its detail view. The detail view contains four tabs:
+- **Dashboard**: Shows the reward configuration details and the loyalty programs the reward is assigned to, along with their stock.
+- **Spendings**: Shows the spendings configured for the reward.
+- **Activity**: Shows a log of events related to the reward, including event name, event ID, group ID, description, and timestamp.
+- **Metadata**: Shows the metadata configured for the reward.
+
+Use the edit icon or **Activate**/**Deactivate** button in the detail view header to edit or change the status of the reward.
+
+## Related features
+
+Rewards can be combined with the following features to build more advanced loyalty program flows.
+
+
+
+
+
+Rewards are connected to point wallets through spendings. Learn how to create and manage [point wallets](/build/point-wallet-builder) used in reward spendings.
+
+
+
+
+
+Learn how to configure [earning rules](/build/loyalty-earning-rule) that define when members earn points they can later spend on rewards.
+
+
+
+
+
+Assign rewards directly to loyalty programs in the [program Designer](/build/create-loyalty-campaign-v2).
+
+The same reward can be reused across multiple programs.
+
+
+
+
diff --git a/documentation/build/create-point-wallets.mdx b/documentation/build/create-point-wallets.mdx
new file mode 100644
index 000000000..e1fa7abe4
--- /dev/null
+++ b/documentation/build/create-point-wallets.mdx
@@ -0,0 +1,481 @@
+---
+title: Create point wallets
+description: Configure and manage point wallets
+keywords: ['point wallet', 'wallet builder', 'pending points', 'point expiration', 'pay with points', 'earning limits', 'spending limits']
+tag: "NEW"
+---
+
+import MetaConfig from '/snippets/metadata-configuration.mdx'
+
+Point wallets control how points are earned, stored, spent, and expire. Point wallets work like a card definition or a set of rules for loyalty cards that are generated and then assigned to loyalty program members.
+
+Go to **Loyalty hub** > **Point wallets** to **Create point wallet**.
+
+You can also create a point wallet in the loyalty program **Designer** when creating a new loyalty program.
+
+## Create a point wallet
+
+Some settings depend on each other. If something is incompatible, you will see an Action required message.
+
+You can also **Save draft** and finish the point wallet setup later.
+
+
+
+
+
+### General settings
+
+Define the basic behavior of the point wallet:
+- **Type**:
+ - **Individual**: Points are assigned to individual members.
+ - **Team** (feature not released yet): Points are assigned to one card that's shared by several members.
+- **Allow card balance to go below zero**: Members' point balance can go below zero.
+
+
+
+This setting affects refunds and points expiration. Some options, such as revoking points below zero or expiration rules, depend on it.
+
+
+
+
+
+
+
+### Code config
+
+Define how point wallet-related codes are generated:
+- **Charset**: Choose a predefined set, for example alphanumeric, or define your own.
+- **Code length**: Defines how many random characters the code contains.
+- **Pattern**: Create a custom structure using placeholders.
+- **#**: Replace with a random character from the selected charset. Overrides the code length.
+- **Prefix** and **Postfix**: Optional values added at the beginning or end of the code.
+
+**Code preview** shows an example of a generated code.
+
+The number of possible unique codes depends on the selected charset and code length.
+
+
+
+
+
+### Points expiration
+
+Define when points expire.
+
+
+
+
+
+Points never expire. No additional setup is required.
+
+
+
+
+
+Points expire after a defined period from when they are earned.
+
+- **Expiration period**: how long points stay valid after earning.
+- **Period unit**: day (max 90), month (max 12), year (max 5).
+- **Expiration rounding**: round the expiration to the nearest period. Possible settings – **No rounding**, **End of month**, **End of quarter**, **End of half-year**, **End of year**, **End of particular month**.
+
+
+
+
+
+Points expire on selected dates each year.
+
+Select **Month** and **Day of the month** to **Add date**.
+
+Add at least one date. You can define up to 20 expiration dates.
+
+
+
+
+
+Points expire after a period of inactivity.
+
+- **Inactivity period**: How long points remain valid without activity.
+- **Period unit**: Day (max 90), month (max 12), year (max 1).
+
+Activity types:
+- **Earning activity**: Resets the inactivity timer when customers earn points.
+- **Spending activity**: Resets the inactivity timer when customers spend points.
+- **Custom activity**: Resets the inactivity timer based on selected custom events. You can add up to 20 custom events.
+
+Select at least one activity type. Only the selected activities reset the inactivity timer.
+
+
+
+
+
+
+
+Points expiration is available only when **Allow card balance to go below zero** is disabled. If negative balance is enabled, only **No expiration – points never expire** is available.
+
+Time-related settings in point wallet configuration use the time zone configured in **Project settings**.
+
+
+
+
+
+
+
+### Pending points
+
+Define when earned points become available.
+
+Pending points can't be spent until they're activated. Activation moves points from pending to the active balance.
+
+
+
+
+
+
+Points activate immediately after earning.
+
+If pending points are set to **Immediate**, you cannot use **From pending** in **Refunds → Earned points refunds**, because points are activated right away. Choose a different pending points type if you need to revoke points before activation.
+
+
+
+
+
+Points activate after a defined time from when they are earned.
+
+- **Waiting period**: How long points remain pending before activation.
+- **Period unit**: Day (max 90), month (max 12), year (max 1).
+
+
+
+
+
+Points activate on selected calendar dates.
+
+Select **Month** and **Day of the month** to **Add date**.
+
+Add at least one date. You can define up to 20 activation dates.
+
+
+
+
+
+Points remain pending after selected events occur and activate after the defined cancellation period passes.
+
+- **Cancellation period**: Defines how long points remain pending before the points are cancelled if the custom event hasn't been triggered.
+- **Period unit**: Day (max 90), month (max 12), year (max 1).
+
+Select **Custom event** and use **Add activity** to define which custom events trigger point activation.
+
+Add at least one custom event. You can define up to 20 custom events.
+
+
+
+
+
+
+
+
+
+### Earning limits
+
+Control how customers earn points.
+
+Both **Global earning limit** and **Transactions earning limit** can apply at the same time, and the more restrictive condition applies.
+
+
+
+
+
+Defines the overall limit on points a member can earn.
+
+- **No limit**: Members can earn an unlimited number of points.
+
+- **Limited**: Members can earn points only within the configured limits.
+
+ When **Limited** is selected, configure the limit type:
+
+ - **Balance-based**: Limits the maximum number of points a member can earn in total during the program lifetime.
+
+ **Max balance**: Defines the maximum active point balance a member can reach. Once reached, the member won't be able to earn more points.
+
+ - **Time-based**: Limits how many points a member can earn within a selected time period.
+
+ **Period unit**: Defines the earning period (day, week, month, quarter, year). The period is a calendar period, so for **week** it's between Monday and Sunday, depending on locale settings.
+
+ **Max points per period**: Defines the maximum number of points a member can earn during the selected period. Once reached, the member won't be able to earn more points during that period.
+
+
+
+
+
+Defines how many points can be earned in a transaction.
+
+- **No limit**: Members can earn an unlimited number of points in one transaction.
+
+- **Limited**: Members can't earn more than the configured transaction limits.
+
+ When **Limited** is selected, configure:
+
+ - **Max points earned per transaction**: Defines the maximum number of points a member can earn in a single transaction. Once reached, the member won't be able to earn more points in that transaction.
+
+ - **Min amount spent per transaction**: Defines the minimum transaction amount required to earn points.
+
+
+
+
+
+
+
+
+
+### Spending limits
+
+Control how customers spend points.
+
+Both **Global spending limit** and **Transactions spending limit** can apply at the same time, and the more restrictive condition applies.
+
+
+
+
+
+Defines the overall limit on how many points a member can spend.
+
+- **No limit**: Members can spend an unlimited number of points.
+
+- **Limited**: Members can spend points only within the configured limits.
+
+ When **Limited** is selected, configure the limit type:
+
+ - **Spending-based**: Limits the total number of points a member can spend across all transactions.
+
+ **Max lifetime spending**: Defines the maximum total number of points a member can spend. Once reached, the member won't be able to spend more points.
+
+ - **Time-based**: Limits how many points a member can spend within a selected time period.
+
+ **Period unit**: Defines the spending period (day, week, month, quarter, year). The period is a calendar period, so for **week** it's between Monday and Sunday, depending on locale settings.
+
+ **Max points per period**: Defines the maximum number of points a member can spend during the selected period. Once reached, the member won't be able to spend more points during that period.
+
+
+
+
+
+Defines how many points can be spent in a single transaction.
+
+- **No limit**: Members can spend an unlimited number of points in a single transaction.
+
+- **Limited**: Members can spend points only within the configured transaction limit.
+
+ When **Limited** is selected, configure:
+
+ - **Max points to spend per transaction**: Defines the maximum number of points a member can spend in a single transaction.
+
+
+
+
+
+
+
+
+
+### Pay with points
+
+Configure how customers can use points to pay for orders.
+
+**Enable pay with points** to allow payments using points.
+
+When enabled, define the conversion formula:
+
+- **Amount unit**: Fixed base unit (1 minor currency unit, for example 1 cent). This value cannot be edited.
+- **Points needed**: Number of points required to pay for that unit.
+
+The formula result defines how many points are needed to pay for 1 amount unit.
+
+For example, `111` means 111 points pay for 1 unit (for example, 1 cent in USD).
+
+You can:
+- Enter a formula manually
+- Use **Build formula** to create it using the formula builder
+- Reuse an existing expression in **Expression output**
+
+Use numeric values or functions such as `ORDER_METADATA("property")` to create dynamic conversion rules.
+
+
+
+
+
+### Return policy
+
+Control how refunds affect points.
+
+**Point refunds** and **Point deduction** are applied separately.
+
+
+
+
+
+Defines whether points used in a transaction are returned after a refund.
+- **Non-refundable**: Spent points are not returned.
+- **Refundable**: Spent points can be returned after a refund.
+
+When **Refundable** is selected, configure the refund type:
+- **Refund all**: Returns all spent points.
+- **Refund by item**: Returns points related only to refunded items (not supported yet).
+- **Refund by amount**: Returns points proportionally to the refunded amount (not supported yet).
+
+
+
+
+
+Defines whether points earned from a transaction are kept or revoked after a refund.
+
+- **Keep points**: Earned points remain unchanged after the refund.
+- **Deduct points**: Earned points are removed after the refund.
+
+When **Deduct points** is selected, configure the deduction source:
+
+- **Active balance**: Revokes points from the active balance.
+- **Pending points**: Revokes points only from pending points.
+
+When **Active balance** is selected, configure the deduction limit:
+
+- **Prevent negative**: Points are revoked until the balance reaches zero.
+- **Allow negative**: Points are revoked even if the balance becomes negative.
+
+
+
+Allowing negative balance requires enabling **Allow card balance to go below zero**. If this setting is disabled, **Allow negative** is not available. Revoking from pending requires **Pending points** not set to **Immediate**.
+
+
+
+
+
+
+
+
+
+
+
+### Metadata
+
+
+
+
+
+
+
+### Summary
+
+Review your configuration before saving.
+
+If everything is valid, **Save** becomes available.
+
+If something is incompatible, you will see **Action required**. **Go to step** to return to any section and make changes.
+
+You can also **Save draft** of the point wallet and return to the configuration later.
+
+
+
+
+
+Once saved, the point wallet is created in an active state and can be used in loyalty programs.
+
+
+
+ Save and activate point wallet
+
+ Saving a point wallet makes it ready to use. However, you won't be able to edit the point wallet configuration with the exception of metadata and pay with points.
+
+
+
+If you use **Save draft**, the point wallet is saved in draft status and can be completed later.
+
+## Point wallets in loyalty programs
+
+You can create and manage point wallets directly while working on a loyalty program in the **Designer**.
+
+### Create a point wallet in a loyalty program
+
+
+
+ Prerequisite: Loyalty program draft
+
+ You can create or add point wallets only to a loyalty program that's in a draft state.
+
+
+
+In the **Programs**, open a loyalty program. In the **Building blocks** panel, use **+** next to **Point wallets**.
+
+This opens the same point wallet builder used in the **Point wallets** section.
+
+The point wallet is created while you are working inside a program. You can assign it to the program immediately. The point wallet is still saved globally and can be reused.
+
+### Use point wallets in a program
+
+In the program **Designer**, you can assign and manage point wallets directly in the program view.
+
+In the **Building blocks** panel, you can:
+- View all available point wallets and their status
+- Assign a point wallet to the program
+- Create a new point wallet using **+**
+- Open a point wallet to view its full configuration and manage its status
+
+In the **Point wallets** section, you can:
+- View point wallets assigned to the program
+- Edit or unassign a point wallet
+- Assign an existing point wallet or create a new one
+- Assign a tier structure to a point wallet
+
+
+
+ Point wallets are global objects, so assigning them to a program does not create a copy. Changes to a point wallet apply everywhere it is used. Unassigning a point wallet removes it from the program but does not delete it.
+
+
+
+## Managing point wallets
+
+Go to **Loyalty hub** > **Point wallets**.
+
+After you create a point wallet, it appears in the **Point wallets** section.
+
+Use the **three-dot menu (⋮)** to:
+- Activate or deactivate a point wallet
+- Edit the point wallet
+- Delete the point wallet
+
+Active point wallets can be used in loyalty programs.
+
+Deactivated point wallets remain available but cannot be used until reactivated.
+
+Click on a point wallet to check its configuration details.
+
+## Related features
+
+Point wallets can be combined with the following features to build more advanced loyalty program flows.
+
+
+
+
+
+You can use [custom events](/prepare/custom-events#custom-events) to trigger Voucherify logic based on events defined in your integration.
+
+Custom events can be used for segmentation, validation rules, distributions, loyalty automation, and selected event-based configurations.
+
+
+
+
+
+Point wallets can be assigned directly to loyalty programs in the [program Designer](/build/create-loyalty-campaign-v2).
+
+The same point wallet can be reused across multiple programs.
+
+
+
+
+
+You can assign a [tier structure](/build/create-tier-structures) to a point wallet from the program view.
+
+Tier structures can be used together with point wallets to build tier-based loyalty programs.
+
+
+
+
\ No newline at end of file
diff --git a/documentation/build/create-tier-structures.mdx b/documentation/build/create-tier-structures.mdx
new file mode 100644
index 000000000..d6e41bfdc
--- /dev/null
+++ b/documentation/build/create-tier-structures.mdx
@@ -0,0 +1,323 @@
+---
+title: Create tier structures
+description: Set up rules that group customers based on their loyalty activity
+keywords: ['tier structures', 'loyalty tiers', 'tier levels', 'tier builder', 'tier configuration']
+tag: "NEW"
+---
+
+import MetadataConfig from '/snippets/metadata-configuration.mdx'
+
+Tier structures control how you assign customers to tiers and how their tier status changes over time.
+
+## Create a tier structure
+
+Go to **Loyalty hub** > **Tier structures** and select **Create tier structure**.
+
+The tier structure builder informs which steps require your action.
+
+
+
+
+
+### General settings
+
+Set the basic behavior of the tier structure.
+
+**Name tier structure**: enter a name for the structure.
+
+
+
+
+
+Uses the customer's current point balance on their loyalty card to determine tier assignment.
+
+
+
+
+
+Uses the total points earned over a tracking period to determine tier assignment.
+
+When to apply tier change:
+- **Immediately**: Updates when the threshold is reached.
+- **Next tracking period**: Updates at the start of the next cycle.
+
+**Tracking period value**: Length of the tracking period.
+
+**Period unit**: Day(s), Week(s), Month(s), Year(s). The units are defined by the Project settings (time zone and locale).
+
+
+
+
+
+**Point wallet**: Select the point wallet used to calculate tiers.
+
+
+
+ Tying a tier structure to a point wallet that is already active makes the tier structure take effect immediately.
+
+ A loyalty program can only have one tier structure assigned to it.
+
+
+
+Complete all required fields. If something is missing or invalid, you will see **Action required**.
+
+
+
+
+
+### Tier levels point-base
+
+Configure tier levels based on the point balance.
+
+This tier level path is optional. Set it up only if you want tiers based purely on point balance. At least one tier must exist across the two tier-level paths (point-based or segment-based) before you can proceed. Any path you configure must cover points 0 to ∞ without gaps or overlaps.
+
+
+Tier levels are shared with the segment-based path. Both count toward the same 10-tier limit. Each tier you create only appears in the path it was created under. A tier added here won't appear in **Tier levels segment-base**, and vice versa.
+
+
+
+
+If tier ranges leave any points uncovered or overlap, you'll see an **Action required** message. For example, if a middle tier is left with no maximum: "A middle tier has no maximum — only the highest tier can be unlimited."
+
+
+
+
+Use **+ Add tier levels** to add a tier.
+
+For each tier, define:
+- **Tier name**: Label of the tier (for example Bronze, Silver, Gold).
+- **Minimum value (points)**: Points required to reach this tier. When you add a new tier, this is automatically set to one point higher than the previous tier's **Maximum value (points)**. You can adjust it manually, though.
+- **Maximum value (points)**: Upper limit of points for this tier. Leave this field empty to make the tier **Unlimited**. This is only allowed for the highest tier; leaving it empty on any other tier triggers the **Action required** mentioned above.
+- **Allow tier downgrade for this level**: Enabled by default. Uncheck to create a VIP tier where members keep their level forever.
+
+The tier's points range is calculated automatically from its Minimum and Maximum values and shown in the tier's header.
+
+Each tier also has its own **Metadata** section, where you can define custom key/type/value properties, either by adding an unknown property directly or by adding it to the schema.
+
+
+
+
+
+### Tier levels segment-base
+
+Configure tier levels that also require a [customer segment](/prepare/customer-segments), a group of customers who share a selected attribute or behavior.
+
+This path is optional. Set it up only if you want segment-gated tiers. At least one tier must exist across the two tier-level paths (point-based or segment-based) before you can proceed. Any path you configure must cover points 0 to ∞ without gaps or overlaps.
+
+Tier levels are shared with the point-based path. Both count toward the same 10-tier limit, and each tier you create only appears in the path it was created under. A tier added here won't appear in **Tier levels point-base**, and vice versa.
+
+
+
+
+If tier ranges leave any points uncovered or overlap, you'll see an **Action required** message. For example, if a middle tier is left with no maximum: "A middle tier has no maximum — only the highest tier can be unlimited."
+
+
+
+
+Use **+ Add tier levels** to add a tier.
+
+For each tier, define:
+- **Tier name**: Label of the tier (for example Bronze, Silver, Gold)
+- **Minimum value (points)**: Points required to reach this tier. When you add a new tier, this is automatically set to one point higher than the previous tier's **Maximum value (points)**. You can adjust it manually, though.
+- **Maximum value (points)**: Upper limit of points for this tier. Leave this field empty to make the tier **Unlimited**. This is only allowed for the highest tier; leaving it empty on any other tier triggers the **Action required** mentioned above.
+- **Customer segment**: Required for every tier in this path. The customer must meet both the points range and belong to the selected segment (**AND** logic; there's no **OR** option here). You can select different segments for each tier.
+- **Allow tier downgrade for this level**: Enabled by default. Uncheck to create a VIP tier where members keep their level forever.
+
+The tier's points range is calculated automatically from its Minimum and Maximum values and shown in the tier's header.
+
+Each tier also has its own **Metadata** section, where you can define custom key/type/value properties, either by adding an unknown property directly or by adding it to the schema.
+
+
+
+
+
+### Tier expiration
+
+Choose how a tier expires.
+
+
+
+
+
+Tier ends instantly when member criteria changes.
+
+
+
+
+
+Tier is valid for a set number of days from entry:
+- **Duration**: Number of periods the tier stays valid.
+- **Period unit**: Day(s), Month(s), Year(s).
+
+
+
+The **Fixed duration** is set to 30 days in a **Point balance**-based tier structure. A member earns 150 points and reaches the Silver tier on 20 July. On 25 July, the member then spends their points and falls to the Bronze tier. Then, the **Fixed duration** setting starts counting 30 days from 20 July (the day when the member reached the Silver tier) and the tier will expire on right on midnight 00:00 of the 20 August.
+
+
+
+
+
+
+
+Tier expires on a set date each year:
+- **Expiry date (MM-DD)**: Pick a day and month from the calendar. This field is required. You can pick up to 20 expiry dates.
+
+
+
+
+
+
+
+ Currently unsupported.
+
+ Follow [Voucherify release notes](/changelog/changelog) for latest updates.
+
+
+
+Expires the tier if no qualifying action occurs within a set number of days.
+
+
+
+
+
+### Tier downgrade configuration
+
+Choose how tier levels are reassessed when a member no longer qualifies.
+
+
+
+
+
+Members keep their current tier when expiration triggers or they no longer qualify for the current tier. This means that members never move to a lower tier.
+
+
+
+
+
+Customer is moved to the highest eligible tier based on their current performance.
+
+When you select **Multi-level downgrade**, you can enable **Grace period before downgrade**, a waiting period after disqualification before the downgrade is enforced. When enabled, set:
+- **Grace period**: Length of the delay.
+- **Unit**: Day(s), Month(s), Year(s).
+- **Round up grace period**: Rounds the delay to the end of the selected unit (unchecked by default).
+
+
+
+The **Multi-level downgrade** is set in a **Point balance**-based tier structure. A member earns 250 points and reaches the Gold tier on 20 July. On 25 July, the member spends 200 points, so their balance is 50 points, which is in the range of the Bronze tier. The member will be downgraded to the Bronze tier immediately.
+
+However, if there's a grace period of one month, the member will not be downgraded to the Bronze tier until for one month after the expiration date (19 August, 23:59:59). If the grace period is rounded up to the end of the month, the member will not be downgraded to the Bronze tier until 31 August, 23:59:59.
+
+
+
+
+
+
+
+A customer can only be downgraded one tier at a time during each evaluation.
+
+When you select **Single-level downgrade**, you can enable **Grace period before downgrade**, a waiting period after disqualification before the downgrade is enforced. When enabled, set:
+- **Grace period**: Length of the delay.
+- **Unit**: Day(s), Month(s), Year(s).
+- **Round up grace period**: Rounds the delay to the end of the selected unit (unchecked by default).
+
+
+
+
+
+
+
+ Expiration and downgrade are configured independently. Expiration controls when tier levels are re-evaluated. Downgrade controls how members move to a lower tier after expiration.
+
+
+
+
+
+
+
+### Metadata
+
+
+
+
+
+
+
+### Summary
+
+Review your configuration before saving.
+
+The summary lists a card for each step, showing condensed details of your configuration. Use **Go to step** on any card to return to that section and make changes.
+
+**Save draft** and **Save and activate** both become available only once there's no outstanding **Action required** anywhere in the configuration. **Save draft** saves the structure without activating it. **Save and activate** saves it and activates it immediately. Once activated, you can't edit the tier structure and its tiers with the exception of name and metadata.
+
+
+
+
+
+The tier structure is now created and can be used in a loyalty program.
+
+## Tier structures view
+
+The **Tier structures** view lists all configurations created in your project.
+
+Each structure appears with its status and key settings.
+
+### Overview
+
+This list shows key details of each tier structure.
+
+- **Status**: **Draft** (not yet activated) or **Active**.
+- **Name**: Name of the tier structure.
+- **Type**: The tier type configured in **General settings**.
+- **Point wallet**: The wallet the structure is linked to.
+- **Expiration**: The expiration model configured in **Tier expiration**, shown as a short label (for example **Calendar** for Calendar Expiry), or a dash if none is set.
+- **Downgrade**: The downgrade behavior configured in **Tier downgrade configuration**, or a dash if none is set.
+- **Tier levels**: Number of defined tiers, or a dash if none are configured.
+- **Loyalty programs**: Programs where the structure is assigned, or a dash if none.
+
+Use **Edit** or **Delete** from the ⋮ menu on any row to manage a structure.
+
+### Structure details
+
+Select a structure name to open its details panel.
+
+The panel header shows the structure's ID, creation date, and status, along with **Edit** and close controls. If the structure is in **Draft** status, an **Activate** button also appears; activating it makes it available to be assigned to a point wallet, and if that point wallet is already active, tier assignments can start applying immediately.
+
+
+
+ Once a structure is **Active**, it cannot be deactivated in the UI or through the API.
+
+
+
+The panel has three tabs:
+- **Dashboard**: Summary cards for **General settings**, **Tier levels**, and **Tier expiration** (which also includes the downgrade configuration).
+- **Activity**: A log of events for the structure, such as its creation and tier creation events.
+- **Metadata**: The structure's metadata, shown as raw JSON.
+
+
+Dashboard cards shown: General settings, Tier levels, Tier expiration (includes downgrade).
+
+
+## Using tier structures in programs
+
+Assign a tier structure to a point wallet from within the program Designer.
+
+### Adding a tier structure
+
+Each point wallet card shows a **No tier structure assigned** placeholder if none is set. Selecting it opens a search field where you can pick an existing tier structure or select **+ Create new** to create one on the spot.
+
+You can assign only one tier structure per program. If another point wallet in the same program already has one assigned, you'll see a message telling you to unassign it there first.
+
+### How it appears in the program
+
+Once assigned, the point wallet card shows the structure's name, status, a condensed summary (type, expiration, downgrade, and tier level count), and its configured tiers.
+
+### Removing a tier structure
+
+Select **Unassign from program** next to the assigned structure on the wallet card. This only removes the assignment; to delete the tier structure itself, go to the **Tier structures** overview list.
+
+
+
+ Once a tier structure is assigned to an active point wallet in an active loyalty program, it cannot be unassigned.
+
+
diff --git a/documentation/build/earning-rules.mdx b/documentation/build/earning-rules.mdx
index 316bc8a45..eb987742b 100644
--- a/documentation/build/earning-rules.mdx
+++ b/documentation/build/earning-rules.mdx
@@ -2,8 +2,13 @@
title: "Earning rules"
description: "Learn about earning rules, their types, limits, and configuration parameters in Voucherify"
keywords: ['loyalty earning rules', 'gaining loyalty points', 'how to earn points', 'earning points']
+tag: "Legacy"
---
+import LegacyLoyalty from '/snippets/callouts/warning-legacy-loyalty.mdx'
+
+
+
## Earning rule configuration steps in detail
You configure an earning rule in four steps. Each step defines key and optional settings that specify how a rule works and its scope.
diff --git a/documentation/build/loyalty-campaign-overview.mdx b/documentation/build/loyalty-campaign-overview.mdx
index 87166b265..14a513e60 100644
--- a/documentation/build/loyalty-campaign-overview.mdx
+++ b/documentation/build/loyalty-campaign-overview.mdx
@@ -2,8 +2,13 @@
title: "Loyalty campaign overview"
description: "Understand the core concepts and workflow of building loyalty programs in Voucherify"
keywords: ['loyalty overview', 'general info about loyalty', 'how does loyalty work', 'how loyalty works']
+tag: "Legacy"
---
+import LegacyLoyalty from '/snippets/callouts/warning-legacy-loyalty.mdx'
+
+
+
Loyalty programs allow customers to store points on digital cards. Customers accumulate these points by meeting specific program earning rules.
Beyond managing loyalty cards and earning rules, Voucherify provides a rewards catalog and an omnichannel notifications system to provide a fully gamified experience.
diff --git a/documentation/build/loyalty-card-import.mdx b/documentation/build/loyalty-card-import.mdx
index c5100b980..b1adcb16a 100644
--- a/documentation/build/loyalty-card-import.mdx
+++ b/documentation/build/loyalty-card-import.mdx
@@ -2,12 +2,14 @@
title: "Loyalty card import"
description: "Learn how to import loyalty cards to Voucherify"
keywords: ['loyalty card', 'import', 'CSV', 'loyalty points']
+tag: "Legacy"
---
import VoucherImport from '/snippets/voucher-import.mdx'
import CodeImportLimit from '/snippets/code-import-limit.mdx'
import CodeImportCallout from '/snippets/code-import-callout.mdx'
import MetadataImport from '/snippets/metadata-import.mdx'
+import LegacyLoyalty from '/snippets/callouts/warning-legacy-loyalty.mdx'
export const DownloadLink = ({ url, filename, children }) => {
const handleDownload = async (e) => {
@@ -35,6 +37,8 @@ export const DownloadLink = ({ url, filename, children }) => {
);
};
+
+
If you need to migrate loyalty cards from another system, you can use the **Import CSV tool** in the Dashboard.
The tool enables you to:
diff --git a/documentation/build/loyalty-key-concepts.mdx b/documentation/build/loyalty-key-concepts.mdx
new file mode 100644
index 000000000..65fd04a6e
--- /dev/null
+++ b/documentation/build/loyalty-key-concepts.mdx
@@ -0,0 +1,255 @@
+---
+title: Loyalty key concepts
+description: Standard terms and relationships used across Loyalty Hub documentation
+keywords: ['loyalty', 'loyalty hub', 'loyalty program', 'points', 'wallets', 'earning rules', 'tiers', 'rewards']
+tag: "NEW"
+---
+
+This article explains how the main loyalty concepts work together.
+
+Use these concepts to define:
+- What customer actions you reward
+- How points are stored and managed
+- What customers can receive or redeem
+
+For a high-level introduction to the new loyalty program model, its rollout roadmap, and how it differs from existing loyalty campaigns, see [Loyalty program overview](/build/loyalty-overview).
+
+## Loyalty Hub
+
+**Loyalty hub** is the module where you build and manage loyalty programs.
+
+Use **Loyalty hub** to:
+- Create loyalty programs
+- Configure how customers earn points
+- Define how points behave
+- Connect point wallets, earning rules, rewards, tiers, and benefits
+
+## Loyalty program
+
+A loyalty program is a configured loyalty setup.
+
+To run a points-based loyalty program, you need:
+- Point wallet
+- Earning rules
+
+A loyalty program can also include:
+- Rewards
+- Tier structures
+- Benefits
+
+A single loyalty program can include multiple point wallets.
+
+## Loyalty member
+
+A loyalty member is a Voucherify customer enrolled in a loyalty program.
+
+Loyalty membership is program-specific. The same customer can be a member of multiple loyalty programs.
+
+## Designer
+
+The Designer is where you configure and connect the building blocks of a loyalty program.
+
+You use the Designer to combine:
+- Earning rules
+- Point wallets
+- Tier structures
+- Rewards
+- Benefits
+
+## Program building blocks
+
+The main building blocks define how customers earn, store, spend, and redeem points.
+
+### Point wallet
+
+A point wallet manages how points work on member loyalty cards.
+
+It controls how points are stored, activated, expired, earned, spent, refunded, and used for order payments or reward redemption.
+
+A loyalty program can include up to 10 point wallets, which lets you run different point balances or point currencies inside one program.
+
+
+
+ Currently, point wallets support only an individual membership model.
+
+ We plan to support different two additional membership models:
+ - Household wallets: Support private point pooling by several members.
+ - Team wallets: Support public group participation.
+
+ For household and team wallets, earning and spending limits will be tracked at the member level.
+
+
+
+
+
+
+
+Pending points define when earned points become available to a loyalty member.
+
+Points can be available immediately, after a defined period, on fixed activation dates, or after a selected activation event.
+
+
+
+
+
+Point expiration defines how long points remain valid.
+
+You can configure no expiration, expiration after a rolling period, expiration on specific calendar dates, or expiration after inactivity.
+
+
+
+
+
+Earning limits control how many points a loyalty member can collect.
+
+You can define global limits for a period of time or per-transaction limits for a single transaction.
+
+
+
+
+
+Spending limits control how many points a loyalty member can use.
+
+You can define global limits for a period of time or per-transaction limits for a single transaction.
+
+
+
+
+
+Refunds define what happens to points when an order is refunded or canceled.
+
+Refund settings can remove points earned from a refunded transaction or return points spent on a refunded transaction. Partial refund handling by item or amount is not supported yet and is listed on the Loyalty v2 roadmap.
+
+
+
+
+
+Pay with points lets loyalty members use points to pay for orders.
+
+When enabled, members can pay with points based on an exchange ratio formula.
+
+
+
+
+
+### Earning rule
+
+An earning rule defines when customers receive points or another configured result for their actions.
+
+Each earning rule includes a trigger, optional conditions, and one or more effects. An earning rule can include multiple earnings applied sequentially — Voucherify applies the first matching earning configuration.
+
+
+
+
+
+A trigger defines when an earning rule runs:
+- **Order paid** — triggers the earning rule after an order is successfully paid.
+- **Custom event** — triggers the earning rule when a selected custom event is sent to Voucherify.
+- **Segment entered** — triggers the earning rule when a member enters a selected segment.
+
+
+
+
+
+The "Tier" condition defines that an earning rule applies when the member belongs to a specific loyalty tier.
+
+For example, the earning will trigger if the member belongs to the gold tier.
+
+
+
+
+
+The "when" condition defines when an earning rule applies.
+
+For example, a rule can apply only when an order meets specific criteria.
+
+
+
+
+
+Effects define what happens when an earning rule runs.
+
+For example, an effect can add points to a point wallet or issue a benefit.
+
+
+
+
+
+Earnings define the conditions and effects for earning points.
+
+For example, an earning can grant fixed points, proportional points, or a benefit.
+
+
+
+
+
+Earning frequency controls how often an earning rule can run through cooldown and frequency settings.
+
+You can configure the rule to run every time the trigger occurs or only within defined limits or time periods.
+
+
+
+
+
+### Tier structure
+
+A tier structure groups loyalty members into levels within a point wallet.
+
+You can base tiers on criteria such as current point balance or total points earned. Tier structures can control qualification rules, expiration, grace periods, downgrade behavior, and tier-specific behavior.
+
+Currently, a loyalty program can include one tier structure. Tier mappings let you adjust selected program rules for members in a specific tier.
+
+Tier structures are optional.
+
+
+
+
+
+A tier is a level in a loyalty program, for example Bronze, Silver, or Gold.
+
+
+
+
+
+Tier expiration defines how long a loyalty member keeps a tier.
+
+
+
+
+
+Tier downgrade happens when a loyalty member no longer meets tier requirements.
+
+
+
+
+
+### Benefits
+
+A benefit is value granted automatically when the defined conditions of an earning rule are met. For example, instead of earning points on a loyalty card, members can receive gift credits, discount coupons, or products.
+
+Members do not need to redeem benefits manually; they receive a benefit once they fulfill the earning rule conditions.
+
+Benefits are optional.
+
+### Rewards
+
+A reward is what loyalty members redeem using points.
+
+Reward types include digital rewards and material rewards. Digital rewards can issue discount coupons or gift cards, while material rewards represent physical products or SKUs.
+
+Rewards use spendings, which define when members can redeem the reward, which point wallet is used, and how many points the reward costs. One reward can be connected to multiple point wallets with different prices.
+
+Rewards are optional.
+
+## How it works
+
+A simplified loyalty flow looks like this:
+
+
+
+1. A customer performs an action.
+2. An earning rule is triggered.
+3. Voucherify checks conditions and applies the first matching earning configuration.
+4. The earning rule applies effects, for example adding points or issuing benefits.
+5. Points are stored and managed in a point wallet, which governs pending points, expiration, limits, refunds, and spending.
+6. The loyalty member can qualify for tiers by earning points, use points to redeem rewards, or pay for orders with points.
diff --git a/documentation/build/loyalty-overview.mdx b/documentation/build/loyalty-overview.mdx
new file mode 100644
index 000000000..f4b5750dc
--- /dev/null
+++ b/documentation/build/loyalty-overview.mdx
@@ -0,0 +1,159 @@
+---
+title: Loyalty program overview
+description: Understand the new loyalty program model and how its components work together.
+keywords: ['loyalty programs', 'loyalty hub', 'point wallets', 'earning rules', 'benefits', 'rewards', 'tiers']
+tag: "NEW"
+---
+
+The new loyalty program model defines how members earn, keep, and spend points through modular components. This new model introduces also the completely new `v2/loyalties` API. In the dashboard, you manage the loyalty model in a new section called **Loyalty hub**.
+
+
+
+For definitions of the individual components — point wallets, earning rules, tier structures, benefits, and rewards — see [Loyalty key concepts](/build/loyalty-key-concepts).
+
+
+
+## New loyalty: Roadmap
+
+The new loyalty program model – loyalty v2 – is rolled out over several phases.
+
+
+
+
+ You're here!
+
+ Loyalty v2 is enabled for everyone. New organizations and the existing organizations which don't use the legacy loyalty can use only the new loyalty solution.
+
+ The Loyalty v2 API is available for production integrations during the initial phase. Voucherify avoids breaking changes to published contracts whenever possible. Some endpoint pages may still be marked as "work in progress documentation". Voucherify may still improve the API and the **Loyalty hub** UI. Follow the [release notes](/changelog/changelog) and contact your Technical Account Manager for change notifications that affect your integration.
+
+ If you use or used the legacy loyalty, you can still continue to do so. However, Voucherify team will contact you with the details regarding future migration to the new solution.
+
+
+
+ Legacy loyalty maintenance
+
+ The legacy loyalty will be eventually sunset. As a result, it's not going to be further developed. Only critical issues will be fixed.
+
+
+
+
+
+
+
+ We continue to add new features and API endpoints to the new loyalty solution. Also, the developers improve the overall loyalty v2 and fix the issues found.
+
+ Planned features:
+ - Additional customization for each tier level and guardrails.
+ - Partial refund handling.
+ - Support for household cards.
+ - Advanced analytics.
+
+ The roadmap is not final and is subject to change.
+
+
+
+
+
+ If you use the legacy loyalty, you'll have to prepare for the migration to the new loyalty solution. You'll need to recreate your integration of the loyalty system to use the new API.
+
+
+
+ Migration from existing loyalty campaigns is not currently automated.
+
+ Members, points, rewards, and campaign configuration from existing loyalty campaigns cannot currently be moved automatically to new loyalty programs. Voucherify is investigating migration support, but organizations should expect integration changes.
+
+
+
+
+
+
+
+ Once everyone migrates to the new loyalty solution, the legacy loyalty is turned off.
+
+ The new loyalty solution becomes the only loyalty system in Voucherify.
+
+
+
+
+
+
+
+ Visit [Voucherify roadmap](https://voucherify.atlassian.net/jira/discovery/share/views/4fe91d57-02f9-4cbf-a10d-baa28417ee9c "Voucherify roadmap") to see the latest updates and planned features for the new loyalty solution.
+
+
+
+
+## What changes in loyalty
+
+The greatest change in the new loyalty program model is structural. It separates program setup into reusable components, headed by the support of multiple point wallets.
+
+In existing loyalty campaigns, most settings belong to one campaign. This makes each campaign more isolated. If you need a similar setup in another campaign, you often need to configure it again. Also, the members can earn points only on one card that's governed by the campaign settings.
+
+In the new model, you connect components inside a loyalty program. This helps you reuse configuration, manage more complex setups, and create programs with many point wallets. Your loyalty program members can earn points on different loyalty cards whose behavior is defined by separate point wallets.
+
+## How components work together
+
+A loyalty program connects all components — point wallets, earning rules, rewards, tier structures, and benefits — into one customer experience. For definitions of each component, see [Loyalty key concepts](/build/loyalty-key-concepts).
+
+A simplified structure looks like this:
+- The loyalty program contains the full setup.
+- Point wallets store and manage points the members earn on their loyalty cards.
+- Earning rules decide when members earn points or benefits.
+- Rewards define what members can redeem.
+- Tier structures group members into levels.
+- Benefits grant points, material objects, or digital incentives automatically.
+
+This structure makes loyalty programs more flexible. Instead of building every rule directly inside one campaign, you create components and connect them where they are needed.
+
+For example, one program can use multiple point wallets. One reward can have different prices in different wallets. One tier can change earning limits or reward prices for members who qualify for it.
+
+For the simplified end-to-end flow of how points move through a program, see [How it works](/build/loyalty-key-concepts#how-it-works) in Loyalty key concepts.
+
+## Differences from existing loyalty campaigns
+
+The new loyalty program model expands what marketers can build compared with existing loyalty campaigns.
+
+Existing loyalty campaigns are more isolated. They use one point balance and keep most configuration inside one campaign. New loyalty programs use reusable components, multiple point wallets, wallet-specific reward prices, and more advanced tier behavior.
+
+Additionally, the new loyalty program model improves security and fraud prevention. For example, it offers guardrails like point spending and earning limits, earning rule trigger limits, reward purchase limits, and more.
+
+| Area | Existing loyalty campaigns | New loyalty programs |
+| --- | --- | --- |
+| Program structure | Most configuration belongs to one campaign | Configuration is separated into reusable components |
+| Point wallets | One point balance per campaign | Multiple point wallets in one program |
+| Earning logic | Multiple earning rules but each with one earning configuration | Multiple earning rules with multiple earning configurations, with the first matching configuration applied |
+| Rewards | One reward price | One reward can be connected to multiple point wallets with different prices |
+| Tiers | One tier structure in one campaign | One tier structure in one program for one point wallet, with tier mappings for selected rules |
+| Households and teams | Not supported | Household and team wallets are planned to support shared earning models |
+
+Detailed configuration options are covered in the dedicated feature articles.
+
+## Program limits
+
+Program limits define how large one loyalty program can be.
+
+Current limits:
+- Up to 10 point wallets in one loyalty program
+- Up to 100 rewards in one loyalty program
+- Up to 100 earning rules in one loyalty program
+- One tier structure in one loyalty program
+- Up to 10 tier levels in one tier structure
+- Up to 100,000 members in one loyalty program
+
+These limits help you decide when to keep configuration in one program and when a separate program may be needed.
+
+## Why use the new loyalty program model
+
+The new model is useful when a program needs more flexibility than one point balance and one isolated campaign setup:
+- Reusable configuration: Create components once and connect them where they are needed.
+- Multiple point wallets: Manage different point balances or point currencies in one program.
+- More control over points: Configure pending periods, expiration, earning limits, spending limits, refunds, and pay with points.
+- Tier-specific behavior: Use tier mappings to adjust selected rules for different member levels.
+- Larger program structures: Build complex loyalty setups without creating separate isolated campaigns for every variation.
+- Improved experience: The new loyalty program model will be developed, while the legacy loyalty will be eventually sunset and only critical issues will be fixed.
+
+## Support and feedback
+
+We are continuously developing the new loyalty solution.
+
+If you need additional support, you miss a feature, or you want to share your feedback, please reach out! Contact [Voucherify support](https://www.voucherify.io/contact-support "Contact Voucherify support form") or your Technical Account Manager.
diff --git a/documentation/build/loyalty-points.mdx b/documentation/build/loyalty-points.mdx
index 3686db5c3..6fdcc9179 100644
--- a/documentation/build/loyalty-points.mdx
+++ b/documentation/build/loyalty-points.mdx
@@ -2,8 +2,13 @@
title: "Loyalty points"
description: "Comprehensive guide to loyalty points mechanics"
keywords: ['pending points', 'auto-redeem', 'automatic redemption', 'expiration rules', 'loyalty point expiration', 'loyalty point calculation', 'add loyalty points', 'remove loyalty points',]
+tag: "Legacy"
---
+import LegacyLoyalty from '/snippets/callouts/warning-legacy-loyalty.mdx'
+
+
+
Loyalty points work like a currency in your loyalty program. Customers earn points on their dedicated loyalty card. Points are awarded based on predefined **earning rules** and can be redeemed for **rewards** defined by **redemption rules**.
## Loyalty point expiration rules
diff --git a/documentation/build/loyalty-tiers.mdx b/documentation/build/loyalty-tiers.mdx
index 782ad4b37..491692b5c 100644
--- a/documentation/build/loyalty-tiers.mdx
+++ b/documentation/build/loyalty-tiers.mdx
@@ -1,8 +1,13 @@
---
title: "Loyalty tiers"
description: "Learn how loyalty tiers work in Voucherify"
+tag: "Legacy"
---
+import LegacyLoyalty from '/snippets/callouts/warning-legacy-loyalty.mdx'
+
+
+
Loyalty tiers are optional membership levels within your loyalty program.
diff --git a/documentation/docs.json b/documentation/docs.json
index 55d677ca1..d7f4b0918 100644
--- a/documentation/docs.json
+++ b/documentation/docs.json
@@ -35,7 +35,7 @@
"timestamp": true
},
"banner": {
- "content": "Vincent is here! Just say the word, and Vincent will build the campaigns for you! [Get early access](https://www.voucherify.io/vincent).",
+ "content": "Explore loyalty v2: New dashboard and API! [See what's in it](/build/loyalty-overview).",
"dismissible": true
},
"navigation": {
@@ -75,7 +75,16 @@
"guides/data-synchronization",
"guides/sdks",
"guides/security",
- "guides/limits"
+ "guides/limits",
+ "guides/transfer-loyalty-points"
+ ]
+ },
+ {
+ "group": "Incentivize",
+ "public": true,
+ "pages": [
+ "guides/loyalty-v2-integrate",
+ "guides/loyalty-v2-take-to-production"
]
},
{
@@ -84,7 +93,6 @@
"pages": [
"guides/checking-eligibility",
"guides/locking-validation-session",
- "guides/transfer-loyalty-points",
"guides/csv-export",
"guides/import-codes"
]
@@ -246,13 +254,27 @@
{
"group": "Loyalty programs",
"public": true,
- "root": "build/loyalty-campaign-overview",
+ "root": "build/loyalty-overview",
"pages": [
- "build/create-loyalty-campaign",
- "build/earning-rules",
- "build/loyalty-points",
- "build/loyalty-tiers",
- "build/loyalty-card-import"
+ "build/loyalty-key-concepts",
+ "build/create-loyalty-program",
+ "build/create-point-wallets",
+ "build/create-tier-structures",
+ "build/create-earning-rules",
+ "build/create-benefits",
+ "build/create-loyalty-rewards",
+ {
+ "group": "Legacy loyalty",
+ "public": true,
+ "root": "build/loyalty-campaign-overview",
+ "pages": [
+ "build/create-loyalty-campaign",
+ "build/earning-rules",
+ "build/loyalty-points",
+ "build/loyalty-tiers",
+ "build/loyalty-card-import"
+ ]
+ }
]
},
{
@@ -359,153 +381,6 @@
}
]
},
- {
- "tab": "Loyalty v2",
- "hidden": true,
- "searchable": true,
- "groups": [
- {
- "group": "Loyalty v2",
- "openapi": "/openapi/loyalties-v2.json",
- "hidden": true,
- "searchable": true,
- "pages": [
- {
- "group": "Card Definitions",
- "pages": [
- "GET /v2/loyalties/card-definitions",
- "POST /v2/loyalties/card-definitions",
- "GET /v2/loyalties/card-definitions/{cardDefinitionId}",
- "PUT /v2/loyalties/card-definitions/{cardDefinitionId}",
- "DELETE /v2/loyalties/card-definitions/{cardDefinitionId}",
- "POST /v2/loyalties/card-definitions/{cardDefinitionId}/activate",
- "POST /v2/loyalties/card-definitions/{cardDefinitionId}/draft",
- "GET /v2/loyalties/card-definitions/{cardDefinitionId}/activities"
- ]
- },
- {
- "group": "Programs",
- "pages": [
- "GET /v2/loyalties/programs",
- "POST /v2/loyalties/programs",
- "GET /v2/loyalties/programs/{programId}",
- "PUT /v2/loyalties/programs/{programId}",
- "DELETE /v2/loyalties/programs/{programId}",
- "POST /v2/loyalties/programs/{programId}/activate",
- "POST /v2/loyalties/programs/{programId}/deactivate",
- "GET /v2/loyalties/programs/{programId}/activities",
- "GET /v2/loyalties/programs/{programId}/card-definitions",
- "POST /v2/loyalties/programs/{programId}/card-definitions/batch",
- "GET /v2/loyalties/programs/{programId}/earning-rules",
- "POST /v2/loyalties/programs/{programId}/earning-rules/batch",
- "GET /v2/loyalties/programs/{programId}/tier-structures",
- "POST /v2/loyalties/programs/{programId}/tier-structures/batch",
- "GET /v2/loyalties/programs/{programId}/rewards",
- "POST /v2/loyalties/programs/{programId}/rewards/batch",
- "PUT /v2/loyalties/programs/{programId}/rewards/{rewardId}",
- "POST /v2/loyalties/programs/{programId}/rewards/purchases/{rewardTransactionId}/refund",
- "GET /v2/loyalties/programs/{programId}/reports/spending/daily",
- "GET /v2/loyalties/programs/{programId}/reports/spending/summary"
- ]
- },
- {
- "group": "Members",
- "pages": [
- "GET /v2/loyalties/programs/{programId}/members",
- "POST /v2/loyalties/programs/{programId}/members",
- "POST /v2/loyalties/programs/{programId}/members/batch",
- "GET /v2/loyalties/programs/{programId}/members/{memberId}",
- "DELETE /v2/loyalties/programs/{programId}/members/{memberId}",
- "POST /v2/loyalties/programs/{programId}/members/{memberId}/activate",
- "POST /v2/loyalties/programs/{programId}/members/{memberId}/deactivate",
- "GET /v2/loyalties/programs/{programId}/members/{memberId}/activities",
- "POST /v2/loyalties/programs/{programId}/members/{memberId}/cards/{cardId}/points",
- "GET /v2/loyalties/programs/{programId}/members/{memberId}/cards/{cardId}/activities",
- "GET /v2/loyalties/programs/{programId}/members/{memberId}/cards/{cardId}/pending-points",
- "POST /v2/loyalties/programs/{programId}/members/{memberId}/cards/{cardId}/pending-points/{bucketId}/activate",
- "POST /v2/loyalties/programs/{programId}/members/{memberId}/cards/{cardId}/pending-points/{bucketId}/cancel",
- "GET /v2/loyalties/programs/{programId}/members/{memberId}/cards/{cardId}/expiring-points",
- "POST /v2/loyalties/programs/{programId}/members/{memberId}/cards/{cardId}/expiring-points/{bucketId}/expire",
- "GET /v2/loyalties/programs/{programId}/members/{memberId}/cards/{cardId}/transactions",
- "GET /v2/loyalties/programs/{programId}/members/{memberId}/rewards/purchases",
- "POST /v2/loyalties/programs/{programId}/members/{memberId}/rewards/purchases",
- "GET /v2/loyalties/programs/{programId}/members/{memberId}/orders/payments",
- "POST /v2/loyalties/programs/{programId}/members/{memberId}/orders/payments",
- "GET /v2/loyalties/programs/{programId}/members/{memberId}/benefits/transactions",
- "GET /v2/loyalties/programs/{programId}/members/{memberId}/tiers/transactions",
- "GET /v2/loyalties/programs/{programId}/members/{memberId}/cards/{cardId}/reports/daily"
- ]
- },
- {
- "group": "Examine",
- "pages": [
- "POST /v2/loyalties/examine/earning-rules",
- "POST /v2/loyalties/examine/rewards"
- ]
- },
- {
- "group": "Earning Rules",
- "pages": [
- "GET /v2/loyalties/earning-rules",
- "POST /v2/loyalties/earning-rules",
- "GET /v2/loyalties/earning-rules/{earningRuleId}",
- "PUT /v2/loyalties/earning-rules/{earningRuleId}",
- "DELETE /v2/loyalties/earning-rules/{earningRuleId}",
- "POST /v2/loyalties/earning-rules/{earningRuleId}/activate",
- "POST /v2/loyalties/earning-rules/{earningRuleId}/deactivate",
- "POST /v2/loyalties/earning-rules/{earningRuleId}/draft",
- "GET /v2/loyalties/earning-rules/{earningRuleId}/activities"
- ]
- },
- {
- "group": "Tier Structures",
- "pages": [
- "GET /v2/loyalties/tier-structures",
- "POST /v2/loyalties/tier-structures",
- "GET /v2/loyalties/tier-structures/{tierStructureId}",
- "PUT /v2/loyalties/tier-structures/{tierStructureId}",
- "DELETE /v2/loyalties/tier-structures/{tierStructureId}",
- "POST /v2/loyalties/tier-structures/{tierStructureId}/activate",
- "POST /v2/loyalties/tier-structures/{tierStructureId}/deactivate",
- "POST /v2/loyalties/tier-structures/{tierStructureId}/draft",
- "GET /v2/loyalties/tier-structures/{tierStructureId}/tiers",
- "POST /v2/loyalties/tier-structures/{tierStructureId}/tiers",
- "PUT /v2/loyalties/tier-structures/{tierStructureId}/tiers/{tierId}",
- "DELETE /v2/loyalties/tier-structures/{tierStructureId}/tiers/{tierId}",
- "GET /v2/loyalties/tier-structures/{tierStructureId}/activities"
- ]
- },
- {
- "group": "Benefits",
- "pages": [
- "GET /v2/loyalties/benefits",
- "POST /v2/loyalties/benefits",
- "GET /v2/loyalties/benefits/{benefitId}",
- "PUT /v2/loyalties/benefits/{benefitId}",
- "DELETE /v2/loyalties/benefits/{benefitId}",
- "POST /v2/loyalties/benefits/{benefitId}/activate",
- "POST /v2/loyalties/benefits/{benefitId}/draft",
- "GET /v2/loyalties/benefits/{benefitId}/activities"
- ]
- },
- {
- "group": "Rewards",
- "pages": [
- "GET /v2/loyalties/rewards",
- "POST /v2/loyalties/rewards",
- "GET /v2/loyalties/rewards/{rewardId}",
- "PUT /v2/loyalties/rewards/{rewardId}",
- "DELETE /v2/loyalties/rewards/{rewardId}",
- "POST /v2/loyalties/rewards/{rewardId}/activate",
- "POST /v2/loyalties/rewards/{rewardId}/deactivate",
- "POST /v2/loyalties/rewards/{rewardId}/draft",
- "GET /v2/loyalties/rewards/{rewardId}/activities"
- ]
- }
- ]
- }
- ]
- },
{
"tab": "API reference",
"groups": [
@@ -658,6 +533,146 @@
"POST /v1/templates/campaigns/{campaignTemplateId}/tier-setup"
]
},
+ {
+ "group": "Loyalty v2",
+ "public": true,
+ "openapi": "/openapi/loyalties-v2.json",
+ "pages": [
+ {
+ "group": "Card Definitions",
+ "pages": [
+ "GET /v2/loyalties/card-definitions",
+ "POST /v2/loyalties/card-definitions",
+ "GET /v2/loyalties/card-definitions/{cardDefinitionId}",
+ "PUT /v2/loyalties/card-definitions/{cardDefinitionId}",
+ "DELETE /v2/loyalties/card-definitions/{cardDefinitionId}",
+ "POST /v2/loyalties/card-definitions/{cardDefinitionId}/activate",
+ "POST /v2/loyalties/card-definitions/{cardDefinitionId}/draft",
+ "GET /v2/loyalties/card-definitions/{cardDefinitionId}/activities"
+ ]
+ },
+ {
+ "group": "Programs",
+ "pages": [
+ "GET /v2/loyalties/programs",
+ "POST /v2/loyalties/programs",
+ "GET /v2/loyalties/programs/{programId}",
+ "PUT /v2/loyalties/programs/{programId}",
+ "DELETE /v2/loyalties/programs/{programId}",
+ "POST /v2/loyalties/programs/{programId}/activate",
+ "POST /v2/loyalties/programs/{programId}/deactivate",
+ "GET /v2/loyalties/programs/{programId}/activities",
+ "GET /v2/loyalties/programs/{programId}/card-definitions",
+ "POST /v2/loyalties/programs/{programId}/card-definitions/batch",
+ "GET /v2/loyalties/programs/{programId}/earning-rules",
+ "POST /v2/loyalties/programs/{programId}/earning-rules/batch",
+ "GET /v2/loyalties/programs/{programId}/tier-structures",
+ "POST /v2/loyalties/programs/{programId}/tier-structures/batch",
+ "GET /v2/loyalties/programs/{programId}/rewards",
+ "POST /v2/loyalties/programs/{programId}/rewards/batch",
+ "PUT /v2/loyalties/programs/{programId}/rewards/{rewardId}",
+ "POST /v2/loyalties/programs/{programId}/rewards/purchases/{rewardTransactionId}/refund",
+ "GET /v2/loyalties/programs/{programId}/reports/spending/daily",
+ "GET /v2/loyalties/programs/{programId}/reports/spending/summary"
+ ]
+ },
+ {
+ "group": "Members",
+ "pages": [
+ "GET /v2/loyalties/programs/{programId}/members",
+ "POST /v2/loyalties/programs/{programId}/members",
+ "POST /v2/loyalties/programs/{programId}/members/batch",
+ "GET /v2/loyalties/programs/{programId}/members/{memberId}",
+ "GET /v2/loyalties/programs/{programId}/memberships/{customerId}",
+ "DELETE /v2/loyalties/programs/{programId}/members/{memberId}",
+ "POST /v2/loyalties/programs/{programId}/members/{memberId}/activate",
+ "POST /v2/loyalties/programs/{programId}/members/{memberId}/deactivate",
+ "GET /v2/loyalties/programs/{programId}/members/{memberId}/activities",
+ "POST /v2/loyalties/programs/{programId}/members/{memberId}/cards/{cardId}/points",
+ "GET /v2/loyalties/programs/{programId}/members/{memberId}/cards/{cardId}/activities",
+ "GET /v2/loyalties/programs/{programId}/members/{memberId}/cards/{cardId}/pending-points",
+ "POST /v2/loyalties/programs/{programId}/members/{memberId}/cards/{cardId}/pending-points/{bucketId}/activate",
+ "POST /v2/loyalties/programs/{programId}/members/{memberId}/cards/{cardId}/pending-points/{bucketId}/cancel",
+ "GET /v2/loyalties/programs/{programId}/members/{memberId}/cards/{cardId}/expiring-points",
+ "POST /v2/loyalties/programs/{programId}/members/{memberId}/cards/{cardId}/expiring-points/{bucketId}/expire",
+ "GET /v2/loyalties/programs/{programId}/members/{memberId}/cards/{cardId}/transactions",
+ "GET /v2/loyalties/programs/{programId}/members/{memberId}/rewards/purchases",
+ "POST /v2/loyalties/programs/{programId}/members/{memberId}/rewards/purchases",
+ "GET /v2/loyalties/programs/{programId}/members/{memberId}/orders/payments",
+ "POST /v2/loyalties/programs/{programId}/members/{memberId}/orders/payments",
+ "GET /v2/loyalties/programs/{programId}/members/{memberId}/benefits/transactions",
+ "GET /v2/loyalties/programs/{programId}/members/{memberId}/tiers/transactions",
+ "GET /v2/loyalties/programs/{programId}/members/{memberId}/cards/{cardId}/reports/daily"
+ ]
+ },
+ {
+ "group": "Examine",
+ "pages": [
+ "POST /v2/loyalties/examine/earning-rules",
+ "POST /v2/loyalties/examine/rewards"
+ ]
+ },
+ {
+ "group": "Earning Rules",
+ "pages": [
+ "GET /v2/loyalties/earning-rules",
+ "POST /v2/loyalties/earning-rules",
+ "GET /v2/loyalties/earning-rules/{earningRuleId}",
+ "PUT /v2/loyalties/earning-rules/{earningRuleId}",
+ "DELETE /v2/loyalties/earning-rules/{earningRuleId}",
+ "POST /v2/loyalties/earning-rules/{earningRuleId}/activate",
+ "POST /v2/loyalties/earning-rules/{earningRuleId}/deactivate",
+ "POST /v2/loyalties/earning-rules/{earningRuleId}/draft",
+ "GET /v2/loyalties/earning-rules/{earningRuleId}/activities"
+ ]
+ },
+ {
+ "group": "Tier Structures",
+ "pages": [
+ "GET /v2/loyalties/tier-structures",
+ "POST /v2/loyalties/tier-structures",
+ "GET /v2/loyalties/tier-structures/{tierStructureId}",
+ "PUT /v2/loyalties/tier-structures/{tierStructureId}",
+ "DELETE /v2/loyalties/tier-structures/{tierStructureId}",
+ "POST /v2/loyalties/tier-structures/{tierStructureId}/activate",
+ "POST /v2/loyalties/tier-structures/{tierStructureId}/deactivate",
+ "POST /v2/loyalties/tier-structures/{tierStructureId}/draft",
+ "GET /v2/loyalties/tier-structures/{tierStructureId}/tiers",
+ "POST /v2/loyalties/tier-structures/{tierStructureId}/tiers",
+ "PUT /v2/loyalties/tier-structures/{tierStructureId}/tiers/{tierId}",
+ "DELETE /v2/loyalties/tier-structures/{tierStructureId}/tiers/{tierId}",
+ "GET /v2/loyalties/tier-structures/{tierStructureId}/activities"
+ ]
+ },
+ {
+ "group": "Benefits",
+ "pages": [
+ "GET /v2/loyalties/benefits",
+ "POST /v2/loyalties/benefits",
+ "GET /v2/loyalties/benefits/{benefitId}",
+ "PUT /v2/loyalties/benefits/{benefitId}",
+ "DELETE /v2/loyalties/benefits/{benefitId}",
+ "POST /v2/loyalties/benefits/{benefitId}/activate",
+ "POST /v2/loyalties/benefits/{benefitId}/draft",
+ "GET /v2/loyalties/benefits/{benefitId}/activities"
+ ]
+ },
+ {
+ "group": "Rewards",
+ "pages": [
+ "GET /v2/loyalties/rewards",
+ "POST /v2/loyalties/rewards",
+ "GET /v2/loyalties/rewards/{rewardId}",
+ "PUT /v2/loyalties/rewards/{rewardId}",
+ "DELETE /v2/loyalties/rewards/{rewardId}",
+ "POST /v2/loyalties/rewards/{rewardId}/activate",
+ "POST /v2/loyalties/rewards/{rewardId}/deactivate",
+ "POST /v2/loyalties/rewards/{rewardId}/draft",
+ "GET /v2/loyalties/rewards/{rewardId}/activities"
+ ]
+ }
+ ]
+ },
{
"group": "Rewards",
"public": true,
@@ -676,71 +691,7 @@
"PUT /v1/rewards/{rewardId}/assignments/{assignmentId}",
"DELETE /v1/rewards/{rewardId}/assignments/{assignmentId}"
]
- },
- {
- "group": "Loyalties",
- "public": true,
- "openapi": "/openapi/loyalties.json",
- "pages": [
- "api-reference/loyalties/loyalty-campaign-object",
- "api-reference/loyalties/loyalty-card-object",
- "api-reference/loyalties/loyalty-tier-object",
- "api-reference/loyalties/earning-rule-object",
- "GET /v1/loyalties",
- "GET /v1/loyalties/{campaignId}",
- "POST /v1/loyalties",
- "PUT /v1/loyalties/{campaignId}",
- "DELETE /v1/loyalties/{campaignId}",
- "GET /v1/loyalties/{campaignId}/members",
- "GET /v1/loyalties/{campaignId}/members/{memberId}/activity",
- "GET /v1/loyalties/members/{memberId}/activity",
- "GET /v1/loyalties/members/{memberId}",
- "GET /v1/loyalties/{campaignId}/members/{memberId}",
- "POST /v1/loyalties/{campaignId}/members",
- "POST /v1/loyalties/{campaignId}/members/{memberId}/balance",
- "POST /v1/loyalties/members/{memberId}/balance",
- "POST /v1/loyalties/{campaignId}/members/{memberId}/transfers",
- "GET /v1/loyalties/{campaignId}/pending-points",
- "GET /v1/loyalties/{campaignId}/members/{memberId}/pending-points",
- "GET /v1/loyalties/members/{memberId}/pending-points",
- "POST /v1/loyalties/members/{memberId}/pending-points/{pendingPointsId}/activate",
- "POST /v1/loyalties/members/{memberId}/pending-points/{pendingPointsId}/balance",
- "POST /v1/loyalties/members/{memberId}/pending-points/{pendingPointsId}/cancel",
- "GET /v1/loyalties/{campaignId}/transactions",
- "POST /v1/loyalties/{campaignId}/transactions/export",
- "GET /v1/loyalties/{campaignId}/members/{memberId}/transactions",
- "GET /v1/loyalties/members/{memberId}/transactions",
- "POST /v1/loyalties/members/{memberId}/transactions/export",
- "POST /v1/loyalties/{campaignId}/members/{memberId}/transactions/export",
- "GET /v1/loyalties/{campaignId}/members/{memberId}/points-expiration",
- "POST /v1/loyalties/{campaignId}/points-expiration/export",
- "GET /v1/loyalties/{campaignId}/earning-rules",
- "GET /v1/loyalties/{campaignId}/earning-rules/{earningRuleId}",
- "POST /v1/loyalties/{campaignId}/earning-rules",
- "PUT /v1/loyalties/{campaignId}/earning-rules/{earningRuleId}",
- "DELETE /v1/loyalties/{campaignId}/earning-rules/{earningRuleId}",
- "POST /v1/loyalties/{campaignId}/earning-rules/{earningRuleId}/enable",
- "POST /v1/loyalties/{campaignId}/earning-rules/{earningRuleId}/disable",
- "GET /v1/loyalties/members/{memberId}/rewards",
- "GET /v1/loyalties/{campaignId}/reward-assignments/{assignmentId}/reward",
- "POST /v1/loyalties/members/{memberId}/redemption",
- "POST /v1/loyalties/{campaignId}/members/{memberId}/redemption",
- "POST /v1/loyalties/{campaignId}/qualifications",
- "GET /v1/loyalties/{campaignId}/reward-assignments",
- "GET /v1/loyalties/{campaignId}/rewards",
- "GET /v1/loyalties/{campaignId}/reward-assignments/{assignmentId}",
- "GET /v1/loyalties/{campaignId}/rewards/{assignmentId}",
- "POST /v1/loyalties/{campaignId}/rewards",
- "PUT /v1/loyalties/{campaignId}/rewards/{assignmentId}",
- "DELETE /v1/loyalties/{campaignId}/rewards/{assignmentId}",
- "GET /v1/loyalties/{campaignId}/tiers",
- "GET /v1/loyalties/{campaignId}/tiers/{loyaltyTierId}",
- "POST /v1/loyalties/{campaignId}/tiers",
- "GET /v1/loyalties/members/{memberId}/tiers",
- "GET /v1/loyalties/{campaignId}/tiers/{loyaltyTierId}/earning-rules",
- "GET /v1/loyalties/{campaignId}/tiers/{loyaltyTierId}/rewards"
- ]
- },
+ },
{
"group": "Referrals",
"public": true,
@@ -1000,6 +951,71 @@
"GET /client/v1/validate",
"POST /client/v1/redeem"
]
+ },
+ {
+ "group": "Loyalties",
+ "public": true,
+ "openapi": "/openapi/loyalties.json",
+ "pages": [
+ "api-reference/loyalties/introduction-to-legacy-loyalty",
+ "api-reference/loyalties/loyalty-campaign-object",
+ "api-reference/loyalties/loyalty-card-object",
+ "api-reference/loyalties/loyalty-tier-object",
+ "api-reference/loyalties/earning-rule-object",
+ "GET /v1/loyalties",
+ "GET /v1/loyalties/{campaignId}",
+ "POST /v1/loyalties",
+ "PUT /v1/loyalties/{campaignId}",
+ "DELETE /v1/loyalties/{campaignId}",
+ "GET /v1/loyalties/{campaignId}/members",
+ "GET /v1/loyalties/{campaignId}/members/{memberId}/activity",
+ "GET /v1/loyalties/members/{memberId}/activity",
+ "GET /v1/loyalties/members/{memberId}",
+ "GET /v1/loyalties/{campaignId}/members/{memberId}",
+ "POST /v1/loyalties/{campaignId}/members",
+ "POST /v1/loyalties/{campaignId}/members/{memberId}/balance",
+ "POST /v1/loyalties/members/{memberId}/balance",
+ "POST /v1/loyalties/{campaignId}/members/{memberId}/transfers",
+ "GET /v1/loyalties/{campaignId}/pending-points",
+ "GET /v1/loyalties/{campaignId}/members/{memberId}/pending-points",
+ "GET /v1/loyalties/members/{memberId}/pending-points",
+ "POST /v1/loyalties/members/{memberId}/pending-points/{pendingPointsId}/activate",
+ "POST /v1/loyalties/members/{memberId}/pending-points/{pendingPointsId}/balance",
+ "POST /v1/loyalties/members/{memberId}/pending-points/{pendingPointsId}/cancel",
+ "GET /v1/loyalties/{campaignId}/transactions",
+ "POST /v1/loyalties/{campaignId}/transactions/export",
+ "GET /v1/loyalties/{campaignId}/members/{memberId}/transactions",
+ "GET /v1/loyalties/members/{memberId}/transactions",
+ "POST /v1/loyalties/members/{memberId}/transactions/export",
+ "POST /v1/loyalties/{campaignId}/members/{memberId}/transactions/export",
+ "GET /v1/loyalties/{campaignId}/members/{memberId}/points-expiration",
+ "POST /v1/loyalties/{campaignId}/points-expiration/export",
+ "GET /v1/loyalties/{campaignId}/earning-rules",
+ "GET /v1/loyalties/{campaignId}/earning-rules/{earningRuleId}",
+ "POST /v1/loyalties/{campaignId}/earning-rules",
+ "PUT /v1/loyalties/{campaignId}/earning-rules/{earningRuleId}",
+ "DELETE /v1/loyalties/{campaignId}/earning-rules/{earningRuleId}",
+ "POST /v1/loyalties/{campaignId}/earning-rules/{earningRuleId}/enable",
+ "POST /v1/loyalties/{campaignId}/earning-rules/{earningRuleId}/disable",
+ "GET /v1/loyalties/members/{memberId}/rewards",
+ "GET /v1/loyalties/{campaignId}/reward-assignments/{assignmentId}/reward",
+ "POST /v1/loyalties/members/{memberId}/redemption",
+ "POST /v1/loyalties/{campaignId}/members/{memberId}/redemption",
+ "POST /v1/loyalties/{campaignId}/qualifications",
+ "GET /v1/loyalties/{campaignId}/reward-assignments",
+ "GET /v1/loyalties/{campaignId}/rewards",
+ "GET /v1/loyalties/{campaignId}/reward-assignments/{assignmentId}",
+ "GET /v1/loyalties/{campaignId}/rewards/{assignmentId}",
+ "POST /v1/loyalties/{campaignId}/rewards",
+ "PUT /v1/loyalties/{campaignId}/rewards/{assignmentId}",
+ "DELETE /v1/loyalties/{campaignId}/rewards/{assignmentId}",
+ "GET /v1/loyalties/{campaignId}/tiers",
+ "GET /v1/loyalties/{campaignId}/tiers/{loyaltyTierId}",
+ "POST /v1/loyalties/{campaignId}/tiers",
+ "GET /v1/loyalties/members/{memberId}/tiers",
+ "GET /v1/loyalties/{campaignId}/tiers/{loyaltyTierId}/earning-rules",
+ "GET /v1/loyalties/{campaignId}/tiers/{loyaltyTierId}/rewards"
+ ]
}
]
},
diff --git a/documentation/guides/loyalty-v2-integrate.mdx b/documentation/guides/loyalty-v2-integrate.mdx
new file mode 100644
index 000000000..725f7a24e
--- /dev/null
+++ b/documentation/guides/loyalty-v2-integrate.mdx
@@ -0,0 +1,2057 @@
+---
+title: "Integrate loyalty v2"
+description: "Learn how to integrate with Voucherify's new loyalty v2 API"
+keywords: ["loyalty integration", "point wallets", "examine earning rules", "examine rewards", "pay with points", "voucherify v2"]
+tag: "NEW"
+---
+
+To integrate Voucherify's loyalty v2 with your platform, you'll need to complete several steps. You'll have to prepare your customer data, build the loyalty program with required modules, and create the loyalty member journey.
+
+Loyalty v2 has a modular structure, so you can start small and scale your program up as it grows with your members. The modular structure also helps you to optimize your loyalty program with your other incentives, like discount coupons or gift cards.
+
+## Preparation
+
+Prepare your Voucherify account for a functional loyalty v2 integration.
+
+
+
+
+ Prepare your test environment in Voucherify, for example the Sandbox project.
+
+ Use an existing API key/token or create a new pair. Go to **Project settings** > **Application keys** to get `X-App-Id` and `X-App-Token`. Keep these keys on the server side only. See [Authentication](/guides/authentication) and [Security](/guides/security).
+
+ Make sure the API key can call loyalty, campaign, voucher, customer, product, and order endpoints used by your integration.
+
+ Choose the correct regional API base URL from [API overview](/guides/api-overview#choose-the-right-api-endpoint) (Europe, United States, or Asia).
+
+
+
+
+
+
+
+ User guides
+
+ Follow [Tutorial – Create basic program](/build/create-loyalty-campaign-v2) for a step-by-step dashboard setup. Read the [Loyalty v2 overview](/build/loyalty-overview) for the program model and rollout context.
+
+
+
+ Create the loyalty v2 program by going to **Loyalty hub** > **Programs**.
+
+ Design there the program architecture. You can start with a small program for earning and spending points. The required components are the point wallet (card definition) and an earning rule.
+
+ Copy your v2 program ID (`lprg_...`). This is required for all member-related API calls.
+
+ Set the program status to `ACTIVE`.
+
+
+
+ Once the program is active, you can experiment with additional earning rules, benefits, and rewards. However, you can't add or edit point wallets or add tier structures.
+
+
+
+
+
+
+
+ Your loyalty program members must first exist as customers in Voucherify to have a Voucherify customer ID (`cust_...`).
+
+ You can:
+ - Import your customer base with the [Customer import](/prepare/customers#data-import-and-synchronization) or [POST Import and Update Customers using CSV](/api-reference/customers/import-and-update-customers-using-csv) API endpoint.
+ - Use a CDP or CRM tool to synchronize your customers with Voucherify.
+
+
+
+
+
+ If you plan to use products as loyalty program rewards, you have to create them in Voucherify first.
+
+ You can:
+ - Import your product database with the [Product import](/prepare/products#bulk-import-with-csv) in the Voucherify dashboard.
+ - Use the API with [POST Import Products using CSV](/api-reference/products/import-products-using-csv) and [POST Update products in bulk](/api-reference/products/update-products-in-bulk) endpoints.
+
+
+
+
+
+ If you're going to combine the loyalty v2 program with metadata (custom attributes for point wallets, loyalty members, and more) or custom events (for example, to trigger when points are earned), you'll have to create relevant schemas.
+
+ Read more about creating [metadata schemas](/prepare/metadata#define-new-metadata-schema) and [custom events](/prepare/custom-events#define-new-custom-event).
+
+
+
+
+
+## Acquisition
+
+Use the [POST Create member](/api-reference/programs/create-program-member) or [POST Create member in batch](/api-reference/programs/batch-create-program-members) (asynchronous action) with the Voucherify customer ID to add the customer as a member to a loyalty v2 program.
+
+By default, the customer is added as an `ACTIVE` member, who can immediately earn points and fully participate in the loyalty program.
+
+Optionally, you can add the customer as an `INACTIVE` member. An inactive member will have to be activated later with the [POST Activate member](/api-reference/programs/activate-program-member) endpoint to participate in the loyalty program.
+
+
+
+```json Basic create member request lines
+{
+ "customer_id": "cust_V0uCh3r1fyId"
+}
+```
+
+```json Create inactive member request lines
+{
+ "customer_id": "cust_V0uCh3r1fyId",
+ "status": "INACTIVE"
+}
+```
+
+```json Create member in batch request lines
+[
+ {
+ "customer_id": "cust_V0uCh3r1fyId01"
+ },
+ {
+ "customer_id": "cust_V0uCh3r1fyId02"
+ },
+ {
+ "customer_id": "cust_V0uCh3r1fyId03"
+ }
+]
+```
+
+
+
+The response for creating an individual member will return (see the lines in the example below):
+- Loyalty program member ID with a unique member ID (`lmbr_...`) (line 2).
+- The loyalty card(s) generated for the member with a unique loyalty card ID (`lcrd_...`) and the card definition (point wallet) ID. If your program uses multiple point wallets, the member will automatically receive a separate card for each card definition (`cards[].card.id` and `cards[].card.card_definition_id` in lines 16, 17, 54, and 55).
+
+The response for creating a batch of new members returns an ID of an asynchronous action. Use the ID in the [GET Get async action](/api-reference/async-actions/get-async-action) endpoint to check the processing status of the action.
+
+
+
+Handle loyalty card code latency
+
+Make sure your UI can handle `null` for the `cards[].card.code` property. The `code` property is generated asynchronously after member creation (lines 19 and 57).
+
+
+
+In this response example, the loyalty program member receives two loyalty cards for two separate point wallets (card definitions).
+
+
+
+```json POST Create member: response example lines highlight={2,16,17,19,54,55,57} expandable
+{
+ "id": "lmbr_V0uCh3r1fyId1",
+ "customer_id": "cust_V0uCh3r1fyId2",
+ "program_id": "lprg_V0uCh3r1fyId3",
+ "status": "ACTIVE",
+ "metadata": {},
+ "created_at": "2026-06-06T06:06:06.006Z",
+ "updated_at": null,
+ "object": "member",
+ "cards": [
+ {
+ "member_role": "OWNER",
+ "created_at": "2026-06-06T06:06:06.006Z",
+ "tier_progress": null,
+ "card": {
+ "id": "lcrd_V0uCh3r1fyId4",
+ "card_definition_id": "lcdef_V0uCh3r1fyId5",
+ "card_type": "INDIVIDUAL",
+ "code": null,
+ "lifetime_bucket": {
+ "points": {
+ "total": 0,
+ "earned": 0,
+ "added": 0,
+ "subtracted": 0,
+ "expired": 0,
+ "spent": 0,
+ "refunded": 0,
+ "returned": 0,
+ "locked": 0,
+ "unlocked": 0
+ },
+ "pending_points": {
+ "total": 0,
+ "activated": 0,
+ "canceled": 0
+ }
+ },
+ "balance": {
+ "points": 0,
+ "pending_points": 0
+ },
+ "next_expiration": null,
+ "next_activation": null,
+ "object": "card"
+ },
+ "object": "member_card"
+ },
+ {
+ "member_role": "OWNER",
+ "created_at": "2026-06-06T06:06:06.006Z",
+ "tier_progress": null,
+ "card": {
+ "id": "lcrd_V0uCh3r1fyId6",
+ "card_definition_id": "lcdef_V0uCh3r1fyId7",
+ "card_type": "INDIVIDUAL",
+ "code": null,
+ "lifetime_bucket": {
+ "points": {
+ "total": 0,
+ "earned": 0,
+ "added": 0,
+ "subtracted": 0,
+ "expired": 0,
+ "spent": 0,
+ "refunded": 0,
+ "returned": 0,
+ "locked": 0,
+ "unlocked": 0
+ },
+ "pending_points": {
+ "total": 0,
+ "activated": 0,
+ "canceled": 0
+ }
+ },
+ "balance": {
+ "points": 0,
+ "pending_points": 0
+ },
+ "next_expiration": null,
+ "next_activation": null,
+ "object": "card"
+ },
+ "object": "member_card"
+ }
+ ]
+}
+```
+
+```json Batch create member: response lines wrap
+{
+ "async_action_id": "aa_abc123def456"
+}
+```
+
+
+
+## Discovery
+
+Once you enroll your members, use the following endpoints so the members can learn more about your loyalty program: How they can earn and spend their points.
+
+### Examine earning rules
+
+Use the [POST Examine earning rules](/api-reference/examine/examine-earning-rules) endpoint to estimate how many points a customer will earn in a given scenario. This simulation calculates the precise number of points and material or digital benefits a customer can earn based on specific operational business triggers. Because this evaluation is a dry-run execution, Voucherify calculates these opportunities dynamically without writing transactions to card balances or modifying customer states.
+
+
+
+ The POST Examine earning rules endpoint is an estimation of points to be earned. It doesn't take into account additional earning rule triggers that may occur. For example, this can happen when a member pays for an order, earns points, and reaches a higher loyalty tier that will trigger additional points.
+
+
+
+You can configure the simulation engine using two distinct trigger modes:
+- `ALL` mode: Simulates a parallel "what-if" scenario across all active earning rule configurations simultaneously.
+- `SPECIFIC` mode: Limits evaluation to one event context, like order paid, segment entered, or custom event.
+
+#### ALL trigger
+
+Use the trigger type `ALL` mode to create "Ways to earn" loyalty portals or customer dashboards. This option displays all available marketing paths to your customer simultaneously.
+
+When you pass the type `ALL`, Voucherify sets the top-level `event` parameter value to `null` (response line 2). Voucherify processes every earning rule active within the customer's program.
+
+The simulation lists all earning rules (in the response example, the `earning_rules` array in lines 9–40) across distinct card definitions (the `memberships[].cards` array in lines 56–128, loyalty cards with names `AnnualTime`, `AutumnTime`, `SummerTime`). The response displays the total number of points to be earned on a card (`points_estimation` in line 65) and for individual earning rules that trigger the earning (`points_estimation` in lines 72 and 80). Voucherify also lists material rewards, such as the "Coffee sample Ethiopia" item, which is a `MATERIAL` benefit type (`benefits[].benefit` in lines 130–136).
+
+
+
+ Order paid earning rules with proportional calculation
+
+ To return an estimation for order paid earning rules which calculate points proportionally, you need to pass the `customer_order_paid` object with required data, like `order.items` array.
+
+
+
+
+
+```json Trigger: All request lines wrap expandable
+{
+ "trigger": {
+ "type": "ALL"
+ },
+ "customer_identification": {
+ "type": "member_id",
+ "member_id": "lmbr_128f962dbc8c4ba5dc"
+ },
+ "customer_order_paid": {
+ "order": {
+ "items": [
+ {
+ "quantity": 1,
+ "price": 1000,
+ "amount": 1000,
+ "source_id": "vchrf-trckr-cp",
+ "name": "Voucherify trucker cap",
+ "related_object": "product",
+ "product": {
+ "metadata": {
+ "brand": "Voucherify",
+ "colour": "cobalt",
+ "category": "cap"
+ }
+ }
+ },
+ {
+ "quantity": 1,
+ "price": 15000,
+ "amount": 15000,
+ "source_id": "vchrf-tshrt",
+ "name": "Voucherify T-shirt",
+ "related_object": "product",
+ "product": {
+ "metadata": {
+ "brand": "Voucherify",
+ "colour": "ultramarine",
+ "category": "t-shirt"
+ }
+ }
+ },
+ {
+ "quantity": 1,
+ "price": 6500,
+ "amount": 6500,
+ "source_id": "vchrf-hd",
+ "name": "Voucherify hoodie",
+ "related_object": "product",
+ "product": {
+ "metadata": {
+ "brand": "Voucherify",
+ "colour": "regal crimson",
+ "category": "hoodie"
+ }
+ }
+ },
+ {
+ "quantity": 2,
+ "price": 1500,
+ "amount": 3000,
+ "source_id": "vchrf-vncnt-plsh",
+ "name": "Voucherify Vincent plushie",
+ "related_object": "product",
+ "product": {
+ "metadata": {
+ "brand": "Voucherify",
+ "colour": "cobalt",
+ "category": "plushie"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "customer_segment_entered": {
+ "customer": {
+ "metadata": {
+ "VIP": false
+ }
+ }
+ },
+ "customer_custom_event": {
+ "type": "SPECIFIC",
+ "all": null,
+ "specific": {
+ "custom_event": {
+ "schema_id": "ms_oX8au6DostTnHdWBAVVFnTLP"
+ }
+ }
+ }
+}
+
+```
+
+```json Trigger: All response lines wrap expandable highlight={2,9-40,56-128,130-136}
+{
+ "event": null,
+ "customer": {
+ "id": "cust_6onRrs4kCnvSVrTs5YtDPFBG",
+ "source_id": "lx-rdmptr",
+ "metadata": {},
+ "object": "customer"
+ },
+ "earning_rules": [
+ {
+ "id": "lern_128f48ee44cc4bec34",
+ "name": "EarningRule-OrderPaid",
+ "metadata": {},
+ "object": "earning_rule"
+ },
+ {
+ "id": "lern_128f577bd4d47c8e12",
+ "name": "EnterVipSegment",
+ "metadata": {},
+ "object": "earning_rule"
+ },
+ {
+ "id": "lern_128f5822398c4bf78f",
+ "name": "AutumnPaid",
+ "metadata": {},
+ "object": "earning_rule"
+ },
+ {
+ "id": "lern_128f5834b30c4bf7a3",
+ "name": "SummerPaid",
+ "metadata": {},
+ "object": "earning_rule"
+ },
+ {
+ "id": "lern_128f57ec40cc4bf762",
+ "name": "Autumn Ethiopia",
+ "metadata": {},
+ "object": "earning_rule"
+ }
+ ],
+ "memberships": [
+ {
+ "member": {
+ "id": "lmbr_128f962dbc8c4ba5dc",
+ "customer_id": "cust_6onRrs4kCnvSVrTs5YtDPFBG",
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "metadata": {},
+ "object": "member"
+ },
+ "program": {
+ "id": "lprg_128f58429f4c4bf7b2",
+ "name": "AnnualProgram",
+ "metadata": {},
+ "object": "program"
+ },
+ "cards": [
+ {
+ "card": {
+ "id": "lcrd_128f962dbd8c4ba5e1",
+ "card_definition_id": "lcdef_128f4a88414c4bed69",
+ "card_type": "INDIVIDUAL",
+ "code": "AnnualTime-7M7ShPGfme",
+ "object": "card"
+ },
+ "points_estimation": 25650,
+ "earning_rules": [
+ {
+ "earning_rule": {
+ "id": "lern_128f48ee44cc4bec34",
+ "object": "earning_rule"
+ },
+ "points_estimation": 25500,
+ "object": "earning_rule_estimation"
+ },
+ {
+ "earning_rule": {
+ "id": "lern_128f577bd4d47c8e12",
+ "object": "earning_rule"
+ },
+ "points_estimation": 150,
+ "object": "earning_rule_estimation"
+ }
+ ],
+ "object": "card_estimation"
+ },
+ {
+ "card": {
+ "id": "lcrd_128f962dbd8c4ba5e0",
+ "card_definition_id": "lcdef_128f49963c0c4becb7",
+ "card_type": "INDIVIDUAL",
+ "code": "AutumnTime-R02hVARx33",
+ "object": "card"
+ },
+ "points_estimation": 10,
+ "earning_rules": [
+ {
+ "earning_rule": {
+ "id": "lern_128f5822398c4bf78f",
+ "object": "earning_rule"
+ },
+ "points_estimation": 10,
+ "object": "earning_rule_estimation"
+ }
+ ],
+ "object": "card_estimation"
+ },
+ {
+ "card": {
+ "id": "lcrd_128f962dbd8c4ba5df",
+ "card_definition_id": "lcdef_128f495f720c4bec8c",
+ "card_type": "INDIVIDUAL",
+ "code": "SummerTime-7z8dWawICd",
+ "object": "card"
+ },
+ "points_estimation": 10,
+ "earning_rules": [
+ {
+ "earning_rule": {
+ "id": "lern_128f5834b30c4bf7a3",
+ "object": "earning_rule"
+ },
+ "points_estimation": 10,
+ "object": "earning_rule_estimation"
+ }
+ ],
+ "object": "card_estimation"
+ }
+ ],
+ "benefits": [
+ {
+ "benefit": {
+ "id": "linc_128f4bba81947c8542",
+ "name": "Coffee sample Ethiopia",
+ "type": "MATERIAL",
+ "object": "benefit"
+ },
+ "earning_rules": [
+ {
+ "earning_rule": {
+ "id": "lern_128f57ec40cc4bf762",
+ "object": "earning_rule"
+ },
+ "object": "earning_rule_estimation"
+ }
+ ],
+ "object": "benefit_estimation"
+ }
+ ],
+ "object": "member_earnings_opportunity"
+ }
+ ],
+ "object": "earnings_examine_result"
+}
+```
+
+
+#### SPECIFIC trigger: Order paid
+
+Use the `SPECIFIC` trigger type `customer.order.paid` inside digital shopping carts to estimate customer point collection right before final billing.
+
+The simulation isolates rules linked directly to `PAID` transaction states. Voucherify processes the order details from your request context, including items, metadata, catalog categories, and amount values.
+
+In the example, Voucherify resolves the `EarningRule-OrderPaid` rule (response example, `earning_rules` array, first object in lines 10–15) and returns an explicit balance projection of 25500 points for the primary `AnnualTime` loyalty card (`memberships[].cards[].points_estimation` in line 53). Also, the response lists earnings for `AutumnPaid` and `SummerPaid` earning rules (`earning_rules` array, objects in lines 16–27) that are used for the `AutumnTime` and `SummerTime` loyalty cards (`memberships[].cards[].points_estimation` in lines 74 and 95). The calculation reflects the current shopping cart properties without adding points to the active card yet.
+
+
+
+```json Trigger: Order paid request lines wrap expandable
+{
+ "trigger": {
+ "type": "SPECIFIC",
+ "specific": {
+ "event": "customer.order.paid"
+ }
+ },
+ "customer_identification": {
+ "type": "member_id",
+ "member_id": "lmbr_128f962dbc8c4ba5dc"
+ },
+ "customer_order_paid": {
+ "order": {
+ "items": [
+ {
+ "quantity": 1,
+ "price": 1000,
+ "amount": 1000,
+ "source_id": "vchrf-trckr-cp",
+ "name": "Voucherify trucker cap",
+ "related_object": "product",
+ "product": {
+ "metadata": {
+ "brand": "Voucherify",
+ "colour": "cobalt",
+ "category": "cap"
+ }
+ }
+ },
+ {
+ "quantity": 1,
+ "price": 15000,
+ "amount": 15000,
+ "source_id": "vchrf-tshrt",
+ "name": "Voucherify T-shirt",
+ "related_object": "product",
+ "product": {
+ "metadata": {
+ "brand": "Voucherify",
+ "colour": "ultramarine",
+ "category": "t-shirt"
+ }
+ }
+ },
+ {
+ "quantity": 1,
+ "price": 6500,
+ "amount": 6500,
+ "source_id": "vchrf-hd",
+ "name": "Voucherify hoodie",
+ "related_object": "product",
+ "product": {
+ "metadata": {
+ "brand": "Voucherify",
+ "colour": "regal crimson",
+ "category": "hoodie"
+ }
+ }
+ },
+ {
+ "quantity": 2,
+ "price": 1500,
+ "amount": 3000,
+ "source_id": "vchrf-vncnt-plsh",
+ "name": "Voucherify Vincent plushie",
+ "related_object": "product",
+ "product": {
+ "metadata": {
+ "brand": "Voucherify",
+ "colour": "cobalt",
+ "category": "plushie"
+ }
+ }
+ }
+ ]
+ }
+ }
+}
+```
+
+```json Trigger: Order paid response lines wrap expandable highlight={10-27,53,74,95}
+{
+ "event": "customer.order.paid",
+ "customer": {
+ "id": "cust_6onRrs4kCnvSVrTs5YtDPFBG",
+ "source_id": "lx-rdmptr",
+ "metadata": {},
+ "object": "customer"
+ },
+ "earning_rules": [
+ {
+ "id": "lern_128f48ee44cc4bec34",
+ "name": "EarningRule-OrderPaid",
+ "metadata": {},
+ "object": "earning_rule"
+ },
+ {
+ "id": "lern_128f5822398c4bf78f",
+ "name": "AutumnPaid",
+ "metadata": {},
+ "object": "earning_rule"
+ },
+ {
+ "id": "lern_128f5834b30c4bf7a3",
+ "name": "SummerPaid",
+ "metadata": {},
+ "object": "earning_rule"
+ }
+ ],
+ "memberships": [
+ {
+ "member": {
+ "id": "lmbr_128f962dbc8c4ba5dc",
+ "customer_id": "cust_6onRrs4kCnvSVrTs5YtDPFBG",
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "metadata": {},
+ "object": "member"
+ },
+ "program": {
+ "id": "lprg_128f58429f4c4bf7b2",
+ "name": "AnnualProgram",
+ "metadata": {},
+ "object": "program"
+ },
+ "cards": [
+ {
+ "card": {
+ "id": "lcrd_128f962dbd8c4ba5e1",
+ "card_definition_id": "lcdef_128f4a88414c4bed69",
+ "card_type": "INDIVIDUAL",
+ "code": "AnnualTime-7M7ShPGfme",
+ "object": "card"
+ },
+ "points_estimation": 25500,
+ "earning_rules": [
+ {
+ "earning_rule": {
+ "id": "lern_128f48ee44cc4bec34",
+ "object": "earning_rule"
+ },
+ "points_estimation": 25500,
+ "object": "earning_rule_estimation"
+ }
+ ],
+ "object": "card_estimation"
+ },
+ {
+ "card": {
+ "id": "lcrd_128f962dbd8c4ba5e0",
+ "card_definition_id": "lcdef_128f49963c0c4becb7",
+ "card_type": "INDIVIDUAL",
+ "code": "AutumnTime-R02hVARx33",
+ "object": "card"
+ },
+ "points_estimation": 10,
+ "earning_rules": [
+ {
+ "earning_rule": {
+ "id": "lern_128f5822398c4bf78f",
+ "object": "earning_rule"
+ },
+ "points_estimation": 10,
+ "object": "earning_rule_estimation"
+ }
+ ],
+ "object": "card_estimation"
+ },
+ {
+ "card": {
+ "id": "lcrd_128f962dbd8c4ba5df",
+ "card_definition_id": "lcdef_128f495f720c4bec8c",
+ "card_type": "INDIVIDUAL",
+ "code": "SummerTime-7z8dWawICd",
+ "object": "card"
+ },
+ "points_estimation": 10,
+ "earning_rules": [
+ {
+ "earning_rule": {
+ "id": "lern_128f5834b30c4bf7a3",
+ "object": "earning_rule"
+ },
+ "points_estimation": 10,
+ "object": "earning_rule_estimation"
+ }
+ ],
+ "object": "card_estimation"
+ }
+ ],
+ "benefits": [],
+ "object": "member_earnings_opportunity"
+ }
+ ],
+ "object": "earnings_examine_result"
+}
+```
+
+
+
+#### SPECIFIC trigger: Customer entered segment
+
+
+
+ Prerequisite: Customer segment
+
+ This scenario requires an earning rule that uses a customer segment as a trigger.
+
+ Read the [Customer segments](/prepare/customer-segments) guide to learn more about customer segments.
+
+
+
+Use the `SPECIFIC` trigger type `customer.segment.entered` to forecast reward outcomes when a member moves into a high-tier profile segment, like a VIP club. You can display this as an achievable milestone in the member profile.
+
+The evaluation matches metadata configurations in the customer reference object. In this case, passing the metadata key-value pair `"VIP": true` simulates a segment transition (request example, `customer_segment_entered.customer.metadata` in line 15).
+
+Voucherify identifies the `EnterVipSegment` rule schema (response example, the `earning_rules` array, first object in lines 12–17). The response isolates the member's `AnnualTime` loyalty card and lists a milestone award valuation of 150 points (`memberships[].cards[].points_estimation` in line 43). Other purchase-dependent rules are omitted from the calculation automatically.
+
+
+
+```json Trigger: Customer entered segment request lines wrap expandable highlight={15}
+{
+ "trigger": {
+ "type": "SPECIFIC",
+ "specific": {
+ "event": "customer.segment.entered"
+ }
+ },
+ "customer_identification": {
+ "type": "member_id",
+ "member_id": "lmbr_128f962dbc8c4ba5dc"
+ },
+ "customer_segment_entered": {
+ "customer": {
+ "metadata": {
+ "VIP": true
+ }
+ }
+ }
+}
+```
+
+```json Trigger: Customer entered segment response lines wrap expandable highlight={12-17,43}
+{
+ "event": "customer.segment.entered",
+ "customer": {
+ "id": "cust_6onRrs4kCnvSVrTs5YtDPFBG",
+ "source_id": "lx-rdmptr",
+ "metadata": {
+ "VIP": true
+ },
+ "object": "customer"
+ },
+ "earning_rules": [
+ {
+ "id": "lern_128f577bd4d47c8e12",
+ "name": "EnterVipSegment",
+ "metadata": {},
+ "object": "earning_rule"
+ }
+ ],
+ "memberships": [
+ {
+ "member": {
+ "id": "lmbr_128f962dbc8c4ba5dc",
+ "customer_id": "cust_6onRrs4kCnvSVrTs5YtDPFBG",
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "metadata": {},
+ "object": "member"
+ },
+ "program": {
+ "id": "lprg_128f58429f4c4bf7b2",
+ "name": "AnnualProgram",
+ "metadata": {},
+ "object": "program"
+ },
+ "cards": [
+ {
+ "card": {
+ "id": "lcrd_128f962dbd8c4ba5e1",
+ "card_definition_id": "lcdef_128f4a88414c4bed69",
+ "card_type": "INDIVIDUAL",
+ "code": "AnnualTime-7M7ShPGfme",
+ "object": "card"
+ },
+ "points_estimation": 150,
+ "earning_rules": [
+ {
+ "earning_rule": {
+ "id": "lern_128f577bd4d47c8e12",
+ "object": "earning_rule"
+ },
+ "points_estimation": 150,
+ "object": "earning_rule_estimation"
+ }
+ ],
+ "object": "card_estimation"
+ }
+ ],
+ "benefits": [],
+ "object": "member_earnings_opportunity"
+ }
+ ],
+ "object": "earnings_examine_result"
+}
+```
+
+
+#### SPECIFIC trigger: Custom event
+
+
+
+ Prerequisite: Custom event schema
+
+ This scenario requires an earning rule that uses a custom event as a trigger.
+
+ Read the [Custom events](/prepare/custom-events) guide to learn more about custom events.
+
+
+
+Use the `SPECIFIC` trigger type `customer.custom_event` to evaluate custom behaviors outside standard purchase workflows, such as writing product reviews, bringing reusable cups to a coffee shop, or using mobile apps.
+
+The calculation evaluates rules that trigger on unique business schemas rather than order parameters or segment fields. The custom event is passed as a `schema_id` inside the `customer_custom_event` object (request example, `customer_custom_event.specific.custom_event.schema_id` in line 16).
+
+In the example below, the earning rule (response example, the object in the `earning_rules` array, lines 10–15) awards a benefit rather than loyalty points on a card. As a result, the simulation bypasses regular point cards completely, meaning the `cards` array returns empty (line 32). Instead, the response fills the `benefits` array, which shows that once this action is completed, the member will receive the "Coffee sample Ethiopia" product (lines 34–40).
+
+
+
+ "ALL" type for custom events
+
+ In the `customer_custom_event` you can pass `"type": "ALL"` to return a point estimation for all earning rules that are based on custom events. Use this type if your program runs many earnings that trigger when a member performs an action based on a custom event.
+
+
+
+
+
+```json Trigger: Custom event request lines wrap expandable highlight={16}
+{
+ "trigger": {
+ "type": "SPECIFIC",
+ "specific": {
+ "event": "customer.custom_event"
+ }
+ },
+ "customer_identification": {
+ "type": "member_id",
+ "member_id": "lmbr_128f962dbc8c4ba5dc"
+ },
+ "customer_custom_event": {
+ "type": "SPECIFIC",
+ "specific": {
+ "custom_event": {
+ "schema_id": "ms_oX8au6DostTnHdWBAVVFnTLP"
+ }
+ }
+ }
+}
+```
+
+```json Trigger: Custom event response lines wrap expandable highlight={10-15,32,34-40}
+{
+ "event": "customer.custom_event",
+ "customer": {
+ "id": "cust_6onRrs4kCnvSVrTs5YtDPFBG",
+ "source_id": "lx-rdmptr",
+ "metadata": {},
+ "object": "customer"
+ },
+ "earning_rules": [
+ {
+ "id": "lern_128f57ec40cc4bf762",
+ "name": "Autumn Ethiopia",
+ "metadata": {},
+ "object": "earning_rule"
+ }
+ ],
+ "memberships": [
+ {
+ "member": {
+ "id": "lmbr_128f962dbc8c4ba5dc",
+ "customer_id": "cust_6onRrs4kCnvSVrTs5YtDPFBG",
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "metadata": {},
+ "object": "member"
+ },
+ "program": {
+ "id": "lprg_128f58429f4c4bf7b2",
+ "name": "AnnualProgram",
+ "metadata": {},
+ "object": "program"
+ },
+ "cards": [],
+ "benefits": [
+ {
+ "benefit": {
+ "id": "linc_128f4bba81947c8542",
+ "name": "Coffee sample Ethiopia",
+ "type": "MATERIAL",
+ "object": "benefit"
+ },
+ "earning_rules": [
+ {
+ "earning_rule": {
+ "id": "lern_128f57ec40cc4bf762",
+ "object": "earning_rule"
+ },
+ "object": "earning_rule_estimation"
+ }
+ ],
+ "object": "benefit_estimation"
+ }
+ ],
+ "object": "member_earnings_opportunity"
+ }
+ ],
+ "object": "earnings_examine_result"
+}
+```
+
+
+
+### Examine rewards
+
+
+
+ Prerequisite: Create and add rewards to point wallets
+
+ Created rewards must be added to relevant point wallets to be redeemable by your members. When you add the reward to a point wallet, you also define its price in points.
+
+ You can create rewards through the dashboard or the API.
+
+
+
+Use the [POST Examine rewards](/api-reference/examine/examine-rewards) endpoint to verify which benefits, digital discount coupons or gift card credits, and material rewards are available to a member across their active loyalty program memberships. This simulation calculates the precise point costs using specific spending rules and evaluates stock availability in real time. Because this evaluation is a dry-run execution, the Voucherify engine processes these opportunities without writing transactions to card balances.
+
+You can use this endpoint in your user interface to build dynamic reward catalogs or member portals that show customers exactly what rewards they can unlock with their current point balance, as well as the specific actions required to unlock restricted rewards.
+
+The Voucherify simulation engine evaluates every reward assignment and classifies the reward under one of two distinct operational states within the `rewards` array. The endpoint returns only active rewards (response example, lines 8–30) and draft rewards are ignored.
+
+#### AVAILABLE status
+
+When a reward returns an `AVAILABLE` status, the loyalty program member meets all eligibility criteria for reward redemption. This status guarantees that:
+- The member has an active loyalty card belonging to the required card definition.
+- The current point balance on that specific loyalty card is equal to or greater than the resolved point cost.
+- The reward assignment has sufficient stock and is currently active.
+
+In the response example below, the loyalty card `AnnualTime-7M7ShPGfme` contains two `AVAILABLE` reward opportunities: the "Free item coupon" (requiring 300 points; the `memberships[].cards[].card.rewards` object lines 91–102) and the "Minas Gerais 500" material reward (requiring 150 points; the `memberships[].cards[].card.rewards` object in lines 103–114).
+
+#### UNAVAILABLE status
+
+When a reward returns an `UNAVAILABLE` status, the member can't redeem it at that moment. To prevent integration guesswork and support frontend user guidance, the Voucherify API provides a structured `unavailability_reasons` array detailing the exact failure point.
+
+The evaluation engine identifies five primary reasons for reward unavailability:
+- `insufficient_balance`: The loyalty card balance is lower than the required reward cost. The API returns explicit context in the `details` object showing `required`, `available`, and `missing` point values.
+- `out_of_stock`: The reward assignment stock is depleted.
+- `no_matching_cost`: No applicable point cost configuration is found or the cost configuration is locked.
+- `no_card_for_cost`: The member profile lacks an active card for the required card definition.
+- `reward_inactive`: The parent reward object is paused or inactive.
+
+In the response example below, the "Carioca cap" reward on the loyalty card `SummerTime-7z8dWawICd` is marked `UNAVAILABLE` (line 61) due to `insufficient_balance` because the member possesses only 50 points out of the required 250 points (the `memberships[].cards[].card.rewards.unavailability_reasons` object in lines 66–75).
+
+
+
+ UX best practice
+
+ Use the `missing` property inside the `insufficient_balance` details object to calculate and display progress bars or "points needed" callouts directly on your e-commerce checkout page or mobile application.
+
+
+
+#### Examine rewards: Example request and response
+
+Check the following request and response payloads to learn how `AVAILABLE` and `UNAVAILABLE` rewards are returned.
+
+
+
+```json Examine rewards request lines wrap
+{
+ "customer_identification": {
+ "type": "member_id",
+ "member_id": "lmbr_128f962dbc8c4ba5dc"
+ }
+}
+```
+
+```json Examine rewards response lines wrap highlight={8-30,61,66-75,91-114} expandable
+{
+ "customer": {
+ "id": "cust_6onRrs4kCnvSVrTs5YtDPFBG",
+ "source_id": "lx-rdmptr",
+ "metadata": {},
+ "object": "customer"
+ },
+ "rewards": [
+ {
+ "id": "lrew_128f4cefbad47c863e",
+ "name": "Carioca cap",
+ "type": "MATERIAL",
+ "metadata": {},
+ "object": "reward"
+ },
+ {
+ "id": "lrew_128f4cab04147c8608",
+ "name": "Free item coupon",
+ "type": "DIGITAL",
+ "metadata": {},
+ "object": "reward"
+ },
+ {
+ "id": "lrew_128f4c6710947c85d1",
+ "name": "Minas Gerais 500",
+ "type": "MATERIAL",
+ "metadata": {},
+ "object": "reward"
+ }
+ ],
+ "memberships": [
+ {
+ "member": {
+ "id": "lmbr_128f962dbc8c4ba5dc",
+ "customer_id": "cust_6onRrs4kCnvSVrTs5YtDPFBG",
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "metadata": {},
+ "object": "member"
+ },
+ "program": {
+ "id": "lprg_128f58429f4c4bf7b2",
+ "name": "AnnualProgram",
+ "metadata": {},
+ "object": "program"
+ },
+ "cards": [
+ {
+ "card": {
+ "id": "lcrd_128f962dbd8c4ba5df",
+ "card_definition_id": "lcdef_128f495f720c4bec8c",
+ "card_type": "INDIVIDUAL",
+ "code": "SummerTime-7z8dWawICd",
+ "object": "card"
+ },
+ "rewards": [
+ {
+ "reward": {
+ "id": "lrew_128f4cefbad47c863e",
+ "object": "reward"
+ },
+ "status": "UNAVAILABLE",
+ "cost": {
+ "points": 250,
+ "object": "reward_cost"
+ },
+ "unavailability_reasons": [
+ {
+ "reason": "insufficient_balance",
+ "details": {
+ "required": 250,
+ "available": 50,
+ "missing": 200
+ },
+ "object": "reward_unavailability_reason"
+ }
+ ],
+ "object": "reward_estimation"
+ }
+ ],
+ "object": "card_estimation"
+ },
+ {
+ "card": {
+ "id": "lcrd_128f962dbd8c4ba5e1",
+ "card_definition_id": "lcdef_128f4a88414c4bed69",
+ "card_type": "INDIVIDUAL",
+ "code": "AnnualTime-7M7ShPGfme",
+ "object": "card"
+ },
+ "rewards": [
+ {
+ "reward": {
+ "id": "lrew_128f4cab04147c8608",
+ "object": "reward"
+ },
+ "status": "AVAILABLE",
+ "cost": {
+ "points": 300,
+ "object": "reward_cost"
+ },
+ "object": "reward_estimation"
+ },
+ {
+ "reward": {
+ "id": "lrew_128f4c6710947c85d1",
+ "object": "reward"
+ },
+ "status": "AVAILABLE",
+ "cost": {
+ "points": 150,
+ "object": "reward_cost"
+ },
+ "object": "reward_estimation"
+ }
+ ],
+ "object": "card_estimation"
+ }
+ ],
+ "object": "member_rewards_opportunity"
+ }
+ ],
+ "object": "rewards_examine_result"
+}
+```
+
+
+
+## Activity
+
+Your customers need to perform activities to meet earning rules and earn points or other benefits.
+
+### Create order
+
+If your customers earn points or benefits when they finalize transaction in your system (`customer.order.paid` event), Voucherify relies on the condition that the [POST Create order](/api-reference/orders/create-order) request has the `status` field set to `PAID`.
+
+When the Order API processes a payload with `status` set to `PAID` (line 3), the loyalty engine evaluates the line items and order amount to add points or benefits. Submitting orders with other statuses (such as `CREATED` or `FULFILLED`) will fail to activate the earnings.
+
+```json Order paid request payload lines highlight={3} expandable
+{
+ "source_id": "coffee_order_77129",
+ "status": "PAID",
+ "amount": 3500,
+ "customer": {
+ "source_id": "cust_espresso_fan_99",
+ "email": "customer@coffeeclub.com"
+ },
+ "items": [
+ {
+ "source_id": "prod_colombian_supremo_1kg",
+ "related_object": "product",
+ "quantity": 1,
+ "price": 3500,
+ "amount": 3500,
+ "product": {
+ "name": "Colombian Supremo Coffee Beans",
+ "metadata": {
+ "roast": "medium",
+ "origin": "Colombia"
+ }
+ }
+ }
+ ]
+}
+```
+
+### Custom events
+
+If your members earn points or benefits when performing specific custom activities, like subscribing to a newsletter, leaving a review, or unlocking a daily perk, use the [POST Track custom event](/api-reference/events/track-custom-event) endpoint (`/v1/events`).
+
+The request payload must include:
+- `customer.id` and/or `customer.source_id` (lines 3 and 4) to link the event to a specific customer in Voucherify database. The customer must be a member in the loyalty program.
+- Name of the custom event that triggers the earning rule passed as the value of the `event` property (line 6).
+
+
+
+```json Track custom event request payload lines wrap highlight={3,4,6}
+{
+ "customer": {
+ "id": "cust_6onRrs4kCnvSVrTs5YtDPFBG",
+ "source_id": "lx-rdmptr"
+ },
+ "event": "example_custom_event_name"
+}
+```
+
+When Voucherify registers the custom event, the earning rule will trigger and issue points or benefit to the member as defined in its earnings.
+
+
+
+### Enter segment
+
+
+
+ Read the [Customer segments](/prepare/customer-segments) article to learn more about customer segments and how to create them.
+
+
+
+If your members earn points or benefits when they join a segment of VIP customers, for example, you don't have to send any specific API requests.
+
+The earning rule triggers automatically when Voucherify registers the member has joined the defined dynamic customer segment.
+
+
+
+ Customer segment suggestions
+
+ You can define segments on the basis of various customer properties, like total amount of all orders, birth date, or your own custom attributes (metadata). Here are some ideas for customer segments:
+ - Customers who haven't placed an order for more than 90 days.
+ - Customers who have birthday today.
+ - VIP customers who spent more than $1000 USD in your store.
+ - Customers with a defined metadata `"pet_owner": true`.
+ - Customers who performed an activity "Collect June badge" defined as a custom event less than 5 days ago.
+
+
+
+## Retention
+
+Use the following endpoints and data to build a member profile view, which helps retaining your member base and keeps them engaged.
+
+### Get program membership
+
+Use the [GET program membership](/api-reference/programs/get-program-membership) endpoint (GET `/v2/loyalties/programs/{programId}/memberships/{customerId}?identification_type=member_id`) to create a member profile that will show:
+- The member's identity and status in the program.
+- All loyalty cards the member has in the program.
+- Current point balance, pending points, and other life time point data.
+- Dates for point expiration and activation.
+- Current progress in the tier structure.
+
+The response is a `membership` object that groups three top-level fields:
+- `member`: The member's profile in the program (lines 3–10).
+- `program`: A summary of the loyalty program the member belongs to (lines 13–17). This is useful when your integration handles several programs and needs to identify the program referred to in the response.
+- `cards`: The list of loyalty cards issued to the member (starting at line 19), used to render points and tier progress.
+
+
+
+ Similar endpoints
+
+ The Get membership endpoint works in a similar way to [Get member](/api-reference/programs/get-program-member). Get member returns member details in the context of a loyalty program. It uses only the member ID as the path parameter and it doesn't return `tier_progress` data.
+
+
+ If your program runs loyalty tiers, use the Get membership endpoint.
+
+ Check the documentation of these endpoints to learn more about their differences and similarities.
+
+
+
+The response example is used in the *Member*, *Points*, and *Tiers* sections below.
+
+```json Get membership response wrap lines expandable highlight={3-10,13-17,19,29-47,50,51,54,55,58-60,115-151}
+{
+ "member": {
+ "id": "lmbr_128f962dbc8c4ba5dc",
+ "customer_id": "cust_6onRrs4kCnvSVrTs5YtDPFBG",
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "status": "ACTIVE",
+ "metadata": {},
+ "created_at": "2026-06-11T15:59:41.298Z",
+ "updated_at": null,
+ "object": "member"
+ },
+ "program": {
+ "id": "lprg_128f58429f4c4bf7b2",
+ "name": "AnnualProgram",
+ "status": "ACTIVE",
+ "metadata": {},
+ "object": "program"
+ },
+ "cards": [
+ {
+ "member_role": "OWNER",
+ "created_at": "2026-06-11T15:59:41.303Z",
+ "card": {
+ "id": "lcrd_128f962dbd8c4ba5df",
+ "card_definition_id": "lcdef_128f495f720c4bec8c",
+ "card_type": "INDIVIDUAL",
+ "code": "SummerTime-7z8dWawICd",
+ "lifetime_bucket": {
+ "points": {
+ "total": 740,
+ "earned": 40,
+ "added": 700,
+ "purchased": 0,
+ "purchased_reversed": 0,
+ "subtracted": 30,
+ "expired": 300,
+ "spent": 250,
+ "refunded": 0,
+ "returned": 0,
+ "locked": 250,
+ "unlocked": 250
+ },
+ "pending_points": {
+ "total": 50,
+ "activated": 40,
+ "canceled": 0
+ }
+ },
+ "balance": {
+ "points": 160,
+ "pending_points": 10
+ },
+ "next_expiration": {
+ "points": 160,
+ "date": "2026-08-08"
+ },
+ "next_activation": {
+ "points": 10,
+ "type": "PERIOD_BASED",
+ "date": "2026-07-20"
+ },
+ "object": "card"
+ },
+ "object": "member_card"
+ },
+ {
+ "member_role": "OWNER",
+ "created_at": "2026-06-11T15:59:41.303Z",
+ "card": {
+ "id": "lcrd_128f962dbd8c4ba5e0",
+ "card_definition_id": "lcdef_128f49963c0c4becb7",
+ "card_type": "INDIVIDUAL",
+ "code": "AutumnTime-R02hVARx33",
+ "lifetime_bucket": {
+ "points": {
+ "total": 50,
+ "earned": 0,
+ "added": 50,
+ "purchased": 0,
+ "purchased_reversed": 0,
+ "subtracted": 0,
+ "expired": 0,
+ "spent": 0,
+ "refunded": 0,
+ "returned": 0,
+ "locked": 0,
+ "unlocked": 0
+ },
+ "pending_points": {
+ "total": 50,
+ "activated": 0,
+ "canceled": 0
+ }
+ },
+ "balance": {
+ "points": 50,
+ "pending_points": 50
+ },
+ "next_expiration": {
+ "points": 50,
+ "date": "2026-12-23"
+ },
+ "next_activation": {
+ "points": 50,
+ "type": "FIXED_DATES",
+ "date": "2026-12-23"
+ },
+ "object": "card"
+ },
+ "object": "member_card"
+ },
+ {
+ "member_role": "OWNER",
+ "created_at": "2026-06-11T15:59:41.303Z",
+ "tier_progress": {
+ "current": {
+ "id": "lt_128f4b46400c4bedfb",
+ "name": "Bronze",
+ "activated_at": "2026-07-13T17:22:22.626Z",
+ "expires_at": null,
+ "points": {
+ "current": 0,
+ "min": 0,
+ "max": 99
+ }
+ },
+ "deferred": [],
+ "tier_structure": {
+ "id": "lts_128f4b460e4c4bedf6",
+ "object": "tier_structure"
+ },
+ "risks": [],
+ "opportunities": [
+ {
+ "valid_until": null,
+ "tier_id": "lt_128f4b46558c4bedff",
+ "points": 100
+ },
+ {
+ "valid_until": null,
+ "tier_id": "lt_128f4b466a0c4bee03",
+ "points": 200
+ },
+ {
+ "valid_until": null,
+ "tier_id": "lt_128f4b46808c4bee07",
+ "points": 300
+ }
+ ],
+ "object": "member_tier_progress"
+ },
+ "card": {
+ "id": "lcrd_128f962dbd8c4ba5e1",
+ "card_definition_id": "lcdef_128f4a88414c4bed69",
+ "card_type": "INDIVIDUAL",
+ "code": "AnnualTime-7M7ShPGfme",
+ "lifetime_bucket": {
+ "points": {
+ "total": 1250,
+ "earned": 250,
+ "added": 1000,
+ "purchased": 0,
+ "purchased_reversed": 0,
+ "subtracted": 1000,
+ "expired": 0,
+ "spent": 150,
+ "refunded": 0,
+ "returned": 0,
+ "locked": 10,
+ "unlocked": 10
+ },
+ "pending_points": {
+ "total": 300,
+ "activated": 250,
+ "canceled": 0
+ }
+ },
+ "balance": {
+ "points": 100,
+ "pending_points": 50
+ },
+ "next_expiration": null,
+ "next_activation": {
+ "points": 50,
+ "type": "PERIOD_BASED",
+ "date": "2026-07-20"
+ },
+ "object": "card"
+ },
+ "object": "member_card"
+ }
+ ],
+ "object": "membership"
+}
+```
+
+#### Member
+
+The `member` object (lines 2–11 of the response above) holds the profile data you use to identify the member in your system and reflect their status in the program:
+- `id`: The loyalty member ID assigned by Voucherify (line 3). Store it alongside your own customer record and pass it back on subsequent calls to this endpoint.
+- `customer_id`: Links the member to a Voucherify customer (line 4), which you can use to correlate loyalty activity with the customer profile in your CRM.
+- `program_id`: Identifies the loyalty program the member belongs to (line 5). Combined with the top-level `program` object, this lets you support integrations that manage several programs at once.
+- `status`: Shows whether the member is `ACTIVE` or `INACTIVE` (line 6). Use it to gate loyalty features in your UI. For example, hide the "Redeem points" action for inactive members.
+- `metadata`: Returns any custom attributes you added to the member (line 7), such as an internal loyalty tier from another system or the enrollment channel.
+- `created_at` and `updated_at` are timestamps for when the member was created and last modified (lines 8, 9).
+
+#### Points
+
+With the Get membership endpoint you can create a member profile that lists points available to a member. Each of the member's loyalty cards is returned in the `cards` array (starting at line 19). The details regarding points are stored in the following objects (referenced here from the first card, `SummerTime-7z8dWawICd`):
+- `lifetime_bucket`: Stores historical details regarding `points` and `pending_points` (lines 29–47). For example, you can use the data to show how many points were `earned`, `spent`, `expired`, and so on.
+- `balance`: Stores the details about the current number of available points (`balance.points`) for spending and the current number of `pending_points` (lines 50, 51).
+- `next_expiration`: Stores the details about the number of points that are about to expire and the nearest date (lines 54, 55). If you configured point expiration, you can use this data to nudge your members to spend the points before they expire.
+- `next_activation`: Stores the details about the date and number of points that are about to be activated from the pending state as well as the type of the activation (lines 58–60).
+
+#### Tiers
+
+If your program runs loyalty tiers, you can also use the Get membership endpoint to return the details about the current tier progress for a given loyalty card.
+
+Use the data from the `tier_progress` object on the relevant card in the `cards` array (lines 115–151 of the response above, on the third card `AnnualTime-7M7ShPGfme`) to build a member profile that will display the active tier, and also risks and opportunities:
+- `current`: Returns the loyalty tier the member is currently on, including the tier ID, name, when the member achieved it and the point range (lines 116–126).
+- `risks`: Returns data for tier expiration and downgrade (line 132). In this example the array is empty, meaning the member is not scheduled to lose their current tier.
+- `opportunities`: Returns the number of points the member must earn to reach higher tiers (lines 133–149).
+
+### List transactions
+
+Use the [GET List transactions](/api-reference/programs/list-card-transactions) endpoint to extend the member profile in your system with details about all point movements on a member's card. If your loyalty program uses several card definitions (point wallets), create a separate transaction list for each card that's governed by a given wallet.
+
+The list card transactions endpoint lists many types (`type`) of transactions to match your business case. The transactions list the date of occurrence (`created_at`), number of points affected (`points` object), and other details. In a simple loyalty program, the key transactions types are:
+- `POINTS_SPENT_ON_REWARD`: Points spent to buy a reward. The `details` object lists the number of points and the `reward.id` (lines 11–24)
+- `PENDING_POINTS_ACTIVATED`: Points that were in a pending state, but they were activated manually or automatically as set in the card definition configuration (the `details` object in lines 38–47).
+- `PENDING_POINTS_ADDED`: Pending points that were added to the loyalty card under the point wallet settings (the `details` object in lines 61–76).
+- `POINTS_EXPIRED`: Points that expired under the card definition settings (the `details` object in lines 90–108).
+- `POINTS_EARNED`: Points earned and instantly added to the loyalty card (the `details` object in the Point earned example, line 11–24).
+
+
+
+```json List card transactions response wrap expandable lines highlight={11-24,38-47,61-76,90-108}
+{
+ "data": [
+ {
+ "id": "lctx_129748dbafe65ae86d",
+ "card_id": "lcrd_128f962dbd8c4ba5e1",
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "member_id": "lmbr_128f962dbc8c4ba5dc",
+ "card_definition_id": "lcdef_128f4a88414c4bed69",
+ "card_type": "INDIVIDUAL",
+ "type": "POINTS_SPENT_ON_REWARD",
+ "details": {
+ "reason": "Points spent on reward",
+ "rejection": null,
+ "metadata": {},
+ "points": {
+ "total": 150
+ },
+ "reward": {
+ "id": "lrew_128f4c6710947c85d1"
+ },
+ "reward_transaction": {
+ "id": "lrtx_129748dbafe65ae86e"
+ }
+ },
+ "status": "APPROVED",
+ "created_at": "2026-06-17T15:29:43.104Z",
+ "updated_at": "2026-06-17T15:29:45.622Z",
+ "object": "card_transaction"
+ },
+ {
+ "id": "lctx_128f9a03c6cc4ba8e7",
+ "card_id": "lcrd_128f962dbd8c4ba5e1",
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "member_id": "lmbr_128f962dbc8c4ba5dc",
+ "card_definition_id": "lcdef_128f4a88414c4bed69",
+ "card_type": "INDIVIDUAL",
+ "type": "PENDING_POINTS_ACTIVATED",
+ "details": {
+ "reason": "Manual points activation",
+ "rejection": null,
+ "metadata": {},
+ "points": {
+ "total": 400,
+ "date": "2026-06-21",
+ "type": "PERIOD_BASED"
+ }
+ },
+ "status": "APPROVED",
+ "created_at": "2026-06-11T16:16:26.907Z",
+ "updated_at": "2026-06-11T16:16:27.291Z",
+ "object": "card_transaction"
+ },
+ {
+ "id": "lctx_128f9821be4fd14efd",
+ "card_id": "lcrd_128f962dbd8c4ba5e1",
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "member_id": "lmbr_128f962dbc8c4ba5dc",
+ "card_definition_id": "lcdef_128f4a88414c4bed69",
+ "card_type": "INDIVIDUAL",
+ "type": "PENDING_POINTS_ADDED",
+ "details": {
+ "reason": "AnnualProgram / EarningRule-OrderPaid",
+ "rejection": null,
+ "metadata": {
+ "event_id": "evcus_128f981fced47cbe9b",
+ "member_id": "lmbr_128f962dbc8c4ba5dc",
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "earning_item_id": "lernei_128f48ee3fcc4bec33",
+ "earning_rule_id": "lern_128f48ee44cc4bec34"
+ },
+ "points": {
+ "total": 400,
+ "date": "2026-06-21",
+ "type": "PERIOD_BASED"
+ }
+ },
+ "status": "APPROVED",
+ "created_at": "2026-06-11T16:08:13.305Z",
+ "updated_at": "2026-06-11T16:08:14.170Z",
+ "object": "card_transaction"
+ },
+ {
+ "id": "lctx_129a515e9aa3f9dd93",
+ "card_id": "lcrd_128f962dbd8c4ba5df",
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "member_id": "lmbr_128f962dbc8c4ba5dc",
+ "card_definition_id": "lcdef_128f495f720c4bec8c",
+ "card_type": "INDIVIDUAL",
+ "type": "POINTS_EXPIRED",
+ "details": {
+ "reason": "Points expired automatically",
+ "rejection": null,
+ "metadata": {},
+ "points": {
+ "total": 50
+ },
+ "date": "2026-06-09",
+ "buckets": [
+ {
+ "id": "lcpeb_1299ec455b625c31e1",
+ "points": {
+ "total": 50
+ },
+ "expiration_date": "2026-06-09",
+ "expiration_type": "ROLLING_EXPIRATION"
+ }
+ ]
+ },
+ "status": "APPROVED",
+ "created_at": "2026-06-10T00:02:20.906Z",
+ "updated_at": "2026-06-10T00:02:20.975Z",
+ "object": "card_transaction"
+ }
+ ],
+ "cursor": {
+ "next": "lcrsctx_12989e71c62b6d5baf",
+ "expires_at": "2026-06-18T16:32:07.896Z"
+ },
+ "object": "list"
+}
+```
+
+```json Point earned response wrap lines expandable highlight={11-25}
+{
+ "data": [
+ {
+ "id": "lctx_1298a2ae5ba25c6454",
+ "card_id": "lcrd_1298a287482b6d5e90",
+ "program_id": "lprg_1298a2068ad09df2dc",
+ "member_id": "lmbr_1298a28746eb6d5e8d",
+ "card_definition_id": "lcdef_1298a22790509df2f8",
+ "card_type": "INDIVIDUAL",
+ "type": "POINTS_EARNED",
+ "details": {
+ "reason": "Pointexpire / EXPIRE_EARNING_RULE",
+ "rejection": null,
+ "metadata": {
+ "event_id": "evcus_1298a2abb06b6d5ec2",
+ "member_id": "lmbr_1298a28746eb6d5e8d",
+ "program_id": "lprg_1298a2068ad09df2dc",
+ "earning_item_id": "lernei_1298a23b9f509df311",
+ "earning_rule_id": "lern_1298a23baf509df312"
+ },
+ "points": {
+ "total": 50,
+ "expiration_date": "2026-06-19"
+ }
+ },
+ "status": "APPROVED",
+ "created_at": "2026-06-18T16:40:38.510Z",
+ "updated_at": "2026-06-18T16:40:39.402Z",
+ "object": "card_transaction"
+ }
+ ],
+ "cursor": null,
+ "object": "list"
+}
+```
+
+
+
+### List reward purchases
+
+Use the [GET List reward purchases](/api-reference/programs/list-member-reward-purchases) endpoint to show your members the rewards they have purchased. This endpoint lists purchases for all cards the member has.
+
+The `details` (lines 12–33 and 47–68) object lists more information about the reward purchase, like the number of points spent or the reward `type`.
+
+```json List reward purchases response lines wrap highlight={12-33,47-68}
+{
+ "data": [
+ {
+ "id": "lrtx_1299a9ded817f57b90",
+ "card_id": "lcrd_128f962dbd8c4ba5df",
+ "card_transaction_id": "lctx_1299a9ded817f57b8f",
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "member_id": "lmbr_128f962dbc8c4ba5dc",
+ "reward_id": "lrew_128f4cefbad47c863e",
+ "status": "APPROVED",
+ "type": "PURCHASE",
+ "details": {
+ "reason": "Points spent on reward",
+ "rejection": null,
+ "metadata": {},
+ "points": {
+ "total": 250
+ },
+ "result": {
+ "reward": {
+ "id": "lrew_128f4cefbad47c863e",
+ "type": "MATERIAL"
+ },
+ "quantity": 1,
+ "material": {
+ "type": "PRODUCT",
+ "product": {
+ "id": "prod_128f4cd0a94c4bef25"
+ }
+ },
+ "digital": null
+ }
+ },
+ "created_at": "2026-06-19T11:50:32.033Z",
+ "updated_at": "2026-06-19T11:50:33.387Z",
+ "object": "reward_transaction"
+ },
+ {
+ "id": "lrtx_129748dbafe65ae86e",
+ "card_id": "lcrd_128f962dbd8c4ba5e1",
+ "card_transaction_id": "lctx_129748dbafe65ae86d",
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "member_id": "lmbr_128f962dbc8c4ba5dc",
+ "reward_id": "lrew_128f4c6710947c85d1",
+ "status": "APPROVED",
+ "type": "PURCHASE",
+ "details": {
+ "reason": "Points spent on reward",
+ "rejection": null,
+ "metadata": {},
+ "points": {
+ "total": 150
+ },
+ "result": {
+ "reward": {
+ "id": "lrew_128f4c6710947c85d1",
+ "type": "MATERIAL"
+ },
+ "quantity": 1,
+ "material": {
+ "type": "PRODUCT",
+ "product": {
+ "id": "prod_128f4c2edf547c859e"
+ }
+ },
+ "digital": null
+ }
+ },
+ "created_at": "2026-06-17T15:29:43.104Z",
+ "updated_at": "2026-06-17T15:29:44.542Z",
+ "object": "reward_transaction"
+ }
+ ],
+ "cursor": null,
+ "object": "list"
+}
+```
+
+## Fulfillment
+
+Your loyalty program needs a way for your members to spend the loyalty points they've earned. In a typical loyalty program, members can spend points to:
+- Use the points as currency to pay for their orders.
+- Purchase rewards.
+
+### Pay with points
+
+
+
+ Prerequisite: Settings of pay with points in the point wallet
+
+ The point-to-currency exchange ratio is defined in the point wallet that governs the behavior of the loyalty card.
+
+
+
+To allow your members to use points as currency and pay for their purchases, you'll need two endpoints:
+- [POST Create order](/api-reference/orders/create-order "Create order API reference page") to create an order in Voucherify.
+- [POST Pay for an order with points](/api-reference/programs/pay-for-an-order-with-points "Pay for an order with points API reference") to use the existing order ID in this endpoint.
+
+
+
+ Qualifying, validating, and redeeming incentives
+
+ If you want to combine your loyalty program with [qualification](/api-reference/qualifications/check-eligibility), [validation](/api-reference/validations/validate-stackable-discounts), and [redemption](/api-reference/redemptions/redeem-stackable-discounts) of incentives, these should happen before the POST Pay with points endpoint is used.
+
+ If you use the redemption endpoint (POST `v1/redemptions`), it can create an order in Voucherify if an `order` object is passed. You can then skip the POST Create order endpoint, but you'll need to retrieve the order ID from the `v1/redemptions` response.
+
+
+
+The POST Pay for an order with points endpoint has:
+- Two required fields:
+ - The `card_id` string of the loyalty card (`lcrd_...`) whose points will be used in the transaction (line 2 in the examples).
+ - The `order` object that contains the `id` or `source_id` of the order to be paid (line 4).
+- Two optional fields:
+ - The `mode` string that defines if the request is used to simulate the transaction or to actually pay for the order (line 6). Pass the following values:
+ - `DRY_RUN` to perform a simulation of the transaction. No points are spent from the member loyalty card and no transaction records are created.
+ - `TRANSACTION` to create an actual transaction. Points are spent to lower the total amount of the order.
+ - The `payment_limit` object that defines a limit on the transaction by providing a `type` (line 6):
+ - `CARD_BALANCE`: Default setting that allows the automatic payment up to the maximum of the total balance of the loyalty card. This setting is used when no `payment_limit` object is sent.
+ - `POINTS_LIMIT`: Uses the `points_limit` object to define how many points will be spent in the transaction. In the example below, the amount to be spent equals `100` points (line 10). If the card has fewer points than the set value for `max`, all available points will be used.
+ - `AMOUNT_LIMIT`: Uses the `amount_limit` object to define how much of the order amount can be paid for with points. The `max` value is defined in the smallest currency amount (line 10), so `100` means \$1, for example.
+
+See the request examples below.
+
+
+
+ ```json Pay with points request: Card balance limit lines wrap expandable highlight={2,4,6,8}
+ {
+ "card_id": "lcrd_128f962dbd8c4ba5e1",
+ "order": {
+ "id": "ord_12b4cdf5f30c158825"
+ },
+ "mode": "TRANSACTION",
+ "payment_limit": {
+ "type": "CARD_BALANCE"
+ }
+ }
+ ```
+
+ ```json Pay with points request: Point limit lines wrap expandable highlight={2,4,6,8,10}
+ {
+ "card_id": "lcrd_128f962dbd8c4ba5e1",
+ "order": {
+ "id": "ord_12b4cdf5f30c158826"
+ },
+ "mode": "TRANSACTION",
+ "payment_limit": {
+ "type": "POINTS_LIMIT",
+ "points_limit": {
+ "max": 100
+ }
+ }
+ }
+ ```
+
+ ```json Pay with points request: Amount limit lines wrap expandable highlight={2,4,6,8,10}
+ {
+ "card_id": "lcrd_128f962dbd8c4ba5e1",
+ "order": {
+ "id": "ord_12b4cdf5f30c158827"
+ },
+ "mode": "TRANSACTION",
+ "payment_limit": {
+ "type": "AMOUNT_LIMIT",
+ "amount_limit": {
+ "max": 2000
+ }
+ }
+ }
+ ```
+
+
+
+The response differs depending on the `mode` used:
+- `200` for the `DRY_RUN` mode.
+- `202` for the `TRANSACTION` mode. Usually, returns a `PENDING` transaction to be processed asynchronously.
+
+The table below describes how individual schema properties differ between the two execution response structures.
+
+| JSON Property | `DRY_RUN` mode (simulation) | `TRANSACTION` mode (live) | Notes |
+| :--- | :--- | :--- | :--- |
+| `status` | `"DRY_RUN"` | `"TRANSACTION_CREATED"` | Indicates the processing method used by Voucherify. |
+| `message` | `"Dry run mode. No transaction was created..."` | `"Pay with points transaction created"` | Returns a mode-specific descriptive system notification. |
+| `transaction.id` | *Omitted* | `"lotx_12b8dbf787c67de367"` | Unique identifier generated only for live, persistent records. |
+| `transaction.card_transaction_id` | `null` | `"lctx_12b8dbf787c67de366"` | Populates with a tracking ID during live balance changes. |
+| `transaction.status` | `"SIMULATED"` | `"PENDING"` | Reflects workflow state tracking (mock engine vs. active processing queue). |
+| `transaction.created_at` | *Omitted* | `"2026-07-13T17:22:19.296Z"` | Generated exclusively when the state transaction object is written to the database. |
+
+The transaction details regarding the point or amount limit and the actual number of points spent (or to be spent for the `DRY_RUN`) are returned in the `details.payment` object (lines 18–22).
+
+
+
+ ```json Pay with points response: Card balance type lines wrap expandable highlight={16-21}
+ {
+ "transaction": {
+ "id": "lotx_12b8861fdd0dd35462",
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "member_id": "lmbr_128f962dbc8c4ba5dc",
+ "card_id": "lcrd_128f962dbd8c4ba5e1",
+ "card_definition_id": "lcdef_128f4a88414c4bed69",
+ "card_transaction_id": "lctx_12b8861fdd0dd35461",
+ "order_id": "ord_12b4cdf5f30c158825",
+ "status": "PENDING",
+ "type": "PAY_WITH_POINTS",
+ "details": {
+ "reason": "Points spent on order payment",
+ "rejection": null,
+ "metadata": {},
+ "payment": {
+ "amount": 200,
+ "points_spent": 200,
+ "exchange_ratio": 1
+ }
+ },
+ "created_at": "2026-07-13T11:07:16.212Z",
+ "updated_at": null,
+ "object": "order_transaction"
+ },
+ "status": "TRANSACTION_CREATED",
+ "message": "Pay with points transaction created"
+ }
+ ```
+
+ ```json Pay with points response: Point limit type lines wrap expandable highlight={18-22}
+ {
+ "transaction": {
+ "id": "lotx_12b884c72b0dd352b9",
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "member_id": "lmbr_128f962dbc8c4ba5dc",
+ "card_id": "lcrd_128f962dbd8c4ba5e1",
+ "card_definition_id": "lcdef_128f4a88414c4bed69",
+ "card_transaction_id": "lctx_12b884c72b0dd352b8",
+ "order_id": "ord_12b4cdf5f30c158826",
+ "status": "PENDING",
+ "type": "PAY_WITH_POINTS",
+ "details": {
+ "reason": "Points spent on order payment",
+ "rejection": null,
+ "metadata": {
+ "points_limit": 12
+ },
+ "payment": {
+ "amount": 12,
+ "points_spent": 12,
+ "exchange_ratio": 1
+ }
+ },
+ "created_at": "2026-07-13T11:01:23.245Z",
+ "updated_at": null,
+ "object": "order_transaction"
+ },
+ "status": "TRANSACTION_CREATED",
+ "message": "Pay with points transaction created"
+ }
+ ```
+
+ ```json Pay with points response: Amount limit type lines wrap expandable highlight={18-22}
+ {
+ "transaction": {
+ "id": "lotx_12b8939fd78dd3657f",
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "member_id": "lmbr_128f962dbc8c4ba5dc",
+ "card_id": "lcrd_128f962dbd8c4ba5e1",
+ "card_definition_id": "lcdef_128f4a88414c4bed69",
+ "card_transaction_id": "lctx_12b8939fd78dd3657e",
+ "order_id": "ord_12b4cdf5f30c158827",
+ "status": "PENDING",
+ "type": "PAY_WITH_POINTS",
+ "details": {
+ "reason": "Points spent on order payment",
+ "rejection": null,
+ "metadata": {
+ "amount_limit": 2000
+ },
+ "payment": {
+ "amount": 2000,
+ "points_spent": 2000,
+ "exchange_ratio": 1
+ }
+ },
+ "created_at": "2026-07-13T12:06:15.135Z",
+ "updated_at": null,
+ "object": "order_transaction"
+ },
+ "status": "TRANSACTION_CREATED",
+ "message": "Pay with points transaction created"
+ }
+ ```
+
+
+
+If the loyalty card has no points, Voucherify returns error code `423` – "Card balance is zero".
+
+```json Pay with points response: No balance – error 423 lines wrap expandable highlight={}
+ {
+ "code": 423,
+ "key": "zero_card_balance",
+ "message": "Card balance is zero",
+ "details": "Operation requires a positive card balance",
+ "request_id": "v-12b8894b3ec1a59873"
+ }
+```
+
+### Purchase reward
+
+Use the [POST Purchase reward](/api-reference/programs/purchase-a-reward-with-points) endpoint to create a store where your loyalty program members can buy rewards.
+
+In the request body, send the reward ID (`reward_id`) to be purchased. Since rewards are assigned to specific card definitions, Voucherify will subtract the required number of points from a loyalty card that's governed by the card definition.
+
+Use the `details` object (response lines 11–19) to display how many points were spent on the reward purchase. If the loyalty program uses several card definitions, use the `card_id` (line 4) to tie the purchase to a specific loyalty card.
+
+
+
+```json Purchase reward: Request lines wrap
+{
+ "reward_id": "lrew_128f4cefbad47c863e"
+}
+```
+
+```json Purchase reward: Response lines wrap expandable highlight={4,11-19}
+{
+ "transaction": {
+ "id": "lrtx_1299a9ded817f57b90",
+ "card_id": "lcrd_128f962dbd8c4ba5df",
+ "card_transaction_id": "lctx_1299a9ded817f57b8f",
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "member_id": "lmbr_128f962dbc8c4ba5dc",
+ "reward_id": "lrew_128f4cefbad47c863e",
+ "status": "PENDING",
+ "type": "PURCHASE",
+ "details": {
+ "reason": "Points spent on reward",
+ "rejection": null,
+ "metadata": {},
+ "points": {
+ "total": 250
+ },
+ "result": null
+ },
+ "created_at": "2026-06-19T11:50:32.033Z",
+ "updated_at": null,
+ "object": "reward_transaction"
+ },
+ "status": "TRANSACTION_CREATED",
+ "message": "Reward purchase transaction created"
+}
+```
+
+
+
+## Cancellation
+
+Your loyalty program should also support situations when a member wants to stop participating in the program, have their member profile deleted altogether, or cases when you need to temporarily suspend member activity when suspecting program fraud.
+
+### Deactivate
+
+Use the [POST Deactivate member](/api-reference/programs/deactivate-program-member) endpoint to suspend a member's participation in the program.
+
+A suspended member can't earn points or spend them on rewards or orders.
+
+
+
+ Activating member again
+
+ If you need to reactivate the member, so that they can participate in the loyalty program again, use the [POST Activate member](/api-reference/programs/activate-program-member) endpoint.
+
+
+
+### Delete
+
+If you need a mechanism for deleting member data, use the [DELETE Member](/api-reference/programs/delete-program-member) endpoint to soft-delete the member and all their associated cards within the program.
+
+
+
+ Customer data in Voucherify
+
+ The DELETE Member endpoint deletes only the data regarding the member profile. However, the member still has a customer profile in Voucherify.
+
+ Read how to [delete customer](/prepare/customers#delete-customers) data from Voucherify.
+
+
+
diff --git a/documentation/guides/loyalty-v2-take-to-production.mdx b/documentation/guides/loyalty-v2-take-to-production.mdx
new file mode 100644
index 000000000..7228c7d5a
--- /dev/null
+++ b/documentation/guides/loyalty-v2-take-to-production.mdx
@@ -0,0 +1,133 @@
+---
+title: "Take loyalty v2 to production"
+description: "Move your Voucherify Loyalty v2 integration from Sandbox to Production, and solve most frequent issues"
+keywords: ["loyalty integration", "production", "go-live", "troubleshooting", "voucherify v2"]
+tag: "NEW"
+---
+
+Once your integration is ready as described in [Integrate loyalty v2](/guides/loyalty-v2-integrate), you can prepare your environment for a successful launch.
+
+## Going to production
+
+Moving your Voucherify loyalty v2 integration from a Sandbox environment to a live production environment requires more than simply swapping your API keys. Because Voucherify projects are completely isolated from one another, your configuration data does not automatically migrate. You must recreate your entire program setup from scratch in your live Production project before routing live customer traffic.
+
+Use this step-by-step checklist to ensure a seamless launch and avoid transaction failures.
+
+
+
+
+ Use your production project or create a dedicated one for your live store data.
+
+ Go to **Project settings** > **Application keys** in the production project to retrieve your production credentials (`X-App-Id` and `X-App-Token`). Update your infrastructure environment variables with these live keys. Keep application keys on the server side only. See [Authentication](/guides/authentication) and [Security](/guides/security).
+
+ Point your system to the correct regional API base URL from [API overview](/guides/api-overview#choose-the-right-api-endpoint). Confirm the production project has the `LOYALTY_V2` entitlement.
+
+
+ Voucherify Sandbox and Production projects share zero database records. Attempting to pass production keys along with sandbox resource IDs (such as sandbox program IDs or member IDs) will cause the Voucherify API to return `404 Resource Not Found` errors.
+
+
+
+
+
+
+ Before your live system sends transaction data to the Voucherify API, you must manually rebuild your custom data structures in the new production project:
+ - Re-define all **Metadata schemas** used for custom attributes on point wallets, loyalty members, orders, and other data.
+ - Re-create all **Custom event schemas** that trigger loyalty earning rules (such as writing product reviews or downloading your mobile app).
+
+
+
+
+
+ Ensure your live customer profiles and store products exist inside the new production project so transactions map correctly:
+ - Import your live customer database into the production project using a CSV upload or the [POST Import and Update Customers](/api-reference/customers/import-and-update-customers-using-csv) API endpoint.
+ - If you use a CDP or CRM system, check if customer data is synchronized correctly.
+ - Synchronize your product catalog, matching your online store or POS menu item IDs to the Voucherify product engine fields (`source_id`).
+
+
+
+
+
+ If your loyalty program is going to issue discount vouchers or gift card credits as rewards or benefits, create relevant Voucherify campaigns.
+
+
+
+
+
+ Go to the **Loyalty hub** > **Programs** in the production project to rebuild your loyalty architecture:
+ - Set up your point wallets and define your tier structures exactly as you designed them in your Sandbox project.
+ - Re-create your earning rules, rewards, and benefits.
+ - Once verified, set the program status to `ACTIVE`.
+
+ Copy the new live loyalty program ID (`lprg_...`) and update your backend environment data. Your code must use this new live identifier for all member-related API calls.
+
+
+
+
+
+ Before turning the real customer traffic on the production project, perform a final transaction walkthrough using a controlled production member profile.
+
+ Check the following:
+ 1. Enrollment: Create a test live member using a production customer ID. Confirm get-before-create and `409 member_already_exists` handling.
+ 2. Earning: Submit a live order with a `PAID` status and verify that points are successfully added to the member's wallet balance.
+ 3. Discovery: Call examine earnings and examine rewards for the test member.
+ 4. Redemption: Purchase a low-cost or test reward and poll until the reward transaction is `APPROVED` or `REJECTED`.
+ 5. Pay with points: Run a `DRY_RUN`, then a live `TRANSACTION` payment, and poll [list member order payments](/api-reference/programs/list-member-order-payments) until the status is terminal.
+ 6. Profile: Refresh [GET membership](/api-reference/programs/get-program-membership) and confirm balances, pending points, and transaction history.
+
+
+
+
+## Troubleshooting
+
+Resolve operational friction points, API structural anomalies, and edge cases commonly encountered by system integrators during the deployment.
+
+
+
+
+
+ The Voucherify API returns an HTTP `404 Not Found` response code if the identifiers provided in the path parameters do not match database entries.
+
+ Solutions:
+ - ID confusion: Check if the client request payload has a Voucherify loyalty program member ID (`lmbr_...`) rather than a standard Voucherify Customer ID (`cust_...`) when querying member-specific states like `GET member`. This also applies to the new IDs of the recreated loyalty v2 program in your production environment.
+ - Cross-project scope separation: Verify that the request headers (`X-App-Id` and `X-App-Token`) point to the identical dashboard environment containing the referenced loyalty program ID (`lprg_...`).
+
+
+
+ The Voucherify API returns an HTTP `409 Conflict` response code if a resource already exists in a loyalty program.
+
+ The most frequent case is an attempt to enroll a customer in a loyalty program when that customer is already a member of that program.
+
+ Solutions:
+ - Verify ID uniqueness: Ensure that the integration request payload contains a unique, non-registered customer ID that is not currently associated with the program. If you use several loyalty programs, verify that the program IDs are not duplicated in the request.
+ - Implement get-before-create (read-first pattern): Before registering a customer, query the Voucherify memberships API (`GET /v2/loyalties/programs/{programId}/memberships/{customerId}`) to check if the customer profile already is a member of the target loyalty program.
+ - Graceful client-side redirection (soft-catch): Intercept the HTTP `409` error code on your backend integration layer. Instead of returning an error to the user interface, treat the conflict as a validation that the user is registered. Retrieve their existing active loyalty member data and transition the user interface directly to the active loyalty program dashboard.
+
+
+
+
+ The Voucherify API returns an HTTP `423 Locked` response code if you attempt to perform an action on a resource that is restricted due to the resource's current status, active validity rules, or balance limitations.
+
+ Solutions:
+ - Reward validity window: Verify that you are attempting to redeem or purchase the reward within the reward's scheduled active time frame. If the transaction occurs outside of the reward's configured validity dates and hours, Voucherify blocks the request. You can adjust the active dates of the reward in the **Loyalty hub**.
+ - **Zero card balance**: Check if the loyalty card has a positive point balance before pay with points or reward purchase. If the balance is zero, the operation fails with `zero_card_balance` until points are earned or added.
+
+
+
+
+
+ The Voucherify database assigns loyalty card code fields asynchronously. Immediately after triggering POST Create member, the response payload may expose `cards[].card.code` as a `null` value.
+
+ Solutions:
+ - Avoid immediate code dependency: Never configure client-side user interfaces to rely on a synchronous card code return when processing post-enrollment UI views.
+ - Fallback payload strategies: Rely cleanly on the unique Voucherify loyalty member ID (`lmbr_...`) or the card ID (`lcrd_...`) for all secondary client-side calculations.
+
+
+
+
+ Use **Activity** tabs in loyalty v2 components, like point wallets, members, rewards, to debug any errors or misconfigurations. The **Activity** tabs list all events that occurred for a given resource, including the request and response bodies.
+
+ Additionally, use the [Audit log](/analyze/audit-logs) to check the full history of your Voucherify project.
+
+
+
+
diff --git a/documentation/guides/transfer-loyalty-points.mdx b/documentation/guides/transfer-loyalty-points.mdx
index 5d001d2bd..4cced8ea3 100644
--- a/documentation/guides/transfer-loyalty-points.mdx
+++ b/documentation/guides/transfer-loyalty-points.mdx
@@ -2,8 +2,21 @@
title: "Transfer loyalty points"
description: "See how to transfer points between loyalty cards."
keywords: ['transfer', 'combine', 'multiple', 'reward']
+tag: "SUNSET"
---
+
+
+ Sunset content: Loyalty v1
+
+ This page covers a topic for loyalty v1.
+
+ The current standard loyalty solution offered by Voucherify is loyalty v2.
+
+ Go to [Loyalty v2 overview](/build/loyalty-overview) to learn more.
+
+
+
This guide shows a workflow for combining loyalty points from multiple cards. A common use case is to allow a customer to redeem a reward if the number of points on a single card is not enough.
* Points can be transferred between cards in the same and different loyalty campaigns.
diff --git a/documentation/images/docs/loyalty-point-flow.png b/documentation/images/docs/loyalty-point-flow.png
new file mode 100644
index 000000000..0f6e0af10
Binary files /dev/null and b/documentation/images/docs/loyalty-point-flow.png differ
diff --git a/documentation/openapi/campaigns.json b/documentation/openapi/campaigns.json
index ba82e66f5..9e8f41b2f 100644
--- a/documentation/openapi/campaigns.json
+++ b/documentation/openapi/campaigns.json
@@ -42,7 +42,7 @@
"Campaigns"
],
"summary": "Create Campaign",
- "description": "Method to create a batch of vouchers aggregated in one campaign. You can choose a variety of voucher types and define a unique pattern for generating codes. \n\n\n> 📘 Global uniqueness\n>\n> All campaign codes are unique across the whole project. Voucherify will not allow you to generate 2 campaigns with the same coupon code. \n\n> 🚧 Code generation status\n>\n> This is an asynchronous action; you can't read or modify a newly created campaign until the code generation is completed. See the `creation_status` field in the [campaign object](/api-reference/campaigns/campaign-object) description.",
+ "description": "Method to create a batch of vouchers aggregated in one campaign. You can choose a variety of voucher types and define a unique pattern for generating codes. \n\n\n\n\nGlobal uniqueness\n\nAll campaign codes are unique across the whole project. Voucherify will not allow you to generate 2 campaigns with the same coupon code.\n\n\n\n\n\nCode generation status\n\nThis is an asynchronous action; you can't read or modify a newly created campaign until the code generation is completed. See the `creation_status` field in the [campaign object](/api-reference/campaigns/campaign-object) description.\n\n",
"parameters": [],
"security": [
{
@@ -1395,7 +1395,7 @@
"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. \n\nFields other than the ones listed in the request body won't be modified. Even if provided, they will be silently skipped. \n\n> 🚧 Vouchers will be affected\n>\n> This method will update vouchers aggregated in the campaign. It will affect all vouchers that are not published or redeemed yet.",
+ "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. \n\nFields other than the ones listed in the request body won't be modified. Even if provided, they will be silently skipped. \n\n\n\nVouchers will be affected\n\nThis method will update vouchers aggregated in the campaign. It will affect all vouchers that are not published or redeemed yet.\n\n",
"parameters": [],
"security": [
{
@@ -2156,7 +2156,7 @@
"Campaigns"
],
"summary": "Import Vouchers to Campaign by CSV",
- "description": "Imports vouchers to an **existing** campaign. \n\n\nThe CSV file has to include headers in the first line. \n\nCurl Example\n\n```cURL\ncurl -X **POST** \\\n https://api.voucherify.io/v1/campaigns/TEST-CAMPAIGN/importCSV \\\n -F file=@/path/to/campaigns.csv \\\n -H \"X-App-Id: c70a6f00-cf91-4756-9df5-47628850002b\" \\\n -H \"X-App-Token: 3266b9f8-e246-4f79-bdf0-833929b1380c\"\n```\n\nYou can import values for the following fields: `Code` (**required**), `Category`, `Active`. In a gift cards import, you can also include the current card balance using the `Gift Amount` header and the amount that was redeemed using the `Redeemed Amount` header. In a loyalty cards import, you can also include the current loyalty card score in points using the `Loyalty Points` header. Remaining CSV columns will be mapped to metadata properties. \n\nDiscount type, time limits, and validation rules will be taken from the [campaign object](/api-reference/campaigns/campaign-object) settings. \n\n\n| **Active** | **Code** | **Loyalty Points** | **Gift Amount** | **Redeemed Amount** | **Redeemed Quantity** | **Category** | **Custom_metadata_property** |\n|---|---|---|---|---|---|---|---|\n| Use `true` or `false` to enable or disable the voucher; this flag can be used to turn off the ability to redeem a voucher even though it is within the campaign's start/end validity timeframe. | The unique voucher code. | The number of points to be added to the loyalty card. If you leave this undefined, then the initial number of points will be set according to the campaign settings.
Context: `LOYALTY_PROGRAM` | The initial gift card balance.
Context: `GIFT_VOUCHERS` | The amount that was redeemed from the available balance on a gift card. | The number of times the voucher has been redeemed. | A custom tag for the voucher to help you filter codes; you can either import the category name or a unique Voucherify-assigned category ID. | Any additional data that you would like to store for the given loyalty card as a Custom attribute. Remember to define the metadata schema in the Dashboard prior to importing codes. |\n|\n\n> 📘 Active\n>\n> The CSV file is allowed in two versions; either with or without a column titled `Active`. It indicates whether the voucher is enabled after the import event. \n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
+ "description": "Imports vouchers to an **existing** campaign. \n\n\nThe CSV file has to include headers in the first line. \n\nCurl Example\n\n```cURL\ncurl -X **POST** \\\n https://api.voucherify.io/v1/campaigns/TEST-CAMPAIGN/importCSV \\\n -F file=@/path/to/campaigns.csv \\\n -H \"X-App-Id: c70a6f00-cf91-4756-9df5-47628850002b\" \\\n -H \"X-App-Token: 3266b9f8-e246-4f79-bdf0-833929b1380c\"\n```\n\nYou can import values for the following fields: `Code` (**required**), `Category`, `Active`. In a gift cards import, you can also include the current card balance using the `Gift Amount` header and the amount that was redeemed using the `Redeemed Amount` header. In a loyalty cards import, you can also include the current loyalty card score in points using the `Loyalty Points` header. Remaining CSV columns will be mapped to metadata properties. \n\nDiscount type, time limits, and validation rules will be taken from the [campaign object](/api-reference/campaigns/campaign-object) settings. \n\n\n| **Active** | **Code** | **Loyalty Points** | **Gift Amount** | **Redeemed Amount** | **Redeemed Quantity** | **Category** | **Custom_metadata_property** |\n|---|---|---|---|---|---|---|---|\n| Use `true` or `false` to enable or disable the voucher; this flag can be used to turn off the ability to redeem a voucher even though it is within the campaign's start/end validity timeframe. | The unique voucher code. | The number of points to be added to the loyalty card. If you leave this undefined, then the initial number of points will be set according to the campaign settings.
Context: `LOYALTY_PROGRAM` | The initial gift card balance.
Context: `GIFT_VOUCHERS` | The amount that was redeemed from the available balance on a gift card. | The number of times the voucher has been redeemed. | A custom tag for the voucher to help you filter codes; you can either import the category name or a unique Voucherify-assigned category ID. | Any additional data that you would like to store for the given loyalty card as a Custom attribute. Remember to define the metadata schema in the Dashboard prior to importing codes. |\n|\n\n\n\nActive\n\nThe CSV file is allowed in two versions; either with or without a column titled `Active`. It indicates whether the voucher is enabled after the import event.\n\n\n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
"parameters": [],
"security": [
{
@@ -2231,7 +2231,7 @@
"Campaigns"
],
"summary": "Examine Campaign Qualification",
- "description": "\n> ❗️ Deprecated \n>\n> This endpoint represents the deprecated version of the API responsible for qualification, and we do not recommend using it. The new [Qualifications API](/api-reference/qualifications/check-eligibility) introduces additional features and improvements while maintaining backward compatibility. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint. \n\nThe method can be used for sending a request to display all campaigns qualified to the given customer and context (e.g., order). \n\nThe maximum number of **returned campaigns is 50**.\n\n## What campaign types are included in the response?\n\n- `DISCOUNT_COUPONS`\n- `GIFT_VOUCHERS`\n- `REFERRAL_PROGRAM`\n\n## What's excluded?\n\nA checking logic will be run only among campaigns and will ignore _generic (standalone) vouchers_. For generic (standalone) vouchers, you should run a [dedicated endpoint](/api-reference/vouchers/examine-voucher-qualification) for searching and identifing vouchers. \n\n## Subsequent Steps\n\nAs a recommended subsequent step after selecting a qualified campaign is to publish a voucher code from that campaign. The [API method for publishing](/api-reference/publications/create-publication) will return a unique code which will belong to a given customer.\n\n## Sample use case\n\nAs a sample use case, you can imagine a requirement of displaying coupons (grouped in campaigns) that a customer is eligible to use. The customer should get assigned to the particular voucher from the campaign and then may redeem that particular code when he/she places an order.\n\n[Read](/guides/checking-eligibility) about Qualification API limits before you start.",
+ "description": "\n\n\nDeprecated\n\nThis endpoint represents the deprecated version of the API responsible for qualification, and we do not recommend using it. The new [Qualifications API](/api-reference/qualifications/check-eligibility) introduces additional features and improvements while maintaining backward compatibility. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint.\n\n\n\nThe method can be used for sending a request to display all campaigns qualified to the given customer and context (e.g., order). \n\nThe maximum number of **returned campaigns is 50**.\n\n## What campaign types are included in the response?\n\n- `DISCOUNT_COUPONS`\n- `GIFT_VOUCHERS`\n- `REFERRAL_PROGRAM`\n\n## What's excluded?\n\nA checking logic will be run only among campaigns and will ignore _generic (standalone) vouchers_. For generic (standalone) vouchers, you should run a [dedicated endpoint](/api-reference/vouchers/examine-voucher-qualification) for searching and identifing vouchers. \n\n## Subsequent Steps\n\nAs a recommended subsequent step after selecting a qualified campaign is to publish a voucher code from that campaign. The [API method for publishing](/api-reference/publications/create-publication) will return a unique code which will belong to a given customer.\n\n## Sample use case\n\nAs a sample use case, you can imagine a requirement of displaying coupons (grouped in campaigns) that a customer is eligible to use. The customer should get assigned to the particular voucher from the campaign and then may redeem that particular code when he/she places an order.\n\n[Read](/guides/checking-eligibility) about Qualification API limits before you start.",
"parameters": [
{
"schema": {
@@ -2343,7 +2343,7 @@
"Campaigns"
],
"summary": "Enable Campaign",
- "description": "There are various times when you'll want to manage a campaign's accessibility. This can be done by two API methods for managing the campaign state - *enable* and *disable*. \n\nSets campaign state to **active**. The vouchers in this campaign can be redeemed - only if the redemption occurs after the start date of the campaign and voucher and the voucher and campaign are not expired.",
+ "description": "Sets campaign state to **active**. The vouchers in this campaign can be redeemed - only if the redemption occurs after the start date of the campaign and voucher and the voucher and campaign are not expired.",
"parameters": [],
"security": [
{
@@ -2417,7 +2417,7 @@
"Campaigns"
],
"summary": "Disable Campaign",
- "description": "There are various times when you'll want to manage a campaign's accessibility. This can be done by two API methods for managing the campaign state - *enable* and *disable*. \n\nSets campaign state to **inactive**. The vouchers in this campaign can no longer be redeemed.",
+ "description": "Sets campaign state to **inactive**. The vouchers in this campaign can no longer be redeemed.",
"parameters": [],
"security": [
{
@@ -2491,7 +2491,7 @@
"Campaigns"
],
"summary": "List Campaign Transactions",
- "description": "Retrieves all transactions for the campaign with the given campaign ID or campaign name. The `id` filter denotes the unique transaction identifier.\n\n> 🚧\n> The endpoint works only for gift card and loyalty campaigns.",
+ "description": "Retrieves all transactions for the campaign with the given campaign ID or campaign name. The `id` filter denotes the unique transaction identifier.\n\n\n\nThe endpoint works only for gift card and loyalty campaigns.\n\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -2657,7 +2657,7 @@
}
],
"summary": "Export Campaign Transactions",
- "description": "Export transactions is an asynchronous process that generates a CSV file with the data about credit movements on all gift cards or point movements on all loyalty cards in a given campaign.\n\nTo export transactions:\n1. In the export request, use parameters to select which fields will be exported, in what order, and which data will be filtered.\n2. Use the returned `id` to track the export status with the [GET Export](/api-reference/exports/get-export) method.\n3. In the GET Export method, when the returned `status` field has the `DONE` value, the export file has been generated.\n4. Use the URL in the `result` property to download the file. You must be logged to your Voucherify account on a given cluster in the browser to be able to download the file.\n\nAn export request will almost always result in a single file being generated by the system. However, when the data volume is large, the system may split the results into multiple files.\n\nAn example export file can look as follows:\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| `id` | Unique transaction ID. | `vtx_0cb7811f1c07765800` |\n| `type` | Transaction type. |**Gift cards**:
- `CREDITS_REMOVAL`
- `CREDITS_ADDITION`
- `CREDITS_REFUND`
- `CREDITS_REDEMPTION`
**Loyalty cards**:
- `POINTS_ACCRUAL`
- `POINTS_REDEMPTION`
- `POINTS_REFUND`
- `POINTS_ADDITION`
- `POINTS_REMOVAL`
- `POINTS_EXPIRATION`
- `POINTS_TRANSFER_IN`
- `POINTS_TRANSFER_OUT` |\n| `source_id` | Unique transaction source ID. Optional and only in manual operations: `CREDITS_ADDITION`, `CREDITS_REMOVAL`, `POINTS_ADDITION`, `POINTS_REMOVAL`, `POINTS_TRANSFER_OUT`. | 8638 |\n| `reason` | Contains the reason for the transaction if one was included originally. Optional and only in the following manual operations: `CREDITS_ADDITION`, `CREDITS_REMOVAL`, `POINTS_ADDITION`, `POINTS_REMOVAL`, `POINTS_TRANSFER_OUT`, `POINTS_TRANSFER_IN`. | `Apology for sending a broken item` |\n| `balance` | The gift card or loyalty card balance after the transaction. | |\n| `amount` | The amount of gift card or loyalty card credits being allocated during the transaction. This value can either be negative or positive depending on the nature of the transaction. | |\n| `created_at` | Timestamp in ISO 8601 format representing the date and time when the transaction was created. | `2024-10-09T09:16:32.521Z` |\n| `voucher_id` | Unique voucher ID. | `v_dky7ksKfPX50Wb2Bxvcoeb1xT20b6tcp` |\n| `source`| Channel through which the transaction was initiated. | `API` |\n| `details` | More detailed information stored in the form of JSON. | Provides more details related to the transaction in the form of an object. |\n| `related_transaction_id` | Unique transaction ID related to a receiver/donor card in the case of a points transfer from/to another card. | `vtx_0c9afe802593b34b80` |\n\n> 👍 Export Loyalty Campaign Transactions\n>\n> For loyalty campaigns, this method works in the same way the [POST Export Loyalty Campaign Transactions](/api-reference/loyalties/export-loyalty-campaign-transactions) does.",
+ "description": "Export transactions is an asynchronous process that generates a CSV file with the data about credit movements on all gift cards or point movements on all loyalty cards in a given campaign.\n\nTo export transactions:\n1. In the export request, use parameters to select which fields will be exported, in what order, and which data will be filtered.\n2. Use the returned `id` to track the export status with the [GET Export](/api-reference/exports/get-export) method.\n3. In the GET Export method, when the returned `status` field has the `DONE` value, the export file has been generated.\n4. Use the URL in the `result` property to download the file. You must be logged to your Voucherify account on a given cluster in the browser to be able to download the file.\n\nAn export request will almost always result in a single file being generated by the system. However, when the data volume is large, the system may split the results into multiple files.\n\nAn example export file can look as follows:\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| `id` | Unique transaction ID. | `vtx_0cb7811f1c07765800` |\n| `type` | Transaction type. |**Gift cards**:
- `CREDITS_REMOVAL`
- `CREDITS_ADDITION`
- `CREDITS_REFUND`
- `CREDITS_REDEMPTION`
**Loyalty cards**:
- `POINTS_ACCRUAL`
- `POINTS_REDEMPTION`
- `POINTS_REFUND`
- `POINTS_ADDITION`
- `POINTS_REMOVAL`
- `POINTS_EXPIRATION`
- `POINTS_TRANSFER_IN`
- `POINTS_TRANSFER_OUT` |\n| `source_id` | Unique transaction source ID. Optional and only in manual operations: `CREDITS_ADDITION`, `CREDITS_REMOVAL`, `POINTS_ADDITION`, `POINTS_REMOVAL`, `POINTS_TRANSFER_OUT`. | 8638 |\n| `reason` | Contains the reason for the transaction if one was included originally. Optional and only in the following manual operations: `CREDITS_ADDITION`, `CREDITS_REMOVAL`, `POINTS_ADDITION`, `POINTS_REMOVAL`, `POINTS_TRANSFER_OUT`, `POINTS_TRANSFER_IN`. | `Apology for sending a broken item` |\n| `balance` | The gift card or loyalty card balance after the transaction. | |\n| `amount` | The amount of gift card or loyalty card credits being allocated during the transaction. This value can either be negative or positive depending on the nature of the transaction. | |\n| `created_at` | Timestamp in ISO 8601 format representing the date and time when the transaction was created. | `2024-10-09T09:16:32.521Z` |\n| `voucher_id` | Unique voucher ID. | `v_dky7ksKfPX50Wb2Bxvcoeb1xT20b6tcp` |\n| `source`| Channel through which the transaction was initiated. | `API` |\n| `details` | More detailed information stored in the form of JSON. | Provides more details related to the transaction in the form of an object. |\n| `related_transaction_id` | Unique transaction ID related to a receiver/donor card in the case of a points transfer from/to another card. | `vtx_0c9afe802593b34b80` |\n\n\n\nExport Loyalty Campaign Transactions\n\nFor loyalty campaigns, this method works in the same way the [POST Export Loyalty Campaign Transactions](/api-reference/loyalties/export-loyalty-campaign-transactions) does.\n\n",
"requestBody": {
"description": "Specify the parameters for the transaction export.",
"content": {
@@ -2831,7 +2831,7 @@
"Campaigns"
],
"summary": "Get Campaign Summary",
- "description": "Returns data for campaign analytics, covering validations, redemptions, publications, and other details specific to a given campaign type.\n\nUse `start_date` and `end_date` to narrow down the data to specific periods.\n\n>🚧 Campaigns created before 17 June 2025\n>\n>This endpoint returns analytics data for campaigns that were created after 17 June 2025. Older campaigns return empty data.",
+ "description": "Returns data for campaign analytics, covering validations, redemptions, publications, and other details specific to a given campaign type.\n\nUse `start_date` and `end_date` to narrow down the data to specific periods.\n\n\n\nCampaigns created before 17 June 2025\n\nThis endpoint returns analytics data for campaigns that were created after 17 June 2025. Older campaigns return empty data.\n\n",
"parameters": [
{
"name": "start_date",
diff --git a/documentation/openapi/client-side.json b/documentation/openapi/client-side.json
index da710a4ff..8ea642aec 100644
--- a/documentation/openapi/client-side.json
+++ b/documentation/openapi/client-side.json
@@ -42,7 +42,7 @@
"Client-side"
],
"summary": "Check Eligibility (client-side)",
- "description": "Generate a list of redeemables that are applicable in the context of the customer and order.\n\nThe new qualifications method is an improved version of [Campaign Qualifications](/api-reference/campaigns/examine-campaign-qualification), [Voucher Qualifications](/api-reference/vouchers/examine-voucher-qualification) API requests. The new qualification method introduces the following improvements:\n\n- Qualification results are returned faster\n- No limit on the number of returned redeemables\n- Introduces new qualification scenarios, not available in the previous version\n\n> 👍 Scenario Guide\n>\n> Read our dedicated guide to learn about some use cases this endpoint can cover [here](/guides/checking-eligibility).\n\n## Paging \n\nThe Voucherify Qualifications API request will return to you all of the redeemables available for the customer in batches of up to 50 redeemables per page. To get the next batch of redeemables, you need to use the `starting_after` cursor.\n\nTo process of paging the redeemables works in the following manner:\n\n- You send the first API request for Qualifications without the `starting_after` parameter.\n- The response will contain a parameter named `has_more`. If the parameter's value is set to `true`, then more redeemables are available.\n- Get the value of the `created_at` parameter of the last returned redeemable. The value of this parameter will be used as a cursor to retrieve the next page of redeemables.\n- Send another API request for Qualification with the `starting_after` parameter set to the value taken from the `created_at` parameter from the last returned redeemable.\n- Voucherify will return the next page of redeemables.\n- If the `has_more` parameter is set to `true`, apply steps 3-5 to get the next page of redeemables.\n\n## Caching\n\nQualification has a 5-minute cache for the returned results. If you change your campaign settings or validation rules, the changes will apply to qualification results after the cache refreshes.",
+ "description": "Generate a list of redeemables that are applicable in the context of the customer and order.\n\nThe new qualifications method is an improved version of [Campaign Qualifications](/api-reference/campaigns/examine-campaign-qualification), [Voucher Qualifications](/api-reference/vouchers/examine-voucher-qualification) API requests. The new qualification method introduces the following improvements:\n\n- Qualification results are returned faster\n- No limit on the number of returned redeemables\n- Introduces new qualification scenarios, not available in the previous version\n\n\n\nScenario Guide\n\nRead our dedicated guide to learn about some use cases this endpoint can cover [here](/guides/checking-eligibility).\n\n\n\n## Paging \n\nThe Voucherify Qualifications API request will return to you all of the redeemables available for the customer in batches of up to 50 redeemables per page. To get the next batch of redeemables, you need to use the `starting_after` cursor.\n\nTo process of paging the redeemables works in the following manner:\n\n- You send the first API request for Qualifications without the `starting_after` parameter.\n- The response will contain a parameter named `has_more`. If the parameter's value is set to `true`, then more redeemables are available.\n- Get the value of the `created_at` parameter of the last returned redeemable. The value of this parameter will be used as a cursor to retrieve the next page of redeemables.\n- Send another API request for Qualification with the `starting_after` parameter set to the value taken from the `created_at` parameter from the last returned redeemable.\n- Voucherify will return the next page of redeemables.\n- If the `has_more` parameter is set to `true`, apply steps 3-5 to get the next page of redeemables.\n\n## Caching\n\nQualification has a 5-minute cache for the returned results. If you change your campaign settings or validation rules, the changes will apply to qualification results after the cache refreshes.",
"parameters": [],
"security": [
{
@@ -334,7 +334,7 @@
"Client-side"
],
"summary": "Redeem Stackable Discounts (client-side)",
- "description": "This method is accessible through public keys which you can use in client side requests coming from mobile and web browser applications.\n\n## How API returns calculated discounts and order amounts in the response\n\nIn the table below, you can see the logic the API follows to calculate discounts and amounts:\n\n| **Field** | **Calculation** | **Description** |\n|:---|:---|:---|\n| amount | N/A | This field shows the order amount before applying any discount |\n| total_amount | `total_amount` = `amount` - `total_discount_amount` | This field shows the order amount after applying all the discounts |\n| discount_amount | `discount_amount` = `previous_discount_amount` + `applied_discount_amount` | This field sums up all order-level discounts up to and including the specific discount being calculated for the stacked redemption. |\n| items_discount_amount | sum(items, i => i.discount_amount) | This field sums up all product-specific discounts |\n| total_discount_amount | `total_discount_amount` = `discount_amount` + `items_discount_amount` | This field sums up all order-level and all product-specific discounts |\n| applied_discount_amount | N/A | This field shows the order-level discount applied in a particular request |\n| items_applied_discount_amount | sum(items, i => i.applied_discount_amount) | This field sums up all product-specific discounts applied in a particular request |\n| total_applied_discount_amount | `total_applied_discount_amount` = `applied_discount_amount` + `items_applied_discount_amount` | This field sums up all order-level and all product-specific discounts applied in a particular request |\n\n\n> 📘 Rollbacks\n>\n> You can't roll back a child redemption. When you call rollback on a stacked redemption, all child redemptions will be rolled back. You need to refer to a parent redemption ID in your [rollback request](/api-reference/redemptions/rollback-stackable-redemptions).",
+ "description": "This method is accessible through public keys which you can use in client side requests coming from mobile and web browser applications.\n\n## How API returns calculated discounts and order amounts in the response\n\nIn the table below, you can see the logic the API follows to calculate discounts and amounts:\n\n| **Field** | **Calculation** | **Description** |\n|:---|:---|:---|\n| amount | N/A | This field shows the order amount before applying any discount |\n| total_amount | `total_amount` = `amount` - `total_discount_amount` | This field shows the order amount after applying all the discounts |\n| discount_amount | `discount_amount` = `previous_discount_amount` + `applied_discount_amount` | This field sums up all order-level discounts up to and including the specific discount being calculated for the stacked redemption. |\n| items_discount_amount | sum(items, i => i.discount_amount) | This field sums up all product-specific discounts |\n| total_discount_amount | `total_discount_amount` = `discount_amount` + `items_discount_amount` | This field sums up all order-level and all product-specific discounts |\n| applied_discount_amount | N/A | This field shows the order-level discount applied in a particular request |\n| items_applied_discount_amount | sum(items, i => i.applied_discount_amount) | This field sums up all product-specific discounts applied in a particular request |\n| total_applied_discount_amount | `total_applied_discount_amount` = `applied_discount_amount` + `items_applied_discount_amount` | This field sums up all order-level and all product-specific discounts applied in a particular request |\n\n\n\n\nRollbacks\n\nYou can't roll back a child redemption. When you call rollback on a stacked redemption, all child redemptions will be rolled back. You need to refer to a parent redemption ID in your [rollback request](/api-reference/redemptions/rollback-stackable-redemptions).\n\n",
"parameters": [
{
"$ref": "#/components/parameters/origin"
@@ -776,7 +776,7 @@
"Client-side"
],
"summary": "Validate Voucher (client-side)",
- "description": "> ❗️ Deprecated \n>\n> This endpoint represents the deprecated version of the API responsible for voucher validation, and we do not recommend using it. The new [Stackable Discounts API](/api-reference/client-side/validate-stackable-discounts-client-side) introduces additional features and improvements while maintaining backward compatibility, including applying a combination of coupon codes and promotion tiers. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint. \n\nTo verify a voucher code given by customer, you can use this method. It is designed for client side integration which means that is accessible only through public keys. This method is designed to be run directly either in web browsers or mobile apps.\n\n> ❗️ Specifying gift credits and loyalty points\n>\n> This endpoint does not support specifying the specific amount of gift credits to apply to an order nor the specific amount of loyalty points to an order. It calculates the amount that is available on the card and applies as much credits or points as possible to cover the total amount. \n\n### Set customer identity (optional)\n\nVoucherify can help you track anonymous customers. Once you integrate Voucherify into your web app and call the validate method, Voucherify will return a tracking ID and the script will store it in a cookie. Each subsequent validate call will use the same tracking ID.\n\nVoucherify tracks a user using a tracking ID to see if the user who is validating vouchers is the same as the one who consuming them. Voucherify does this by setting up an identity for the user. A `tracking_id` will be generated on the server side, unless you specify your own `tracking_id`. In both cases, you will receive the `tracking_id` in the validation response.\n\nThe returned `tracking_id` field should be used as the customer `source_id` in subsequent redemption requests. Moreover, the `tracking_id` returned from Validation API is encoded. Voucherify will recognize both values for identifying customer - the one before encryption sent as a query parameter to the **GET** `v1/validate` request, and the version encrypted and returned as part of the validation request.\n\n### Sample workflow\n\nCustomer tracking workflow in a nutshell:\n\n**Client-side:**\n * A customer visits your website.\n * A customer validates a voucher code. That triggers a validate request to be sent to Voucherify. In the request, you pass the tracking_id or customer.source_id. As a result, the API call to this endpoint returns an **encoded** `tracking_id`.\n\n**Backend:**\n * Once the customer finishes the checkout process, your website passes the `tracking_id` to your backend during a redemption call. The `tracking_id` is sent as a value assigned to the property *source_id* in a customer object.\n * A customer object is created and within the redemption response, you get a customer `id`.\n * You can use the customer `id` or the customer `source_id` to fetch or modify the customer details.\n \nA customer is created (upserted) automatically with a redemption call. Alternatively, you can create a new profile by creating a customer via a dedicated API method. Take a look at the customer object to understand the [entity's structure](/api-reference/customers/customer-object). \n\n\n\n> 📘 Customer identifier\n>\n> The source id of the customer may either be an already hashed version of the `tracking_id`, which you received in a response from a validation request or a custom ID you predefined (i.e. an email address). Nevertheless, we recommend using identifiers delivered by Voucherify API.\n\n\n\n\n### Examples with Query Parameters\n\n| **Query Parameters** | **Example URL** |\n|:---|:---|\n| Shortcut - `customer` query param instead of `customer[source_id]` | `https://api.voucherify.io/client/v1/validate?code=sKKFCKLZ&amount=10100&customer=customer_id` |\n| Pass `customer`'s and `redemption`'s context `metadata` in query parameters | `https://api.voucherify.io/client/v1/validate?code=sKKFCKLZ&amount=10100&customer=sure_he_is_new&metadata[shop]=1&customer[metadata][propsy]=2&metadata[test]=true` |\n| Use `tracking_id` instead of `source_id` | `https://api.voucherify.io/client/v1/validate?code=IKU-mvS-JOG&amount=10100&tracking_id=sure_he_is_new_5&metadata[shop]=1&metadata[test]=true` |\n\n### Reasons why a validation might fail\n\nVoucher validation might fail because of one of these reasons:\n\n* `voucher not found` - voucher doesn't exist or was [deleted](/api-reference/vouchers/delete-voucher)\n* `voucher expired` - voucher is out of [start date - expiration date] timeframe\n* `voucher is disabled` - learn more about [disabled vouchers](/api-reference/vouchers/disable-voucher)\n* `customer does not match segment rules` - learn more about [customer tracking](/api-reference/customers/customer-object)\n* `order does not match validation rules` - learn more about [validation rules](/api-reference/validations/validation-object)",
+ "description": "\n\nDeprecated\n\nThis endpoint represents the deprecated version of the API responsible for voucher validation, and we do not recommend using it. The new [Stackable Discounts API](/api-reference/client-side/validate-stackable-discounts-client-side) introduces additional features and improvements while maintaining backward compatibility, including applying a combination of coupon codes and promotion tiers. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint.\n\n\n\nTo verify a voucher code given by customer, you can use this method. It is designed for client side integration which means that is accessible only through public keys. This method is designed to be run directly either in web browsers or mobile apps.\n\n\n\nSpecifying gift credits and loyalty points\n\nThis endpoint does not support specifying the specific amount of gift credits to apply to an order nor the specific amount of loyalty points to an order. It calculates the amount that is available on the card and applies as much credits or points as possible to cover the total amount.\n\n\n\n### Set customer identity (optional)\n\nVoucherify can help you track anonymous customers. Once you integrate Voucherify into your web app and call the validate method, Voucherify will return a tracking ID and the script will store it in a cookie. Each subsequent validate call will use the same tracking ID.\n\nVoucherify tracks a user using a tracking ID to see if the user who is validating vouchers is the same as the one who consuming them. Voucherify does this by setting up an identity for the user. A `tracking_id` will be generated on the server side, unless you specify your own `tracking_id`. In both cases, you will receive the `tracking_id` in the validation response.\n\nThe returned `tracking_id` field should be used as the customer `source_id` in subsequent redemption requests. Moreover, the `tracking_id` returned from Validation API is encoded. Voucherify will recognize both values for identifying customer - the one before encryption sent as a query parameter to the **GET** `v1/validate` request, and the version encrypted and returned as part of the validation request.\n\n### Sample workflow\n\nCustomer tracking workflow in a nutshell:\n\n**Client-side:**\n * A customer visits your website.\n * A customer validates a voucher code. That triggers a validate request to be sent to Voucherify. In the request, you pass the tracking_id or customer.source_id. As a result, the API call to this endpoint returns an **encoded** `tracking_id`.\n\n**Backend:**\n * Once the customer finishes the checkout process, your website passes the `tracking_id` to your backend during a redemption call. The `tracking_id` is sent as a value assigned to the property *source_id* in a customer object.\n * A customer object is created and within the redemption response, you get a customer `id`.\n * You can use the customer `id` or the customer `source_id` to fetch or modify the customer details.\n \nA customer is created (upserted) automatically with a redemption call. Alternatively, you can create a new profile by creating a customer via a dedicated API method. Take a look at the customer object to understand the [entity's structure](/api-reference/customers/customer-object). \n\n\n\n\n\nCustomer identifier\n\nThe source id of the customer may either be an already hashed version of the `tracking_id`, which you received in a response from a validation request or a custom ID you predefined (i.e. an email address). Nevertheless, we recommend using identifiers delivered by Voucherify API.\n\n\n\n\n\n\n### Examples with Query Parameters\n\n| **Query Parameters** | **Example URL** |\n|:---|:---|\n| Shortcut - `customer` query param instead of `customer[source_id]` | `https://api.voucherify.io/client/v1/validate?code=sKKFCKLZ&amount=10100&customer=customer_id` |\n| Pass `customer`'s and `redemption`'s context `metadata` in query parameters | `https://api.voucherify.io/client/v1/validate?code=sKKFCKLZ&amount=10100&customer=sure_he_is_new&metadata[shop]=1&customer[metadata][propsy]=2&metadata[test]=true` |\n| Use `tracking_id` instead of `source_id` | `https://api.voucherify.io/client/v1/validate?code=IKU-mvS-JOG&amount=10100&tracking_id=sure_he_is_new_5&metadata[shop]=1&metadata[test]=true` |\n\n### Reasons why a validation might fail\n\nVoucher validation might fail because of one of these reasons:\n\n* `voucher not found` - voucher doesn't exist or was [deleted](/api-reference/vouchers/delete-voucher)\n* `voucher expired` - voucher is out of [start date - expiration date] timeframe\n* `voucher is disabled` - learn more about [disabled vouchers](/api-reference/vouchers/disable-voucher)\n* `customer does not match segment rules` - learn more about [customer tracking](/api-reference/customers/customer-object)\n* `order does not match validation rules` - learn more about [validation rules](/api-reference/validations/validation-object)",
"parameters": [
{
"$ref": "#/components/parameters/origin"
@@ -1325,7 +1325,7 @@
"Client-side"
],
"summary": "Redeem Voucher (client-side)",
- "description": "\n> ❗️ Deprecated \n>\n> This endpoint represents the deprecated version of the API responsible for voucher redemption, and we do not recommend using it. The new [Stackable Discounts API](/api-reference/client-side/redeem-stackable-discounts-client-side) introduces additional features and improvements while maintaining backward compatibility, including applying a combination of coupon codes and promotion tiers. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint. \n\nTo redeem a voucher, you need to create a redemption object. It increments the redemption counter and updates the history of the voucher. This method is accessible through public keys, which you can use in client-side apps (mobile and web browser apps). \n\nThe client-side redemption works similar to the server-side [voucher redemption](/api-reference/redemptions/redeem-voucher) endpoint. The difference lies in the authorization. For the client-side, you can use client-side keys.\n\n\n> 📘 Opt-in \n>\n> By default this feature is disabled. If you want to use it, you will need to enable the function explicitly in **Project Settings**.\n\n\n> ❗️ Security Threat \n>\n> Be careful if you want to include the voucher redemption functionality directly on your client side (website or mobile app). In this configuration, there is a chance that discounts can be modified before being sent to the server.\n\n### Expand Response\nYou may expand the response by adding the following object to your request body. The expanded response will include the category details of the voucher.\n\n```json\n{\n \"options\": {\n \"expand\": [\n \"category\"\n ]\n }\n}\n```",
+ "description": "\n\n\nDeprecated\n\nThis endpoint represents the deprecated version of the API responsible for voucher redemption, and we do not recommend using it. The new [Stackable Discounts API](/api-reference/client-side/redeem-stackable-discounts-client-side) introduces additional features and improvements while maintaining backward compatibility, including applying a combination of coupon codes and promotion tiers. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint.\n\n\n\nTo redeem a voucher, you need to create a redemption object. It increments the redemption counter and updates the history of the voucher. This method is accessible through public keys, which you can use in client-side apps (mobile and web browser apps). \n\nThe client-side redemption works similar to the server-side [voucher redemption](/api-reference/redemptions/redeem-voucher) endpoint. The difference lies in the authorization. For the client-side, you can use client-side keys.\n\n\n\n\nOpt-in\n\nBy default this feature is disabled. If you want to use it, you will need to enable the function explicitly in **Project Settings**.\n\n\n\n\n\n\nSecurity Threat\n\nBe careful if you want to include the voucher redemption functionality directly on your client side (website or mobile app). In this configuration, there is a chance that discounts can be modified before being sent to the server.\n\n\n\n### Expand Response\nYou may expand the response by adding the following object to your request body. The expanded response will include the category details of the voucher.\n\n```json\n{\n \"options\": {\n \"expand\": [\n \"category\"\n ]\n }\n}\n```",
"parameters": [
{
"$ref": "#/components/parameters/origin"
@@ -1964,7 +1964,7 @@
"Client-side"
],
"summary": "Create Publication (client-side)",
- "description": "This method selects vouchers that are suitable for publication, adds a publish entry and returns the publication.\n\nA voucher is suitable for publication when it's active and hasn't been published yet. \n\n\n> 🚧 Clearly define the source of the voucher\n>\n> You must clearly define which source you want to publish the voucher code from. It can either be a code from a campaign or a specific voucher identified by a code. \n\n> 🚧 Publish multiple vouchers\n> In case you want to publish multiple vouchers within a single publication, you need to specify the campaign name and number of vouchers you want to publish. \n\n\n> 📘 Auto-update campaign\n>\n> In case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use an **auto-update** campaign.",
+ "description": "This method selects vouchers that are suitable for publication, adds a publish entry and returns the publication.\n\nA voucher is suitable for publication when it's active and hasn't been published yet. \n\n\n\n\nClearly define the source of the voucher\n\nYou must clearly define which source you want to publish the voucher code from. It can either be a code from a campaign or a specific voucher identified by a code.\n\n\n\n\n\nPublish multiple vouchers\n\nIn case you want to publish multiple vouchers within a single publication, you need to specify the campaign name and number of vouchers you want to publish.\n\n\n\n\n\n\nAuto-update campaign\n\nIn case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use an **auto-update** campaign.\n\n",
"parameters": [
{
"schema": {
@@ -3950,7 +3950,7 @@
},
"redeemables": {
"type": "array",
- "description": "Lists validation results of each redeemable. If `redeemables_application_mode` is `PARTIAL` in the `stacking_rules` object, all redeemables here will be `APPLICABLE`. Read more in [the Stacking rules article]/orchestrate/stacking-rules.",
+ "description": "Lists validation results of each redeemable. If `redeemables_application_mode` is `PARTIAL` in the `stacking_rules` object, all redeemables here will be `APPLICABLE`. Read more in [the Stacking rules article](/orchestrate/stacking-rules).",
"items": {
"title": "Validations Validate All Response Body Redeemables Item",
"oneOf": [
diff --git a/documentation/openapi/customers.json b/documentation/openapi/customers.json
index b0a57f04b..687693df8 100644
--- a/documentation/openapi/customers.json
+++ b/documentation/openapi/customers.json
@@ -362,7 +362,7 @@
"Customers"
],
"summary": "Create Customer",
- "description": "Creates a customer object.\n\n\n\n> 📘 Upsert Mode\n>\n> If you pass an `id` or a `source_id` that already exists in the customer database, Voucherify will return a related customer object with updated fields.",
+ "description": "Creates a customer object.\n\n\n\n\n\nUpsert Mode\n\nIf you pass an `id` or a `source_id` that already exists in the customer database, Voucherify will return a related customer object with updated fields.\n\n",
"parameters": [],
"security": [
{
@@ -930,7 +930,7 @@
"Customers"
],
"summary": "Import and Update Customers using CSV",
- "description": "This API method lets you import or update customer data. To get a proper and valid response, please send a CSV file with data separated by commas. \n\n## Request Example\n\n```cURL\ncurl -X **POST** \\\n https://api.voucherify.io/v1/customers/importCSV \\\n -F file=@/path/to/customers.csv \\\n -H \"X-App-Id: c70a6f00-cf91-4756-9df5-47628850002b\" \\\n -H \"X-App-Token: 3266b9f8-e246-4f79-bdf0-833929b1380c\"\n```\n## CSV File Format\n\nThe CSV file has to include headers in the first line. All properties which cannot be mapped to standard customer fields will be added to the metadata object.\n\n\n> 📘 Standard customer fields mapping\n>\n> **No spaces allowed in field names** \n> `Id`, `Name`, `Email`, `Phone`, `Birthdate`, `Source_id`, `Address_line_1`, `Address_line_2`, `Address_Postal_Code`, `Address_City`, `Address_State`, `Address_Country`, `Description`, `Metadata_name_1`, `Metadata_name_2`\n\n## Update Customers using CSV\n\nIf you would like to update customer's data, you can do it using the CSV file with new data. However, remember to include a `source_id` in your CSV file to manage the update successfully.\n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
+ "description": "This API method lets you import or update customer data. To get a proper and valid response, please send a CSV file with data separated by commas. \n\n## Request Example\n\n```cURL\ncurl -X **POST** \\\n https://api.voucherify.io/v1/customers/importCSV \\\n -F file=@/path/to/customers.csv \\\n -H \"X-App-Id: c70a6f00-cf91-4756-9df5-47628850002b\" \\\n -H \"X-App-Token: 3266b9f8-e246-4f79-bdf0-833929b1380c\"\n```\n## CSV File Format\n\nThe CSV file has to include headers in the first line. All properties which cannot be mapped to standard customer fields will be added to the metadata object.\n\n\n\n\nStandard customer fields mapping\n\n**No spaces allowed in field names** `Id`, `Name`, `Email`, `Phone`, `Birthdate`, `Source_id`, `Address_line_1`, `Address_line_2`, `Address_Postal_Code`, `Address_City`, `Address_State`, `Address_Country`, `Description`, `Metadata_name_1`, `Metadata_name_2`\n\n\n\n## Update Customers using CSV\n\nIf you would like to update customer's data, you can do it using the CSV file with new data. However, remember to include a `source_id` in your CSV file to manage the update successfully.\n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
"parameters": [],
"security": [
{
@@ -1375,7 +1375,7 @@
"Customers"
],
"summary": "List Customer Activities",
- "description": "> ❗️ Deprecated \n>\n> This endpoint represents the deprecated version of the API responsible for listing customer activities and we do not recommend using it. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint.\n\nRetrieve customer activities.",
+ "description": "\n\nDeprecated\n\nThis endpoint represents the deprecated version of the API responsible for listing customer activities and we do not recommend using it. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint.\n\n\n\nRetrieve customer activities.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
diff --git a/documentation/openapi/exports.json b/documentation/openapi/exports.json
index dc3b83f38..02c86e27c 100644
--- a/documentation/openapi/exports.json
+++ b/documentation/openapi/exports.json
@@ -42,7 +42,7 @@
"Exports"
],
"summary": "Create Export",
- "description": "Create export object. The export can be any of the following types: `voucher`, `redemption`, `publication`, `customer`, `order`, `points_expiration`, `voucher_transactions`, `product`, or `sku`. \n\n## Defaults\n\nIf you only specify the object type in the request body without specifying the fields, the API will return the following fields per export object:\n\n| **Export Object** | **Default fields returned** |\n|:---|:---|\n| order | `id`, `source_id`, `status` |\n| voucher | `code`, `voucher_type`, `value`, `discount_type` |\n| publication | `code`, `customer_id`, `date`, `channel` |\n| redemption | `id`, `object`, `voucher_code`, `customer_id`, `date`, `result` |\n| customer | `name`, `source_id` |\n| points_expiration | `id`, `campaign_id`, `voucher_id`, `status`, `expires_at`, `points` |\n| voucher_transactions | `id`, `type`, `source_id`, `status`, `reason`, `source`, `balance`, `amount`, `created_at` |\n| products | `id`, `name`, `price`, `image_url`, `source_id`, `attributes`, `created_at`|\n| SKU | `id`, `sku`, `product_id`, `currency`, `price`, `image_url`, `source_id`, `attributes`, `created_at`|\n\n> 📘 Date and time in the export API\n>\n> The exported date and times are always provided in the UTC time zone.\n## Fetching particular data sets\n\nUsing the `parameters` body parameter, you can narrow down which fields to export and how to filter the results. The fields are an array of strings containing the data that you would like to export. These fields define the headers in the CSV file. The array can be a combination of any of the following available fields:\n\n## Orders \n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique order ID. | ord_A69RIxEdRsPuC6i8gFGVHUft |\n| source_id | Unique order source ID. | 8638 |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the order was created. | 2022-03-09T09:16:32.521Z |\n| updated_at | Timestamp in ISO 8601 format representing the date and time when the order was last updated. | 2022-03-09T09:16:33.331Z |\n| status | Order status. | `PAID`, `CREATED`, `FULFILLED`, `CANCELED` |\n| amount | Total amount of order items. | 7700 |\n| discount_amount | Represents total amount of the discount applied to whole cart. | 500 |\n| items_discount_amount | Represents total amount of the discount applied to order line items. | 100 |\n| total_discount_amount | All discounts applied to the order including discounts applied to particular order line items and discounts applied to the whole cart. | 600 |\n| total_amount | Total order amount after applying all discounts. | 7100 |\n| customer_id | Customer unique ID. | cust_2G4fUQdCXUqp35nXNleav7bO |\n| referrer_id | Referrer unique ID. | cust_IkrTR674vvQvr9a4rDMiqglY |\n| metadata | Order metadata; expressed as metadata.X, where X is the name of the custom metadata property. | 1 |\n\n## Vouchers \n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique voucher ID. | v_HSnGD2vNIHYighTQxwcB4dtVAv8VOmZD |\n| code | Unique voucher code. | WELCOME100 |\n| voucher_type | Type of voucher. | `DISCOUNT_VOUCHER`, `GIFT_VOUCHER`, `LOYALTY_CARD` |\n| value | Value of voucher. | `DISCOUNT_VOUCHER` : amount, percent, unit
`GIFT_VOUCHER`: amount left to spend
`LOYALTY_CARD`: available usable points |\n| discount_type | The type of discount for a `DISCOUNT_VOUCHER`. | `AMOUNT`, `PERCENT`, `UNIT`, `FIXED` |\n| campaign | Unique campaign name. | Summer Discounts 20% off |\n| category | Tag defining the category that this voucher belongs to. | |\n| start_date | Start date defines when the code starts to be active. Activation timestamp is presented in the ISO 8601 format. Voucher is _inactive_ before this date. | 2020-12-10T23:00:00.000Z |\n| expiration_date | Expiration date defines when the code expires. Expiration timestamp is presented in the ISO 8601 format. Voucher is _inactive_ after this date. | 2023-12-31T23:00:00.000Z |\n| gift_balance | Amount left to spend. | 1000 |\n| loyalty_balance | Available usable points. | 2000 |\n| redemption_quantity | Maximum number of times a voucher can be redeemed. | 2 |\n| redemption_count | Total redemptions. | 59 |\n| active | Boolean indicating whether the voucher is available for use. | `true`, `false` |\n| qr_code | URL to QR representation of encrypted code. | |\n| bar_code | URL to barcode representation of encrypted code. | |\n| metadata | Custom voucher metadata. | |\n| is_referral_code | Boolean indicating whether the voucher is a referral code. | `true`, `false` |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the voucher was created. | 2022-04-14T09:55:46.814Z |\n| updated_at | Timestamp in ISO 8601 format representing the date and time when the voucher was last updated. | 2022-04-14T10:02:18.036Z |\n| validity_timeframe_interval | Defines the intervening time between two time points in ISO 8601 format, expressed as a duration. For example, a voucher with an interval of `P2D` will be active every other day. | P2D |\n| validity_timeframe_duration | Defines the amount of time the voucher will be active in ISO 8601 format. For example, a voucher with a duration of `PT1H` will be valid for a duration of one hour. | PT1H |\n| validity_day_of_week | Array corresponding to the particular days of the week in which the voucher is valid. | \"1,2,3,4,5\" |\n| discount_amount_limit | For `PERCENT` discount type, this is the maximum threshold allowed to be deducted. | 50 |\n| campaign_id | Parent campaign ID. | camp_7s3uXI44aKfIk5IhmeOPr6ic |\n| additional_info | An optional field to keep any extra textual information about the code such as a code description and details. | |\n| customer_id | Unique customer ID of the assigned owner to whom the voucher was published. | cust_7iUa6ICKyU6gH40dBU25kQU1 |\n| discount_unit_type | For `UNIT` discount type, either a shipping or product ID for a `UNIT` discount with one product. | prod_5h1pp1ng, prod_0a9f9aeddb019a42db |\n| discount_unit_effect | `UNIT` discount effect. | `ADD_MANY_ITEMS`, `ADD_MISSING_ITEMS`,`ADD_NEW_ITEMS` |\n| customer_source_id | Unique customer source id of the assigned owner to whom the voucher was published. | name.lastname@email.com |\n\n\n## Publications\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| voucher_code | Unique voucher code. | WELCOME100 |\n| customer_id | Customer unique ID. | cust_7iUa6ICKyU6gH40dBU25kQU1 |\n| customer_source_id | Unique customer source id of the assigned owner to whom the voucher was published. | name.lastname@email.com |\n| date | Timestamp in ISO 8601 format representing the date and time when the voucher was published. | 2022-04-28T10:19:30.792Z |\n| channel | Publication channel. | voucherify-website |\n| campaign | Unique campaign name. | Summer Discounts 20% off |\n| is_winner | | |\n| metadata | Custom publication metadata. | |\n\n## Redemptions\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique redemption ID. | r_0acf3a6dae00e679c8, rf_0acf3a495740e679b8 |\n| object | Object being exported; by default `redemption`. | redemption |\n| date | Timestamp in ISO 8601 format representing the date and time when the voucher was redeemed. | 2022-03-23T08:52:24.867Z |\n| voucher_code | Unique voucher code redeemed. | WELCOME100 |\n| campaign | Parent campaign name of voucher if applicable. | Summer Discounts 20% off |\n| promotion_tier_id | | promo_Mwy9XpA0TLctSGriM5kum0qp |\n| customer_id | Unique customer ID of redeeming customer. | cust_nk0N1uNQ1YnupAoJGOgvsODC |\n| customer_source_id | Unique source ID of redeeming customer. | name.lastname@email.com |\n| customer_name | Customer name. | John Smith |\n| tracking_id | | track_Pw6r3ejnml43kIwNS4Zj09KZ67xOfLUy |\n| order_amount | Total order amount before applying all discounts. | 1000 |\n| gift_amount | Gift credits used for redemption. | 10 |\n| loyalty_points | | 12 |\n| result | Tells you whether the redemption succeeded. | `SUCCESS`, `FAILURE` |\n| failure_code | Internal Voucherify code for reason why redemption failed. | invalid_customer |\n| failure_message | A human-readable message providing a short description explaining why the redemption failed. | Customer must be a holder of a loyalty card. |\n| metadata | Custom redemption metadata. | |\n\n## Customers\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| name | Customer name. | John Smith |\n| id | Unique customer ID. | cust_J1CDUdbqn5Exva8ASWk1Fq0j |\n| description | An arbitrary string that you can attach to a customer object. | Customer requesting to be added to VIP tier. |\n| email | Customer's email. | name.lastname@email.com |\n| source_id | Unique custom customer identifier. | name.lastname@email.com |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the customer was created. | 2022-02-03T13:10:11.928Z |\n| address_city | City | Houston |\n| address_state | State | TX |\n| address_line_1 | First line of customer's address. | 72738 Main St |\n| address_line_2 | Second line of customer's address. | Bld 2, Apt 4 |\n| address_country | Country | United States of America |\n| address_postal_code | Postal code (ZIP code) | 77042-4143 |\n| redemptions_total_redeemed | Total customer redemptions. | 5 |\n| redemptions_total_failed | Total customer failed redemptions. | 2 |\n| redemptions_total_succeeded | Total customer succeeded redemptions. | 3 |\n| redemptions_total_rolled_back | Total customer redemptions that were rolled back. | 3 |\n| redemptions_total_rollback_failed | Total customer redemptions that were unsuccessfully rolled back. | 2 |\n| redemptions_total_rollback_succeeded | Total customer redemptions that were successfully rolled back. | 1 |\n| orders_total_amount | Total sum of order amounts over customer lifetime. Value is multiplied by 100 to precisely represent 2 decimal places. | 10000 (represents $100) |\n| orders_total_count | Total number of customer orders. | 2 |\n| orders_average_amount | Average amount spent on orders. Value is multiplied by 100 to precisely represent 2 decimal places. | 5000 (represents $50) |\n| orders_last_order_amount | How much did the customer spend on their last order. Value is multiplied by 100 to precisely represent 2 decimal places. | 5000 (represents $50) |\n| orders_last_order_date | When was the last customer order; timestamp in ISO 8601 format representing the date and time. | 2022-02-03T13:17:30.630Z |\n| loyalty_points | Sum of customer's loyalty points to go across all loyalty cards. | 2000 |\n| loyalty_referred_customers | How many customers were referred by this customer. | 3 |\n| updated_at | Timestamp in ISO 8601 format representing the date and time when the customer was updated. | 2022-02-14T14:10:14.305Z |\n| phone | Customer's phone number. | +1 (294) 752-1846 |\n| birthday | `Deprecated`. ~~Customer's birthday~~. | 2022-01-01 |\n| metadata | Customer metadata. | All metadata fields defined in Metadata Schema for the Customer object. |\n| birthdate | Customer's birthdate. | 2022-01-01 |\n\n## Points Expirations\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Loyalty points bucket ID. | lopb_Wl1o3EjJIHSNjvO5BDLy4z1n |\n| campaign_id | Campaign ID of the parent loyalty campaign. | camp_7s3uXI44aKfIk5IhmeOPr6ic |\n| voucher_id | Voucher ID of the parent loyalty card. | v_YLn0WVWXSXbUfDvxgrgUbtfJ3SQIY655 |\n| status | Status of the loyalty point bucket. | `ACTIVE` or `EXPIRED` |\n| expires_at | Timestamp in ISO 8601 format representing the date when the points expire. | 2022-06-30 |\n| points | Number of points. | 1000 |\n\n ## Gift Card Transactions\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique transaction ID. | vtx_0cb7811f1c07765800 |\n| type | Transaction type. | - `CREDITS_REMOVAL`
- `CREDITS_ADDITION`
- `CREDITS_REFUND`
- `CREDITS_REDEMPTION` |\n| source_id | Unique transaction source ID. | 8638 |\n| reason | Contains the reason for the transaction if one was included originally. | |\n| balance | The gift card or loyalty card balance after the transaction. | |\n| amount | The amount of gift card or loyalty card credits being allocated during the transaction. This value can either be negative or positive depending on the nature of the transaction. | |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the transaction was created. | 2022-03-09T09:16:32.521Z |\n| voucher_id | Unique Voucher ID. | v_dky7ksKfPX50Wb2Bxvcoeb1xT20b6tcp |\n| campaign_id | Parent campaign ID. | camp_FNYR4jhqZBM9xTptxDGgeNBV |\n| source| Channel through which the transaction was initiated. | API |\n| details | More detailed information stored in the form of a JSON. | Provides more details related to the transaction in the form of an object. |\n\n ## Loyalty Card Transactions\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique transaction ID assigned by Voucherify. | vtx_0cb7811f1c07765800 |\n| type | Transaction type. | - `POINTS_EXPIRATION`
- `POINTS_ADDITION`
- `POINTS_REMOVAL`
- `POINTS_TRANSFER_OUT`
- `POINTS_ACCRUAL`
- `POINTS_REFUND`
- `POINTS_REDEMPTION` |\n| source_id | Custom source ID of the transaction if one was included originally. | source_id_custom |\n| reason | Contains the reason for the transaction if one was included originally. | |\n| balance | The loyalty card balance after the transaction. | |\n| amount | The amount of loyalty points being allocated during the transaction. This value can either be negative or positive depending on the nature of the transaction. | |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the transaction was created. | 2022-03-09T09:16:32.521Z |\n| voucher_id | Unique Voucher ID. | v_dky7ksKfPX50Wb2Bxvcoeb1xT20b6tcp |\n| campaign_id | Parent campaign ID. | camp_FNYR4jhqZBM9xTptxDGgeNBV |\n| source| Channel through which the transaction was initiated. | - `API`
- `voucherify-web-ui`
- `Automation` |\n| details | More detailed information stored in the form of a JSON. | Provides more details related to the transaction in the form of an object. |\n| related_transaction_id | Unique transaction ID related to a receiver/donor card in the case of a points transfer from/to another card. | vtx_0c9afe802593b34b80 |",
+ "description": "Create export object. The export can be any of the following types: `voucher`, `redemption`, `publication`, `customer`, `order`, `points_expiration`, `voucher_transactions`, `product`, or `sku`. \n\n## Defaults\n\nIf you only specify the object type in the request body without specifying the fields, the API will return the following fields per export object:\n\n| **Export Object** | **Default fields returned** |\n|:---|:---|\n| order | `id`, `source_id`, `status` |\n| voucher | `code`, `voucher_type`, `value`, `discount_type` |\n| publication | `code`, `customer_id`, `date`, `channel` |\n| redemption | `id`, `object`, `voucher_code`, `customer_id`, `date`, `result` |\n| customer | `name`, `source_id` |\n| points_expiration | `id`, `campaign_id`, `voucher_id`, `status`, `expires_at`, `points` |\n| voucher_transactions | `id`, `type`, `source_id`, `status`, `reason`, `source`, `balance`, `amount`, `created_at` |\n| products | `id`, `name`, `price`, `image_url`, `source_id`, `attributes`, `created_at`|\n| SKU | `id`, `sku`, `product_id`, `currency`, `price`, `image_url`, `source_id`, `attributes`, `created_at`|\n\n\n\nDate and time in the export API\n\nThe exported date and times are always provided in the UTC time zone.\n\n\n## Fetching particular data sets\n\nUsing the `parameters` body parameter, you can narrow down which fields to export and how to filter the results. The fields are an array of strings containing the data that you would like to export. These fields define the headers in the CSV file. The array can be a combination of any of the following available fields:\n\n## Orders \n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique order ID. | ord_A69RIxEdRsPuC6i8gFGVHUft |\n| source_id | Unique order source ID. | 8638 |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the order was created. | 2022-03-09T09:16:32.521Z |\n| updated_at | Timestamp in ISO 8601 format representing the date and time when the order was last updated. | 2022-03-09T09:16:33.331Z |\n| status | Order status. | `PAID`, `CREATED`, `FULFILLED`, `CANCELED` |\n| amount | Total amount of order items. | 7700 |\n| discount_amount | Represents total amount of the discount applied to whole cart. | 500 |\n| items_discount_amount | Represents total amount of the discount applied to order line items. | 100 |\n| total_discount_amount | All discounts applied to the order including discounts applied to particular order line items and discounts applied to the whole cart. | 600 |\n| total_amount | Total order amount after applying all discounts. | 7100 |\n| customer_id | Customer unique ID. | cust_2G4fUQdCXUqp35nXNleav7bO |\n| referrer_id | Referrer unique ID. | cust_IkrTR674vvQvr9a4rDMiqglY |\n| metadata | Order metadata; expressed as metadata.X, where X is the name of the custom metadata property. | 1 |\n\n## Vouchers \n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique voucher ID. | v_HSnGD2vNIHYighTQxwcB4dtVAv8VOmZD |\n| code | Unique voucher code. | WELCOME100 |\n| voucher_type | Type of voucher. | `DISCOUNT_VOUCHER`, `GIFT_VOUCHER`, `LOYALTY_CARD` |\n| value | Value of voucher. | `DISCOUNT_VOUCHER` : amount, percent, unit
`GIFT_VOUCHER`: amount left to spend
`LOYALTY_CARD`: available usable points |\n| discount_type | The type of discount for a `DISCOUNT_VOUCHER`. | `AMOUNT`, `PERCENT`, `UNIT`, `FIXED` |\n| campaign | Unique campaign name. | Summer Discounts 20% off |\n| category | Tag defining the category that this voucher belongs to. | |\n| start_date | Start date defines when the code starts to be active. Activation timestamp is presented in the ISO 8601 format. Voucher is _inactive_ before this date. | 2020-12-10T23:00:00.000Z |\n| expiration_date | Expiration date defines when the code expires. Expiration timestamp is presented in the ISO 8601 format. Voucher is _inactive_ after this date. | 2023-12-31T23:00:00.000Z |\n| gift_balance | Amount left to spend. | 1000 |\n| loyalty_balance | Available usable points. | 2000 |\n| redemption_quantity | Maximum number of times a voucher can be redeemed. | 2 |\n| redemption_count | Total redemptions. | 59 |\n| active | Boolean indicating whether the voucher is available for use. | `true`, `false` |\n| qr_code | URL to QR representation of encrypted code. | |\n| bar_code | URL to barcode representation of encrypted code. | |\n| metadata | Custom voucher metadata. | |\n| is_referral_code | Boolean indicating whether the voucher is a referral code. | `true`, `false` |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the voucher was created. | 2022-04-14T09:55:46.814Z |\n| updated_at | Timestamp in ISO 8601 format representing the date and time when the voucher was last updated. | 2022-04-14T10:02:18.036Z |\n| validity_timeframe_interval | Defines the intervening time between two time points in ISO 8601 format, expressed as a duration. For example, a voucher with an interval of `P2D` will be active every other day. | P2D |\n| validity_timeframe_duration | Defines the amount of time the voucher will be active in ISO 8601 format. For example, a voucher with a duration of `PT1H` will be valid for a duration of one hour. | PT1H |\n| validity_day_of_week | Array corresponding to the particular days of the week in which the voucher is valid. | \"1,2,3,4,5\" |\n| discount_amount_limit | For `PERCENT` discount type, this is the maximum threshold allowed to be deducted. | 50 |\n| campaign_id | Parent campaign ID. | camp_7s3uXI44aKfIk5IhmeOPr6ic |\n| additional_info | An optional field to keep any extra textual information about the code such as a code description and details. | |\n| customer_id | Unique customer ID of the assigned owner to whom the voucher was published. | cust_7iUa6ICKyU6gH40dBU25kQU1 |\n| discount_unit_type | For `UNIT` discount type, either a shipping or product ID for a `UNIT` discount with one product. | prod_5h1pp1ng, prod_0a9f9aeddb019a42db |\n| discount_unit_effect | `UNIT` discount effect. | `ADD_MANY_ITEMS`, `ADD_MISSING_ITEMS`,`ADD_NEW_ITEMS` |\n| customer_source_id | Unique customer source id of the assigned owner to whom the voucher was published. | name.lastname@email.com |\n\n\n## Publications\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| voucher_code | Unique voucher code. | WELCOME100 |\n| customer_id | Customer unique ID. | cust_7iUa6ICKyU6gH40dBU25kQU1 |\n| customer_source_id | Unique customer source id of the assigned owner to whom the voucher was published. | name.lastname@email.com |\n| date | Timestamp in ISO 8601 format representing the date and time when the voucher was published. | 2022-04-28T10:19:30.792Z |\n| channel | Publication channel. | voucherify-website |\n| campaign | Unique campaign name. | Summer Discounts 20% off |\n| is_winner | | |\n| metadata | Custom publication metadata. | |\n\n## Redemptions\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique redemption ID. | r_0acf3a6dae00e679c8, rf_0acf3a495740e679b8 |\n| object | Object being exported; by default `redemption`. | redemption |\n| date | Timestamp in ISO 8601 format representing the date and time when the voucher was redeemed. | 2022-03-23T08:52:24.867Z |\n| voucher_code | Unique voucher code redeemed. | WELCOME100 |\n| campaign | Parent campaign name of voucher if applicable. | Summer Discounts 20% off |\n| promotion_tier_id | | promo_Mwy9XpA0TLctSGriM5kum0qp |\n| customer_id | Unique customer ID of redeeming customer. | cust_nk0N1uNQ1YnupAoJGOgvsODC |\n| customer_source_id | Unique source ID of redeeming customer. | name.lastname@email.com |\n| customer_name | Customer name. | John Smith |\n| tracking_id | | track_Pw6r3ejnml43kIwNS4Zj09KZ67xOfLUy |\n| order_amount | Total order amount before applying all discounts. | 1000 |\n| gift_amount | Gift credits used for redemption. | 10 |\n| loyalty_points | | 12 |\n| result | Tells you whether the redemption succeeded. | `SUCCESS`, `FAILURE` |\n| failure_code | Internal Voucherify code for reason why redemption failed. | invalid_customer |\n| failure_message | A human-readable message providing a short description explaining why the redemption failed. | Customer must be a holder of a loyalty card. |\n| metadata | Custom redemption metadata. | |\n\n## Customers\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| name | Customer name. | John Smith |\n| id | Unique customer ID. | cust_J1CDUdbqn5Exva8ASWk1Fq0j |\n| description | An arbitrary string that you can attach to a customer object. | Customer requesting to be added to VIP tier. |\n| email | Customer's email. | name.lastname@email.com |\n| source_id | Unique custom customer identifier. | name.lastname@email.com |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the customer was created. | 2022-02-03T13:10:11.928Z |\n| address_city | City | Houston |\n| address_state | State | TX |\n| address_line_1 | First line of customer's address. | 72738 Main St |\n| address_line_2 | Second line of customer's address. | Bld 2, Apt 4 |\n| address_country | Country | United States of America |\n| address_postal_code | Postal code (ZIP code) | 77042-4143 |\n| redemptions_total_redeemed | Total customer redemptions. | 5 |\n| redemptions_total_failed | Total customer failed redemptions. | 2 |\n| redemptions_total_succeeded | Total customer succeeded redemptions. | 3 |\n| redemptions_total_rolled_back | Total customer redemptions that were rolled back. | 3 |\n| redemptions_total_rollback_failed | Total customer redemptions that were unsuccessfully rolled back. | 2 |\n| redemptions_total_rollback_succeeded | Total customer redemptions that were successfully rolled back. | 1 |\n| orders_total_amount | Total sum of order amounts over customer lifetime. Value is multiplied by 100 to precisely represent 2 decimal places. | 10000 (represents $100) |\n| orders_total_count | Total number of customer orders. | 2 |\n| orders_average_amount | Average amount spent on orders. Value is multiplied by 100 to precisely represent 2 decimal places. | 5000 (represents $50) |\n| orders_last_order_amount | How much did the customer spend on their last order. Value is multiplied by 100 to precisely represent 2 decimal places. | 5000 (represents $50) |\n| orders_last_order_date | When was the last customer order; timestamp in ISO 8601 format representing the date and time. | 2022-02-03T13:17:30.630Z |\n| loyalty_points | Sum of customer's loyalty points to go across all loyalty cards. | 2000 |\n| loyalty_referred_customers | How many customers were referred by this customer. | 3 |\n| updated_at | Timestamp in ISO 8601 format representing the date and time when the customer was updated. | 2022-02-14T14:10:14.305Z |\n| phone | Customer's phone number. | +1 (294) 752-1846 |\n| birthday | `Deprecated`. ~~Customer's birthday~~. | 2022-01-01 |\n| metadata | Customer metadata. | All metadata fields defined in Metadata Schema for the Customer object. |\n| birthdate | Customer's birthdate. | 2022-01-01 |\n\n## Points Expirations\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Loyalty points bucket ID. | lopb_Wl1o3EjJIHSNjvO5BDLy4z1n |\n| campaign_id | Campaign ID of the parent loyalty campaign. | camp_7s3uXI44aKfIk5IhmeOPr6ic |\n| voucher_id | Voucher ID of the parent loyalty card. | v_YLn0WVWXSXbUfDvxgrgUbtfJ3SQIY655 |\n| status | Status of the loyalty point bucket. | `ACTIVE` or `EXPIRED` |\n| expires_at | Timestamp in ISO 8601 format representing the date when the points expire. | 2022-06-30 |\n| points | Number of points. | 1000 |\n\n ## Gift Card Transactions\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique transaction ID. | vtx_0cb7811f1c07765800 |\n| type | Transaction type. | - `CREDITS_REMOVAL`
- `CREDITS_ADDITION`
- `CREDITS_REFUND`
- `CREDITS_REDEMPTION` |\n| source_id | Unique transaction source ID. | 8638 |\n| reason | Contains the reason for the transaction if one was included originally. | |\n| balance | The gift card or loyalty card balance after the transaction. | |\n| amount | The amount of gift card or loyalty card credits being allocated during the transaction. This value can either be negative or positive depending on the nature of the transaction. | |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the transaction was created. | 2022-03-09T09:16:32.521Z |\n| voucher_id | Unique Voucher ID. | v_dky7ksKfPX50Wb2Bxvcoeb1xT20b6tcp |\n| campaign_id | Parent campaign ID. | camp_FNYR4jhqZBM9xTptxDGgeNBV |\n| source| Channel through which the transaction was initiated. | API |\n| details | More detailed information stored in the form of a JSON. | Provides more details related to the transaction in the form of an object. |\n\n ## Loyalty Card Transactions\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique transaction ID assigned by Voucherify. | vtx_0cb7811f1c07765800 |\n| type | Transaction type. | - `POINTS_EXPIRATION`
- `POINTS_ADDITION`
- `POINTS_REMOVAL`
- `POINTS_TRANSFER_OUT`
- `POINTS_ACCRUAL`
- `POINTS_REFUND`
- `POINTS_REDEMPTION` |\n| source_id | Custom source ID of the transaction if one was included originally. | source_id_custom |\n| reason | Contains the reason for the transaction if one was included originally. | |\n| balance | The loyalty card balance after the transaction. | |\n| amount | The amount of loyalty points being allocated during the transaction. This value can either be negative or positive depending on the nature of the transaction. | |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the transaction was created. | 2022-03-09T09:16:32.521Z |\n| voucher_id | Unique Voucher ID. | v_dky7ksKfPX50Wb2Bxvcoeb1xT20b6tcp |\n| campaign_id | Parent campaign ID. | camp_FNYR4jhqZBM9xTptxDGgeNBV |\n| source| Channel through which the transaction was initiated. | - `API`
- `voucherify-web-ui`
- `Automation` |\n| details | More detailed information stored in the form of a JSON. | Provides more details related to the transaction in the form of an object. |\n| related_transaction_id | Unique transaction ID related to a receiver/donor card in the case of a points transfer from/to another card. | vtx_0c9afe802593b34b80 |",
"parameters": [],
"security": [
{
@@ -426,7 +426,7 @@
"Exports"
],
"summary": "Download Export",
- "description": "Download the contents of the exported CSV file. \n\n\n\n> 📘 Important notes\n>\n> **Base URL:** \n> - `https://download.voucherify.io` (Europe) \n> - `https://us1.download.voucherify.io` (US) \n> - `https://as1.download.voucherify.io` (Asia) \n>\n> **Token:** Can be found within the `result` parameter of the [Get Export](/api-reference/exports/get-export) method response.",
+ "description": "Download the contents of the exported CSV file. \n\n\n\n\n\nImportant notes\n\n**Base URL:**\n\n- `https://download.voucherify.io` (Europe)\n- `https://us1.download.voucherify.io` (US)\n- `https://as1.download.voucherify.io` (Asia)\n\n**Token:** Can be found within the `result` parameter of the [Get Export](/api-reference/exports/get-export) method response.\n\n",
"parameters": [],
"security": [
{
diff --git a/documentation/openapi/loyalties-v2.json b/documentation/openapi/loyalties-v2.json
index 65e1153df..0d08ba97b 100644
--- a/documentation/openapi/loyalties-v2.json
+++ b/documentation/openapi/loyalties-v2.json
@@ -25,7 +25,7 @@
"tags": [
{
"name": "Programs",
- "description": "Loyalty program CRUD, lifecycle management, program-scoped resource assignments (card definitions, earning rules, rewards, tier structures), member management (create, list, get, activate, deactivate, delete), card operations (points adjustment, pending points, expiring points, transactions), reward purchases, and activity history."
+ "description": "Loyalty program CRUD, lifecycle management, program-scoped resource assignments (card definitions, earning rules, rewards, tier structures), member management (create, list, get, activate, deactivate, delete), membership retrieval (member + program + cards with tier progress, by customer ID, customer source ID, or member ID), card operations (points adjustment, pending points, expiring points, transactions), reward purchases, and activity history."
},
{
"name": "Card Definitions",
@@ -60,7 +60,7 @@
"Programs"
],
"summary": "Create program",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nCreates a new loyalty program. The program can be created with status `DRAFT` (default) or\n`ACTIVE`. When created as `ACTIVE`, the program must be connected to at least one active\ncard definition and at least one active earning rule (provided via `card_definitions` and\n`earning_rules` arrays), otherwise the request is rejected with `423 Locked`\n(keys `missing_active_card_definition` / `missing_active_earning_rule`).\nOptionally assigns card definitions, earning rules, rewards and tier structures in the same request.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nCreates a new loyalty program. The program can be created with status `DRAFT` (default) or\n`ACTIVE`. When created as `ACTIVE`, the program must be connected to at least one active\ncard definition and at least one active earning rule (provided via `card_definitions` and\n`earning_rules` arrays), otherwise the request is rejected with `423 Locked`\n(keys `missing_active_card_definition` / `missing_active_earning_rule`).\nOptionally assigns card definitions, earning rules, rewards and tier structures in the same request.",
"requestBody": {
"required": true,
"content": {
@@ -140,7 +140,7 @@
"Programs"
],
"summary": "List programs",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of loyalty programs. Supports filtering by `id`, `name`,\n`status` and `created_at`. The same field cannot be used in both ascending and descending\norder at once.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of loyalty programs. Supports filtering by `id`, `name`,\n`status` and `created_at`. The same field cannot be used in both ascending and descending\norder at once.",
"parameters": [
{
"name": "filters",
@@ -285,7 +285,7 @@
"Programs"
],
"summary": "Get program",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a single loyalty program by its id.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a single loyalty program by its id.",
"parameters": [
{
"name": "id",
@@ -357,7 +357,7 @@
"Programs"
],
"summary": "Update program",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nUpdates a loyalty program. When the program is not in `DRAFT` status, only `name` and\n`metadata` may be changed (other properties are restricted after leaving draft).",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nUpdates a loyalty program. When the program is not in `DRAFT` status, only `name` and\n`metadata` may be changed (other properties are restricted after leaving draft).",
"parameters": [
{
"name": "id",
@@ -439,7 +439,7 @@
"Programs"
],
"summary": "Delete program",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nSoft-deletes a loyalty program and removes all of its card definition, earning rule,\nreward and tier structure assignments.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nSoft-deletes a loyalty program and removes all of its card definition, earning rule,\nreward and tier structure assignments.",
"parameters": [
{
"name": "id",
@@ -513,7 +513,7 @@
"Programs"
],
"summary": "Activate program",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nTransitions the program to `ACTIVE` status. Allowed transitions to `ACTIVE` are from\n`DRAFT` and `INACTIVE`. Before activation the program's card definition, earning rule\nand tier structure assignments are validated (at least one active card definition and\nearning rule is required). An invalid state transition is rejected with `400`\n(key `invalid_state_transition`). No request body.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nTransitions the program to `ACTIVE` status. Allowed transitions to `ACTIVE` are from\n`DRAFT` and `INACTIVE`. Before activation the program's card definition, earning rule\nand tier structure assignments are validated (at least one active card definition and\nearning rule is required). An invalid state transition is rejected with `400`\n(key `invalid_state_transition`). No request body.",
"parameters": [
{
"name": "id",
@@ -597,7 +597,7 @@
"Programs"
],
"summary": "Deactivate program",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nTransitions the program to `INACTIVE` status. Only an `ACTIVE` program can be deactivated.\nAn invalid state transition is rejected with `400` (key `invalid_state_transition`).\nNo request body.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nTransitions the program to `INACTIVE` status. Only an `ACTIVE` program can be deactivated.\nAn invalid state transition is rejected with `400` (key `invalid_state_transition`).\nNo request body.",
"parameters": [
{
"name": "id",
@@ -671,7 +671,7 @@
"Programs"
],
"summary": "List program activities",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of activities recorded for a program (created, updated,\ndeleted, activated, deactivated and assignment changes). Supports filtering by activity\n`id`, `type` and `created_at`.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of activities recorded for a program (created, updated,\ndeleted, activated, deactivated and assignment changes). Supports filtering by activity\n`id`, `type` and `created_at`.",
"parameters": [
{
"name": "id",
@@ -822,7 +822,7 @@
"Programs"
],
"summary": "List program card definition assignments",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of card definitions assigned to the program.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of card definitions assigned to the program.",
"parameters": [
{
"name": "id",
@@ -955,7 +955,7 @@
"Programs"
],
"summary": "Batch assign/unassign card definitions",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nAssigns and/or unassigns card definitions to/from a program in a single batch.\nUnassign operations are processed before assign operations.\nThe program must be in `DRAFT` status - otherwise the request is rejected with\n`423 Locked` (key `non_draft_program`). In strict mode (default) missing card\ndefinitions, inactive card definitions or missing assignments cause the whole\nbatch to fail.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nAssigns and/or unassigns card definitions to/from a program in a single batch.\nUnassign operations are processed before assign operations.\nThe program must be in `DRAFT` status - otherwise the request is rejected with\n`423 Locked` (key `non_draft_program`). In strict mode (default) missing card\ndefinitions, inactive card definitions or missing assignments cause the whole\nbatch to fail.",
"parameters": [
{
"name": "id",
@@ -1049,7 +1049,7 @@
"Programs"
],
"summary": "List program earning rule assignments",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of earning rules assigned to the program.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of earning rules assigned to the program.",
"parameters": [
{
"name": "id",
@@ -1182,7 +1182,7 @@
"Programs"
],
"summary": "Batch assign/unassign earning rules",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nAssigns and/or unassigns earning rules to/from a program in a single batch.\nUnassign operations are processed before assign operations. When the program is\n`ACTIVE`, the batch is validated to leave at least one active earning rule assigned.\nIn strict mode (default) missing earning rules or missing assignments cause the whole\nbatch to fail.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nAssigns and/or unassigns earning rules to/from a program in a single batch.\nUnassign operations are processed before assign operations. When the program is\n`ACTIVE`, the batch is validated to leave at least one active earning rule assigned.\nIn strict mode (default) missing earning rules or missing assignments cause the whole\nbatch to fail.",
"parameters": [
{
"name": "id",
@@ -1276,7 +1276,7 @@
"Programs"
],
"summary": "List program tier structure assignments",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of tier structures assigned to the program.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of tier structures assigned to the program.",
"parameters": [
{
"name": "id",
@@ -1409,7 +1409,7 @@
"Programs"
],
"summary": "Batch assign/unassign tier structures",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nAssigns and/or unassigns tier structures to/from a program in a single batch.\nUnassign operations are processed before assign operations. Unassigning is only\nallowed while the program is in `DRAFT` status - otherwise the request is rejected\nwith `423 Locked` (key `non_draft_program`). A program can have at most one tier\nstructure assigned. In strict mode (default) missing tier structures, inactive tier\nstructures or missing assignments cause the whole batch to fail.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nAssigns and/or unassigns tier structures to/from a program in a single batch.\nUnassign operations are processed before assign operations. Unassigning is only\nallowed while the program is in `DRAFT` status - otherwise the request is rejected\nwith `423 Locked` (key `non_draft_program`). A program can have at most one tier\nstructure assigned. In strict mode (default) missing tier structures, inactive tier\nstructures or missing assignments cause the whole batch to fail.",
"parameters": [
{
"name": "id",
@@ -1503,7 +1503,7 @@
"Programs"
],
"summary": "List program reward assignments",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of rewards assigned to the program, including their stock configuration and redemption counters.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of rewards assigned to the program, including their stock configuration and redemption counters.",
"parameters": [
{
"name": "programId",
@@ -1636,7 +1636,7 @@
"Programs"
],
"summary": "Batch assign/unassign rewards",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nAssigns and/or unassigns rewards to/from a program in a single batch.\nUnassign operations are processed before assign operations. Each reward to assign\nmust include its `stock` configuration. In strict mode (default) missing rewards\nor missing assignments cause the whole batch to fail (`404 Not Found`).",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nAssigns and/or unassigns rewards to/from a program in a single batch.\nUnassign operations are processed before assign operations. Each reward to assign\nmust include its `stock` configuration. In strict mode (default) missing rewards\nor missing assignments cause the whole batch to fail (`404 Not Found`).",
"parameters": [
{
"name": "programId",
@@ -1720,7 +1720,7 @@
"Programs"
],
"summary": "Update program reward assignment",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nUpdates the stock configuration of a reward assigned to a program.\nReturns the updated reward assignment.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nUpdates the stock configuration of a reward assigned to a program.\nReturns the updated reward assignment.",
"parameters": [
{
"name": "programId",
@@ -1813,14 +1813,14 @@
"tags": [
"Programs"
],
- "summary": "Create a program member",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nEnrolls a customer as a member of the loyalty program. The program must be in\n`ACTIVE` status (423 otherwise) and the customer must exist. A customer can be a\nmember of a given program only once - creating a second member for the same\ncustomer returns 409 (`member_already_exists`).\n\nLoyalty cards are created automatically for all card definitions assigned to the\nprogram and returned in the `cards` array. Card `code` generation is asynchronous -\n`code` may be `null` immediately after creation.",
+ "summary": "Create program member",
+ "description": "Enrolls a customer as a member of the loyalty program. The program must be in `ACTIVE` status (returns a `423` error otherwise) and the customer must exist in Voucherify. A customer can be a member of a given program only once - creating a second member for the same customer ID returns `409` error (`member_already_exists`).\n\nLoyalty cards are created automatically for all card definitions assigned to the program and returned in the `cards` array. Card `code` generation is asynchronous: `code` may be `null` immediately after creation.",
"parameters": [
{
"name": "programId",
"in": "path",
"required": true,
- "description": "Loyalty program ID (format `lprg_[a-f0-9]+`).",
+ "description": "Unique loyalty program ID (format `lprg_[a-f0-9]+`).",
"schema": {
"type": "string",
"pattern": "^lprg_[a-f0-9]+$"
@@ -1843,11 +1843,146 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/MemberWithCards"
- }}}
+ "$ref": "#/components/schemas/MemberCreateResponse"
+ },
+ "examples": {
+ "Member added to the program": {
+ "value": {
+ "id": "lmbr_12ba1c1a8456b6db8c",
+ "customer_id": "cust_X07elh40iNWLujRmDNmBufxd",
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "status": "ACTIVE",
+ "metadata": {},
+ "created_at": "2026-07-14T16:41:01.201Z",
+ "updated_at": null,
+ "object": "member",
+ "cards": [
+ {
+ "member_role": "OWNER",
+ "created_at": "2026-07-14T16:41:01.214Z",
+ "card": {
+ "id": "lcrd_12ba1c1a86d6b6db8f",
+ "card_definition_id": "lcdef_128f495f720c4bec8c",
+ "card_type": "INDIVIDUAL",
+ "code": null,
+ "lifetime_bucket": {
+ "points": {
+ "total": 0,
+ "earned": 0,
+ "added": 0,
+ "purchased": 0,
+ "purchased_reversed": 0,
+ "subtracted": 0,
+ "expired": 0,
+ "spent": 0,
+ "refunded": 0,
+ "returned": 0,
+ "locked": 0,
+ "unlocked": 0
+ },
+ "pending_points": {
+ "total": 0,
+ "activated": 0,
+ "canceled": 0
+ }
+ },
+ "balance": {
+ "points": 0,
+ "pending_points": 0
+ },
+ "next_expiration": null,
+ "next_activation": null,
+ "object": "card"
+ },
+ "object": "member_card"
+ },
+ {
+ "member_role": "OWNER",
+ "created_at": "2026-07-14T16:41:01.214Z",
+ "card": {
+ "id": "lcrd_12ba1c1a86d6b6db90",
+ "card_definition_id": "lcdef_128f49963c0c4becb7",
+ "card_type": "INDIVIDUAL",
+ "code": null,
+ "lifetime_bucket": {
+ "points": {
+ "total": 0,
+ "earned": 0,
+ "added": 0,
+ "purchased": 0,
+ "purchased_reversed": 0,
+ "subtracted": 0,
+ "expired": 0,
+ "spent": 0,
+ "refunded": 0,
+ "returned": 0,
+ "locked": 0,
+ "unlocked": 0
+ },
+ "pending_points": {
+ "total": 0,
+ "activated": 0,
+ "canceled": 0
+ }
+ },
+ "balance": {
+ "points": 0,
+ "pending_points": 0
+ },
+ "next_expiration": null,
+ "next_activation": null,
+ "object": "card"
+ },
+ "object": "member_card"
+ },
+ {
+ "member_role": "OWNER",
+ "created_at": "2026-07-14T16:41:01.214Z",
+ "card": {
+ "id": "lcrd_12ba1c1a86d6b6db91",
+ "card_definition_id": "lcdef_128f4a88414c4bed69",
+ "card_type": "INDIVIDUAL",
+ "code": null,
+ "lifetime_bucket": {
+ "points": {
+ "total": 0,
+ "earned": 0,
+ "added": 0,
+ "purchased": 0,
+ "purchased_reversed": 0,
+ "subtracted": 0,
+ "expired": 0,
+ "spent": 0,
+ "refunded": 0,
+ "returned": 0,
+ "locked": 0,
+ "unlocked": 0
+ },
+ "pending_points": {
+ "total": 0,
+ "activated": 0,
+ "canceled": 0
+ }
+ },
+ "balance": {
+ "points": 0,
+ "pending_points": 0
+ },
+ "next_expiration": null,
+ "next_activation": null,
+ "object": "card"
+ },
+ "object": "member_card"
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
},
"400": {
- "description": "Validation error - request body or query parameters failed validation, or the operation is not allowed in the current resource state.",
+ "description": "Validation error - request body or path parameters failed validation, or the operation is not allowed in the current resource state.",
"content": {
"application/json": {
"schema": {
@@ -1869,10 +2004,10 @@
"code": 404,
"key": "not_found",
"message": "Resource not found",
- "details": "Cannot find member with id lmbr_128f962dbc8c4ba5d",
- "request_id": "v-12bdef050f2cb1ef71",
- "resource_id": "lmbr_128f962dbc8c4ba5d",
- "resource_type": "member"
+ "details": "Cannot find customer with id cust_X07elh40iNWLujRmDNmBufd",
+ "request_id": "v-12c30587d84f93b9af",
+ "resource_id": "cust_X07elh40iNWLujRmDNmBufd",
+ "resource_type": "customer"
}
}
}
@@ -1880,21 +2015,43 @@
}
},
"409": {
- "description": "Conflict - e.g. duplicate resource or invalid state transition.",
+ "description": "Conflict - the customer with a given ID has already been added to the loyalty program.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
+ },
+ "examples": {
+ "Member already exists": {
+ "value": {
+ "code": 409,
+ "key": "member_already_exists",
+ "message": "Member already exists",
+ "details": "Customer 'cust_X07elh40iNWLujRmDNmBufxd' already is a member of program 'lprg_128f58429f4c4bf7b2'",
+ "request_id": "v-12c3021e930a67865c"
+ }
+ }
}
}
}
},
"423": {
- "description": "Resource locked - a related resource is in a state that prevents this operation.",
+ "description": "Program is not in ACTIVE status.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
+ },
+ "examples": {
+ "Non-active program": {
+ "value": {
+ "code": 423,
+ "key": "non_active_program",
+ "message": "Invalid program status",
+ "details": "Cannot create member when program status is not ACTIVE",
+ "request_id": "v-..."
+ }
+ }
}
}
}
@@ -1917,13 +2074,13 @@
"Programs"
],
"summary": "List program members",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of members of the program. Results can be filtered\nby id, status, customer_id and created_at, and ordered by created_at, status or\ncustomer_id (ascending or descending). The same field cannot be ordered both\nascending and descending at the same time.\nReturns 404 when the program does not exist.\n\nList items do not include the `cards` array - use the get-member endpoint to\nretrieve a member with cards.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of members of the program. Results can be filtered\nby id, status, customer_id and created_at, and ordered by created_at, status or\ncustomer_id (ascending or descending). The same field cannot be ordered both\nascending and descending at the same time.\nReturns 404 when the program does not exist.\n\nList items do not include the `cards` array - use the get-member endpoint to\nretrieve a member with cards.",
"parameters": [
{
"name": "programId",
"in": "path",
"required": true,
- "description": "Loyalty program ID (format `lprg_[a-f0-9]+`).",
+ "description": "Unique loyalty program ID (format `lprg_[a-f0-9]+`).",
"schema": {
"type": "string",
"pattern": "^lprg_[a-f0-9]+$"
@@ -2075,13 +2232,13 @@
"Programs"
],
"summary": "Batch create program members",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nSchedules asynchronous batch creation of program members. The request body is a\nJSON array of member entries (maximum body size 10485760 bytes / 10 MB). The\nrequest is processed asynchronously in batches of 100 entries.\n\nThe program must exist (404) and be in `ACTIVE` status (423). Each entry is\nvalidated during background processing the same way as single member creation;\nentries that fail validation (missing/invalid `customer_id`, unknown customer,\ninvalid `status`, member already exists) are reported per-entry in the async action\nresult and do not fail the whole batch (conflicting members are skipped).\n\nReturns 202 with the identifier of the scheduled async action.",
+ "description": "Schedules asynchronous batch creation of program members. The request body is a JSON array of member entries (maximum body size is 10 MB). The request is processed asynchronously in batches of 100 entries.\n\nThe program must exist (otherwise, it returns a `404` error) and be in `ACTIVE` status (otherwise, it returns a `423` error). Supported member fields are validated during background processing using the same domain validation rules as single member creation. Entries that fail validation (missing/invalid `customer_id`, unknown customer, invalid `status`, duplicate `customer_id` within the same batch, member already exists) are reported per-entry individually in the report linked from the async action result. The failed entries do not fail the whole batch (conflicting members are skipped).\n\nReturns `202` status with the identifier of the scheduled async action. Use the [GET Async Action](/api-reference/async-actions/get-async-action) endpoint to check the status of the batch creation. You can also check the processing status and the result in the Audit log – [Background tasks](/analyze/audit-logs#background-tasks) in the Voucherify dashboard.",
"parameters": [
{
"name": "programId",
"in": "path",
"required": true,
- "description": "Loyalty program ID (format `lprg_[a-f0-9]+`).",
+ "description": "Unique loyalty program ID (format `lprg_[a-f0-9]+`).",
"schema": {
"type": "string",
"pattern": "^lprg_[a-f0-9]+$"
@@ -2104,37 +2261,56 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/MemberBatchScheduleResponse"
- }
- }
- }
- },
- "400": {
- "description": "Validation error - request body or query parameters failed validation, or the operation is not allowed in the current resource state.",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ErrorResponse"
+ "$ref": "#/components/schemas/MemberBatchCreateResponse"
+ },
+ "examples": {
+ "Create members in batch: Async action": {
+ "value": {
+ "async_action_id": "aa_12c30928a207efcc66"
+ }
+ }
}
}
}
},
"404": {
- "description": "Resource not found.",
+ "description": "Resource not found - the program ID could not be found.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
+ },
+ "examples": {
+ "Program not found": {
+ "value": {
+ "code": 404,
+ "key": "not_found",
+ "message": "Resource not found",
+ "details": "Cannot find program with id lprg_128f5829f4c4bf7b2",
+ "request_id": "v-12c31c59130a67bb28",
+ "resource_id": "lprg_128f5829f4c4bf7b2",
+ "resource_type": "program"
+ }
+ }
}
}
}
},
- "409": {
- "description": "Conflict - e.g. duplicate resource or invalid state transition.",
+ "413": {
+ "description": "Payload too large - the request body exceeds the 10 MB limit.",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/ErrorResponse"
+ "$ref": "#/components/schemas/BadRequest"
+ },
+ "examples": {
+ "Request Entity Too Large": {
+ "value": {
+ "statusCode": 413,
+ "error": "Request Entity Too Large",
+ "message": "Payload content length greater than maximum allowed: 10485760"
+ }
+ }
}
}
}
@@ -2145,6 +2321,17 @@
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
+ },
+ "examples": {
+ "Non-active program": {
+ "value": {
+ "code": 423,
+ "key": "non_active_program",
+ "message": "Invalid program status",
+ "details": "Cannot create members when program status is not ACTIVE",
+ "request_id": "v-12c31c59130a67bb28"
+ }
+ }
}
}
}
@@ -2168,14 +2355,14 @@
"tags": [
"Programs"
],
- "summary": "Get a program member",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a single member of the program together with all its loyalty cards.\nEach card includes the current balance, lifetime bucket counters, and next\nexpiration/activation info.\n\nCard `code` may be `null` shortly after member creation because card code\ngeneration is asynchronous.\n\nReturns 404 when the program or member does not exist.",
+ "summary": "Get program member",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a single member of the program together with all its loyalty cards.\nEach card includes the current balance, lifetime bucket counters, and next\nexpiration/activation info.\n\nCard `code` may be `null` shortly after member creation because card code\ngeneration is asynchronous.\n\nReturns 404 when the program or member does not exist.",
"parameters": [
{
"name": "programId",
"in": "path",
"required": true,
- "description": "Loyalty program ID (format `lprg_[a-f0-9]+`).",
+ "description": "Unique loyalty program ID (format `lprg_[a-f0-9]+`).",
"schema": {
"type": "string",
"pattern": "^lprg_[a-f0-9]+$"
@@ -2372,7 +2559,8 @@
"resource_id": "lmbr_128f962dbc8c4ba5d",
"resource_type": "member"
}
- }}
+ }
+ }
}
}
},
@@ -2393,14 +2581,14 @@
"tags": [
"Programs"
],
- "summary": "Delete a program member",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nDeletes the member from the program (soft delete - status becomes `DELETED`) and\ndeletes the member's cards. Records a `vl.member.deleted` activity. Returns the\ndeleted member (without cards). Returns 404 when the program or member does not\nexist.",
+ "summary": "Delete program member",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nDeletes the member from the program (soft delete - status becomes `DELETED`) and\ndeletes the member's cards. Records a `vl.member.deleted` activity. Returns the\ndeleted member (without cards). Returns 404 when the program or member does not\nexist.",
"parameters": [
{
"name": "programId",
"in": "path",
"required": true,
- "description": "Loyalty program ID (format `lprg_[a-f0-9]+`).",
+ "description": "Unique loyalty program ID (format `lprg_[a-f0-9]+`).",
"schema": {
"type": "string",
"pattern": "^lprg_[a-f0-9]+$"
@@ -2471,49 +2659,210 @@
}
}
},
- "/v2/loyalties/programs/{programId}/members/{memberId}/activate": {
- "post": {
- "operationId": "activateProgramMember",
+ "/v2/loyalties/programs/{programId}/memberships/{customerId}": {
+ "parameters": [
+ {
+ "name": "programId",
+ "in": "path",
+ "required": true,
+ "description": "Unique loyalty program ID (format `lprg_[a-f0-9]+`).",
+ "schema": {
+ "type": "string",
+ "pattern": "^lprg_[a-f0-9]+$"
+ }
+ },
+ {
+ "name": "customerId",
+ "in": "path",
+ "required": true,
+ "description": "Unique identifier of the customer or member, interpreted according to `identification_type`: a Voucherify customer ID (`cust_...`), a customer `source_id`, or a loyalty member ID (`lmbr_...`).",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "get": {
+ "operationId": "getProgramMembership",
"tags": [
"Programs"
],
- "summary": "Activate a program member",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nMoves the member to `ACTIVE` status and records a `vl.member.activated` activity.\nNo request body. Returns 404 when the program or member does not exist. Returns 400\n(`invalid_state_transition`) when the member cannot be activated from its current\nstate.",
+ "summary": "Get program membership",
+ "description": "Returns a single membership - the member's full loyalty profile within the program, combining the member, the program, and the member's loyalty cards enriched with tier progress. Use `identification_type` to choose how the `customerId` path value is interpreted.\n\nReturns 404 when the program does not exist, or when the customer/member has no membership in the program.",
"parameters": [
{
- "name": "programId",
- "in": "path",
- "required": true,
- "description": "Loyalty program ID (format `lprg_[a-f0-9]+`).",
- "schema": {
- "type": "string",
- "pattern": "^lprg_[a-f0-9]+$"
- }
- },
- {
- "name": "memberId",
- "in": "path",
- "required": true,
- "description": "Program member ID (format `lmbr_[a-f0-9]+`).",
+ "name": "identification_type",
+ "in": "query",
+ "required": false,
+ "description": "Defines how the `customerId` path value is interpreted. `customer_id` - Voucherify customer ID (default). `customer_source_id` - customer's `source_id`. `member_id` - loyalty member ID.",
"schema": {
"type": "string",
- "pattern": "^lmbr_[a-f0-9]+$"
+ "enum": [
+ "customer_id",
+ "customer_source_id",
+ "member_id"
+ ],
+ "default": "customer_id"
}
}
],
"responses": {
"200": {
- "description": "The activated member (without cards).",
+ "description": "The membership in the program.",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/Member"
+ "$ref": "#/components/schemas/Membership"
+ },
+ "examples": {
+ "Get membership": {
+ "value": {
+ "member": {
+ "id": "lmbr_128f962dbc8c4ba5dc",
+ "customer_id": "cust_6onRrs4kCnvSVrTs5YtDPFBG",
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "status": "ACTIVE",
+ "metadata": {},
+ "created_at": "2026-06-11T15:59:41.298Z",
+ "updated_at": null,
+ "object": "member"
+ },
+ "program": {
+ "id": "lprg_128f58429f4c4bf7b2",
+ "name": "Summer Rewards",
+ "status": "ACTIVE",
+ "metadata": {},
+ "object": "program"
+ },
+ "cards": [
+ {
+ "member_role": "OWNER",
+ "created_at": "2026-06-11T15:59:41.303Z",
+ "tier_progress": {
+ "current": {
+ "id": "lt_128f4a88414c4bed6a",
+ "name": "Gold",
+ "activated_at": "2026-06-15T00:00:00.000Z",
+ "expires_at": "2027-06-15T00:00:00.000Z",
+ "points": {
+ "current": 740,
+ "min": 500,
+ "max": 1500
+ }
+ },
+ "tier_structure": {
+ "id": "lts_128f4a88414c4bed69",
+ "object": "tier_structure"
+ },
+ "deferred": [],
+ "risks": [
+ {
+ "type": "TIER_DOWNGRADE",
+ "date": "2026-09-01T00:00:00.000Z",
+ "tier_id": "lt_128f4a88414c4bed68"
+ }
+ ],
+ "opportunities": [],
+ "object": "member_tier_progress"
+ },
+ "card": {
+ "id": "lcrd_128f962dbd8c4ba5df",
+ "card_definition_id": "lcdef_128f495f720c4bec8c",
+ "card_type": "INDIVIDUAL",
+ "code": "SummerTime-7z8dWawICd",
+ "lifetime_bucket": {
+ "points": {
+ "total": 740,
+ "earned": 40,
+ "added": 700,
+ "purchased": 0,
+ "purchased_reversed": 0,
+ "subtracted": 30,
+ "expired": 300,
+ "spent": 250,
+ "refunded": 0,
+ "returned": 0,
+ "locked": 250,
+ "unlocked": 250
+ },
+ "pending_points": {
+ "total": 160,
+ "activated": 40,
+ "canceled": 0
+ }
+ },
+ "balance": {
+ "points": 160,
+ "pending_points": 120
+ },
+ "next_expiration": {
+ "points": 160,
+ "date": "2026-08-08"
+ },
+ "next_activation": {
+ "points": 10,
+ "type": "PERIOD_BASED",
+ "date": "2026-07-20"
+ },
+ "object": "card"
+ },
+ "object": "member_card"
+ },
+ {
+ "member_role": "OWNER",
+ "created_at": "2026-06-11T15:59:41.303Z",
+ "card": {
+ "id": "lcrd_128f962dbd8c4ba5e0",
+ "card_definition_id": "lcdef_128f49963c0c4becb7",
+ "card_type": "INDIVIDUAL",
+ "code": "AutumnTime-R02hVARx33",
+ "lifetime_bucket": {
+ "points": {
+ "total": 50,
+ "earned": 0,
+ "added": 50,
+ "purchased": 0,
+ "purchased_reversed": 0,
+ "subtracted": 0,
+ "expired": 0,
+ "spent": 0,
+ "refunded": 0,
+ "returned": 0,
+ "locked": 0,
+ "unlocked": 0
+ },
+ "pending_points": {
+ "total": 160,
+ "activated": 0,
+ "canceled": 0
+ }
+ },
+ "balance": {
+ "points": 50,
+ "pending_points": 160
+ },
+ "next_expiration": {
+ "points": 50,
+ "date": "2026-12-23"
+ },
+ "next_activation": {
+ "points": 160,
+ "type": "FIXED_DATES",
+ "date": "2026-12-23"
+ },
+ "object": "card"
+ },
+ "object": "member_card"
+ }
+ ],
+ "object": "membership"
+ }
+ }
}
}
}
},
"400": {
- "description": "Validation error - request body or query parameters failed validation, or the operation is not allowed in the current resource state.",
+ "description": "Validation error - `identification_type` has an unsupported value.",
"content": {
"application/json": {
"schema": {
@@ -2523,21 +2872,24 @@
}
},
"404": {
- "description": "Resource not found.",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ErrorResponse"
- }
- }
- }
- },
- "409": {
- "description": "Conflict - e.g. duplicate resource or invalid state transition.",
+ "description": "Resource not found - the program does not exist, or the customer/member has no membership in the program.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
+ },
+ "examples": {
+ "Member not found": {
+ "value": {
+ "code": 404,
+ "key": "not_found",
+ "message": "Resource not found",
+ "details": "Cannot find member with id cust_6onRrs4kCnvSVrTs5YtDPFBG",
+ "request_id": "v-12bdef050f2cb1ef71",
+ "resource_id": "cust_6onRrs4kCnvSVrTs5YtDPFBG",
+ "resource_type": "member"
+ }
+ }
}
}
}
@@ -2555,20 +2907,104 @@
}
}
},
- "/v2/loyalties/programs/{programId}/members/{memberId}/deactivate": {
+ "/v2/loyalties/programs/{programId}/members/{memberId}/activate": {
"post": {
- "operationId": "deactivateProgramMember",
+ "operationId": "activateProgramMember",
"tags": [
"Programs"
],
- "summary": "Deactivate a program member",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nMoves the member to `INACTIVE` status and records a `vl.member.deactivated`\nactivity. No request body. Returns 404 when the program or member does not exist.\nReturns 400 (`invalid_state_transition`) when the member cannot be deactivated from\nits current state.",
+ "summary": "Activate program member",
+ "description": "Moves the member to `ACTIVE` status and records a `vl.member.activated` activity.\nNo request body. Returns 404 when the program or member does not exist. Returns 400\n(`invalid_state_transition`) when the member cannot be activated from its current\nstate.",
"parameters": [
{
"name": "programId",
"in": "path",
"required": true,
- "description": "Loyalty program ID (format `lprg_[a-f0-9]+`).",
+ "description": "Unique loyalty program ID (format `lprg_[a-f0-9]+`).",
+ "schema": {
+ "type": "string",
+ "pattern": "^lprg_[a-f0-9]+$"
+ }
+ },
+ {
+ "name": "memberId",
+ "in": "path",
+ "required": true,
+ "description": "Program member ID (format `lmbr_[a-f0-9]+`).",
+ "schema": {
+ "type": "string",
+ "pattern": "^lmbr_[a-f0-9]+$"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "The activated member (without cards).",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Member"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Validation error - request body or query parameters failed validation, or the operation is not allowed in the current resource state.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Resource not found.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "409": {
+ "description": "Conflict - e.g. duplicate resource or invalid state transition.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "500": {
+ "description": "Internal server error.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "/v2/loyalties/programs/{programId}/members/{memberId}/deactivate": {
+ "post": {
+ "operationId": "deactivateProgramMember",
+ "tags": [
+ "Programs"
+ ],
+ "summary": "Deactivate program member",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nMoves the member to `INACTIVE` status and records a `vl.member.deactivated`\nactivity. No request body. Returns 404 when the program or member does not exist.\nReturns 400 (`invalid_state_transition`) when the member cannot be deactivated from\nits current state.",
+ "parameters": [
+ {
+ "name": "programId",
+ "in": "path",
+ "required": true,
+ "description": "Unique loyalty program ID (format `lprg_[a-f0-9]+`).",
"schema": {
"type": "string",
"pattern": "^lprg_[a-f0-9]+$"
@@ -2646,13 +3082,13 @@
"Programs"
],
"summary": "List member activities",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of activities recorded for the member (created,\ndeleted, activated, deactivated, card assigned, card unassigned). Results can be\nfiltered by id, type and created_at. Returns 404 when the program or member does\nnot exist.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of activities recorded for the member (created,\ndeleted, activated, deactivated, card assigned, card unassigned). Results can be\nfiltered by id, type and created_at. Returns 404 when the program or member does\nnot exist.",
"parameters": [
{
"name": "programId",
"in": "path",
"required": true,
- "description": "Loyalty program ID (format `lprg_[a-f0-9]+`).",
+ "description": "Unique loyalty program ID (format `lprg_[a-f0-9]+`).",
"schema": {
"type": "string",
"pattern": "^lprg_[a-f0-9]+$"
@@ -2802,13 +3238,13 @@
"Programs"
],
"summary": "Add or subtract card points",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nManually adjusts the points balance of the member's card. A positive `points` value\ncreates an `ADMIN_CREDIT` card transaction (points addition - the added points get\nan expiration date calculated from the card definition's points expiration\nsettings); a negative value creates an `ADMIN_DEBIT` card transaction (points\nsubtraction). When `points` is `0`, no transaction is created and the result status\nis `NO_CHANGE`.\n\nThe transaction is created with status `PENDING` and processed asynchronously.\nBoth the program and the member must be in `ACTIVE` status (423 otherwise). Returns\n404 when the program, member or card does not exist.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nManually adjusts the points balance of the member's card. A positive `points` value\ncreates an `ADMIN_CREDIT` card transaction (points addition - the added points get\nan expiration date calculated from the card definition's points expiration\nsettings); a negative value creates an `ADMIN_DEBIT` card transaction (points\nsubtraction). When `points` is `0`, no transaction is created and the result status\nis `NO_CHANGE`.\n\nThe transaction is created with status `PENDING` and processed asynchronously.\nBoth the program and the member must be in `ACTIVE` status (423 otherwise). Returns\n404 when the program, member or card does not exist.",
"parameters": [
{
"name": "programId",
"in": "path",
"required": true,
- "description": "Loyalty program ID (format `lprg_[a-f0-9]+`).",
+ "description": "Unique loyalty program ID (format `lprg_[a-f0-9]+`).",
"schema": {
"type": "string",
"pattern": "^lprg_[a-f0-9]+$"
@@ -2876,16 +3312,6 @@
}
}
},
- "409": {
- "description": "Conflict - e.g. duplicate resource or invalid state transition.",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ErrorResponse"
- }
- }
- }
- },
"423": {
"description": "Resource locked - a related resource is in a state that prevents this operation.",
"content": {
@@ -2916,13 +3342,13 @@
"Programs"
],
"summary": "List card activities",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of activities recorded for the member's card\n(created, assigned, unassigned, code generation succeeded/failed). Results can be\nfiltered by id, type and created_at. Returns 404 when the program, member or card\ndoes not exist.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of activities recorded for the member's card\n(created, assigned, unassigned, code generation succeeded/failed). Results can be\nfiltered by id, type and created_at. Returns 404 when the program, member or card\ndoes not exist.",
"parameters": [
{
"name": "programId",
"in": "path",
"required": true,
- "description": "Loyalty program ID (format `lprg_[a-f0-9]+`).",
+ "description": "Unique loyalty program ID (format `lprg_[a-f0-9]+`).",
"schema": {
"type": "string",
"pattern": "^lprg_[a-f0-9]+$"
@@ -3082,13 +3508,13 @@
"Programs"
],
"summary": "List card pending points buckets",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of pending points buckets of the member's card.\nPending points are earned points waiting for activation (period-based, fixed-dates\nor event-based activation, per the card definition's pending points settings).\nResults can be ordered by activation `date`. Returns 404 when the program, member\nor card does not exist.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of pending points buckets of the member's card.\nPending points are earned points waiting for activation (period-based, fixed-dates\nor event-based activation, per the card definition's pending points settings).\nResults can be ordered by activation `date`. Returns 404 when the program, member\nor card does not exist.",
"parameters": [
{
"name": "programId",
"in": "path",
"required": true,
- "description": "Loyalty program ID (format `lprg_[a-f0-9]+`).",
+ "description": "Unique loyalty program ID (format `lprg_[a-f0-9]+`).",
"schema": {
"type": "string",
"pattern": "^lprg_[a-f0-9]+$"
@@ -3234,13 +3660,13 @@
"Programs"
],
"summary": "Activate a pending points bucket",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nManually activates a pending points bucket before its scheduled activation date,\ncreating a `PENDING_POINTS_ACTIVATED` card transaction (status `PENDING`, processed\nasynchronously). No request body.\n\nThe program and member must be in `ACTIVE` status, the card definition must have\npending points enabled, the bucket must be in `PENDING` status, and the bucket's\nactivation date must be in the future (423 otherwise). Returns 404 when the\nprogram, member, card or bucket does not exist.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nManually activates a pending points bucket before its scheduled activation date,\ncreating a `PENDING_POINTS_ACTIVATED` card transaction (status `PENDING`, processed\nasynchronously). No request body.\n\nThe program and member must be in `ACTIVE` status, the card definition must have\npending points enabled, the bucket must be in `PENDING` status, and the bucket's\nactivation date must be in the future (423 otherwise). Returns 404 when the\nprogram, member, card or bucket does not exist.",
"parameters": [
{
"name": "programId",
"in": "path",
"required": true,
- "description": "Loyalty program ID (format `lprg_[a-f0-9]+`).",
+ "description": "Unique loyalty program ID (format `lprg_[a-f0-9]+`).",
"schema": {
"type": "string",
"pattern": "^lprg_[a-f0-9]+$"
@@ -3348,13 +3774,13 @@
"Programs"
],
"summary": "Cancel a pending points bucket",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nCancels a pending points bucket so its points are never activated, creating a\n`PENDING_POINTS_CANCELED` card transaction (status `PENDING`, processed\nasynchronously). No request body.\n\nThe program and member must be in `ACTIVE` status, the card definition must have\npending points enabled, the bucket must be in `PENDING` status, and the bucket's\nactivation date must be in the future (423 otherwise). Returns 404 when the\nprogram, member, card or bucket does not exist.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nCancels a pending points bucket so its points are never activated, creating a\n`PENDING_POINTS_CANCELED` card transaction (status `PENDING`, processed\nasynchronously). No request body.\n\nThe program and member must be in `ACTIVE` status, the card definition must have\npending points enabled, the bucket must be in `PENDING` status, and the bucket's\nactivation date must be in the future (423 otherwise). Returns 404 when the\nprogram, member, card or bucket does not exist.",
"parameters": [
{
"name": "programId",
"in": "path",
"required": true,
- "description": "Loyalty program ID (format `lprg_[a-f0-9]+`).",
+ "description": "Unique loyalty program ID (format `lprg_[a-f0-9]+`).",
"schema": {
"type": "string",
"pattern": "^lprg_[a-f0-9]+$"
@@ -3462,13 +3888,13 @@
"Programs"
],
"summary": "List card expiring points buckets",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of points expiration buckets of the member's card.\nEach bucket groups active points sharing the same expiration date and expiration\ntype. Results can be ordered by `expiration_date`. Returns 404 when the program,\nmember or card does not exist.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of points expiration buckets of the member's card.\nEach bucket groups active points sharing the same expiration date and expiration\ntype. Results can be ordered by `expiration_date`. Returns 404 when the program,\nmember or card does not exist.",
"parameters": [
{
"name": "programId",
"in": "path",
"required": true,
- "description": "Loyalty program ID (format `lprg_[a-f0-9]+`).",
+ "description": "Unique loyalty program ID (format `lprg_[a-f0-9]+`).",
"schema": {
"type": "string",
"pattern": "^lprg_[a-f0-9]+$"
@@ -3614,13 +4040,13 @@
"Programs"
],
"summary": "Expire a points bucket",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nManually expires a points bucket before its scheduled expiration date, creating an\n`ADMIN_POINTS_EXPIRATION` card transaction (status `PENDING`, processed\nasynchronously). No request body.\n\nThe program and member must be in `ACTIVE` status, the card definition must have\npoints expiration enabled, the bucket must be in `ACTIVE` status, and the bucket's\nexpiration date must not be in the past (423 otherwise). Returns 404 when the\nprogram, member, card or bucket does not exist.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nManually expires a points bucket before its scheduled expiration date, creating an\n`ADMIN_POINTS_EXPIRATION` card transaction (status `PENDING`, processed\nasynchronously). No request body.\n\nThe program and member must be in `ACTIVE` status, the card definition must have\npoints expiration enabled, the bucket must be in `ACTIVE` status, and the bucket's\nexpiration date must not be in the past (423 otherwise). Returns 404 when the\nprogram, member, card or bucket does not exist.",
"parameters": [
{
"name": "programId",
"in": "path",
"required": true,
- "description": "Loyalty program ID (format `lprg_[a-f0-9]+`).",
+ "description": "Unique loyalty program ID (format `lprg_[a-f0-9]+`).",
"schema": {
"type": "string",
"pattern": "^lprg_[a-f0-9]+$"
@@ -3728,13 +4154,13 @@
"Programs"
],
"summary": "List card transactions",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of transactions of the member's card. Results can\nbe filtered by id and created_at, and ordered by `created_at` (default\n`-created_at`, newest first). Returns 404 when the program, member or card does not\nexist.",
+ "description": "Returns a cursor-paginated list of transactions of the member's card. Results can be filtered by `id` and `created_at`, and ordered by `created_at` (default `-created_at`, newest first). Returns `404` when the program, member or card does not exist.",
"parameters": [
{
"name": "programId",
"in": "path",
"required": true,
- "description": "Loyalty program ID (format `lprg_[a-f0-9]+`).",
+ "description": "Unique loyalty program ID (format `lprg_[a-f0-9]+`).",
"schema": {
"type": "string",
"pattern": "^lprg_[a-f0-9]+$"
@@ -3809,7 +4235,7 @@
"name": "cursor",
"in": "query",
"required": false,
- "description": "Pagination cursor returned in the `cursor.next` field of a previous response.\nMust match the pattern `^lcrsctx_[a-f0-9]+$`.",
+ "description": "Pagination cursor returned in the `cursor.next` field of a previous response. Must match the pattern `^lcrsctx_[a-f0-9]+$`.",
"schema": {
"type": [
"string",
@@ -3824,7 +4250,7 @@
"required": false,
"style": "deepObject",
"explode": true,
- "description": "Field-specific filter conditions, passed as a deep object, e.g.\n`filters[id][conditions][$is]=lctx_0f5d0a8878caa3ee5c`. See the\n`CardTransactionListFilters` schema for available fields and conditions.",
+ "description": "Field-specific filter conditions, passed as a deep object, e.g. `filters[id][conditions][$is]=lctx_0f5d0a8878caa3ee5c`.",
"schema": {
"oneOf": [
{
@@ -3844,12 +4270,160 @@
"application/json": {
"schema": {
"$ref": "#/components/schemas/CardTransactionListResponse"
+ },
+ "examples": {
+ "Card transaction list response": {
+ "value": {
+ "data": [
+ {
+ "id": "lctx_1294c0f2ed0e497abc",
+ "card_id": "lcrd_128f962dbd8c4ba5e0",
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "member_id": "lmbr_128f962dbc8c4ba5dc",
+ "card_definition_id": "lcdef_128f49963c0c4becb7",
+ "card_type": "INDIVIDUAL",
+ "type": "ADMIN_CREDIT",
+ "details": {
+ "reason": "Sorry points",
+ "rejection": null,
+ "metadata": {},
+ "points": {
+ "total": 50,
+ "expiration_date": "2026-12-23"
+ }
+ },
+ "status": "APPROVED",
+ "created_at": "2026-06-15T16:18:57.588Z",
+ "updated_at": "2026-06-15T16:18:58.239Z",
+ "object": "card_transaction"
+ },
+ {
+ "id": "lctx_128f9821b6cfd14efa",
+ "card_id": "lcrd_128f962dbd8c4ba5e0",
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "member_id": "lmbr_128f962dbc8c4ba5dc",
+ "card_definition_id": "lcdef_128f49963c0c4becb7",
+ "card_type": "INDIVIDUAL",
+ "type": "PENDING_POINTS_ADDED",
+ "details": {
+ "reason": "AnnualProgram / AutumnPaid",
+ "rejection": null,
+ "metadata": {
+ "event_id": "evcus_128f981fced47cbe9b",
+ "member_id": "lmbr_128f962dbc8c4ba5dc",
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "earning_item_id": "lernei_128f582238cc4bf78e",
+ "earning_rule_id": "lern_128f5822398c4bf78f"
+ },
+ "points": {
+ "total": 10,
+ "date": "2026-12-23",
+ "type": "FIXED_DATES"
+ }
+ },
+ "status": "APPROVED",
+ "created_at": "2026-06-11T16:08:13.275Z",
+ "updated_at": "2026-06-11T16:08:14.223Z",
+ "object": "card_transaction"
+ },
+ {
+ "id": "lctx_128f97f6b88fd14ea8",
+ "card_id": "lcrd_128f962dbd8c4ba5e0",
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "member_id": "lmbr_128f962dbc8c4ba5dc",
+ "card_definition_id": "lcdef_128f49963c0c4becb7",
+ "card_type": "INDIVIDUAL",
+ "type": "PENDING_POINTS_ADDED",
+ "details": {
+ "reason": "AnnualProgram / AutumnPaid",
+ "rejection": null,
+ "metadata": {
+ "event_id": "evcus_128f97f4f7d47cbe6a",
+ "member_id": "lmbr_128f962dbc8c4ba5dc",
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "earning_item_id": "lernei_128f582238cc4bf78e",
+ "earning_rule_id": "lern_128f5822398c4bf78f"
+ },
+ "points": {
+ "total": 10,
+ "date": "2026-12-23",
+ "type": "FIXED_DATES"
+ }
+ },
+ "status": "APPROVED",
+ "created_at": "2026-06-11T16:07:29.250Z",
+ "updated_at": "2026-06-11T16:07:30.271Z",
+ "object": "card_transaction"
+ },
+ {
+ "id": "lctx_128f97848e4fd14e1d",
+ "card_id": "lcrd_128f962dbd8c4ba5e0",
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "member_id": "lmbr_128f962dbc8c4ba5dc",
+ "card_definition_id": "lcdef_128f49963c0c4becb7",
+ "card_type": "INDIVIDUAL",
+ "type": "PENDING_POINTS_ADDED",
+ "details": {
+ "reason": "AnnualProgram / AutumnPaid",
+ "rejection": null,
+ "metadata": {
+ "event_id": "evcus_128f9782100c4ba718",
+ "member_id": "lmbr_128f962dbc8c4ba5dc",
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "earning_item_id": "lernei_128f582238cc4bf78e",
+ "earning_rule_id": "lern_128f5822398c4bf78f"
+ },
+ "points": {
+ "total": 10,
+ "date": "2026-12-23",
+ "type": "FIXED_DATES"
+ }
+ },
+ "status": "APPROVED",
+ "created_at": "2026-06-11T16:05:32.345Z",
+ "updated_at": "2026-06-11T16:05:33.153Z",
+ "object": "card_transaction"
+ },
+ {
+ "id": "lctx_128f974da3cfd14db7",
+ "card_id": "lcrd_128f962dbd8c4ba5e0",
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "member_id": "lmbr_128f962dbc8c4ba5dc",
+ "card_definition_id": "lcdef_128f49963c0c4becb7",
+ "card_type": "INDIVIDUAL",
+ "type": "PENDING_POINTS_ADDED",
+ "details": {
+ "reason": "AnnualProgram / AutumnPaid",
+ "rejection": null,
+ "metadata": {
+ "event_id": "evcus_128f974badd47cbddd",
+ "member_id": "lmbr_128f962dbc8c4ba5dc",
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "earning_item_id": "lernei_128f582238cc4bf78e",
+ "earning_rule_id": "lern_128f5822398c4bf78f"
+ },
+ "points": {
+ "total": 10,
+ "date": "2026-12-23",
+ "type": "FIXED_DATES"
+ }
+ },
+ "status": "APPROVED",
+ "created_at": "2026-06-11T16:04:36.111Z",
+ "updated_at": "2026-06-11T16:04:37.157Z",
+ "object": "card_transaction"
+ }
+ ],
+ "cursor": null,
+ "object": "list"
+ }
+ }
}
}
}
},
"400": {
- "description": "Validation error - request body or query parameters failed validation, or the operation is not allowed in the current resource state.",
+ "description": "Validation error - query parameters failed validation, or the operation is not allowed in the current resource state.",
"content": {
"application/json": {
"schema": {
@@ -3868,16 +4442,6 @@
}
}
},
- "409": {
- "description": "Conflict - e.g. duplicate resource or invalid state transition.",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ErrorResponse"
- }
- }
- }
- },
"500": {
"description": "Internal server error.",
"content": {
@@ -3898,7 +4462,7 @@
"Programs"
],
"summary": "Refund a reward purchase",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nRefunds a previously approved reward purchase transaction. Creates a REFUND-type reward\ntransaction and schedules the return of the spent points to the member's card\n(\"Reward refund transaction created. Points will be returned to the member's card shortly.\").\n\nThe refunded purchase transaction must be of type `PURCHASE` and in `APPROVED` status,\notherwise the request is rejected with a conflict error.\n\nThe request body is optional (an empty payload is allowed). When omitted, default\npolicies are applied: `refund: DEFAULT`, `stock: DEFAULT`.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nRefunds a previously approved reward purchase transaction. Creates a REFUND-type reward\ntransaction and schedules the return of the spent points to the member's card\n(\"Reward refund transaction created. Points will be returned to the member's card shortly.\").\n\nThe refunded purchase transaction must be of type `PURCHASE` and in `APPROVED` status,\notherwise the request is rejected with a conflict error.\n\nThe request body is optional (an empty payload is allowed). When omitted, default\npolicies are applied: `refund: DEFAULT`, `stock: DEFAULT`.",
"parameters": [
{
"name": "programId",
@@ -3985,33 +4549,35 @@
}
},
"/v2/loyalties/programs/{programId}/members/{memberId}/rewards/purchases": {
+ "parameters": [
+ {
+ "name": "programId",
+ "in": "path",
+ "required": true,
+ "description": "Unique loyalty program identifier (format: `lprg_` followed by hexadecimal characters).",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "memberId",
+ "in": "path",
+ "required": true,
+ "description": "Program member ID (format `lmbr_[a-f0-9]+`).",
+ "schema": {
+ "type": "string",
+ "pattern": "^lmbr_[a-f0-9]+$"
+ }
+ }
+ ],
"get": {
"operationId": "listMemberRewardPurchases",
"tags": [
"Programs"
],
"summary": "List member reward purchases",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nLists reward transactions of type `PURCHASE` for the given program member,\nwith cursor-based pagination. Supports filtering by transaction id, reward id\nand creation date.",
+ "description": "Lists reward transactions of type `PURCHASE` for the given program member, with cursor-based pagination. Supports filtering by transaction `id`, `reward_id`, and `created_at` date.\n\nIt returns all persisted purchase transactions for the member, regardless of status. Purchases rejected synchronously at creation time (for example, insufficient card balance or unavailable stock) are not stored and do not appear in this list. Purchases accepted for processing (202) that later fail asynchronously appear with status: \"REJECTED\" and `details.rejection`.",
"parameters": [
- {
- "name": "programId",
- "in": "path",
- "required": true,
- "description": "Unique loyalty program identifier (format: `lprg_` followed by hexadecimal characters).",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "memberId",
- "in": "path",
- "required": true,
- "description": "Program member ID (format `lmbr_[a-f0-9]+`).",
- "schema": {
- "type": "string",
- "pattern": "^lmbr_[a-f0-9]+$"
- }
- },
{
"name": "limit",
"in": "query",
@@ -4089,6 +4655,124 @@
"application/json": {
"schema": {
"$ref": "#/components/schemas/RewardPurchaseListResponse"
+ },
+ "examples": {
+ "Reward purchase list": {
+ "value": {
+ "data": [
+ {
+ "id": "lrtx_12cac270a5e2310b4b",
+ "card_id": "lcrd_128f962dbd8c4ba5e1",
+ "card_transaction_id": "lctx_12cac270a5e2310b4a",
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "member_id": "lmbr_128f962dbc8c4ba5dc",
+ "reward_id": "lrew_1294cebb458e4904a0",
+ "status": "APPROVED",
+ "type": "PURCHASE",
+ "details": {
+ "reason": "Points spent on reward",
+ "rejection": null,
+ "metadata": {},
+ "points": {
+ "total": 500
+ },
+ "result": {
+ "reward": {
+ "id": "lrew_1294cebb458e4904a0",
+ "type": "MATERIAL"
+ },
+ "quantity": 1,
+ "material": {
+ "type": "PRODUCT",
+ "product": {
+ "id": "prod_1294ce96f66d469498"
+ }
+ },
+ "digital": null
+ }
+ },
+ "created_at": "2026-07-27T15:03:27.128Z",
+ "updated_at": "2026-07-27T15:03:28.277Z",
+ "object": "reward_transaction"
+ },
+ {
+ "id": "lrtx_1299a9ded817f57b90",
+ "card_id": "lcrd_128f962dbd8c4ba5df",
+ "card_transaction_id": "lctx_1299a9ded817f57b8f",
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "member_id": "lmbr_128f962dbc8c4ba5dc",
+ "reward_id": "lrew_128f4cefbad47c863e",
+ "status": "APPROVED",
+ "type": "PURCHASE",
+ "details": {
+ "reason": "Points spent on reward",
+ "rejection": null,
+ "metadata": {},
+ "points": {
+ "total": 250
+ },
+ "result": {
+ "reward": {
+ "id": "lrew_128f4cefbad47c863e",
+ "type": "MATERIAL"
+ },
+ "quantity": 1,
+ "material": {
+ "type": "PRODUCT",
+ "product": {
+ "id": "prod_128f4cd0a94c4bef25"
+ }
+ },
+ "digital": null
+ }
+ },
+ "created_at": "2026-06-19T11:50:32.033Z",
+ "updated_at": "2026-06-19T11:50:33.387Z",
+ "object": "reward_transaction"
+ },
+ {
+ "id": "lrtx_129748dbafe65ae86e",
+ "card_id": "lcrd_128f962dbd8c4ba5e1",
+ "card_transaction_id": "lctx_129748dbafe65ae86d",
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "member_id": "lmbr_128f962dbc8c4ba5dc",
+ "reward_id": "lrew_128f4c6710947c85d1",
+ "status": "APPROVED",
+ "type": "PURCHASE",
+ "details": {
+ "reason": "Points spent on reward",
+ "rejection": null,
+ "metadata": {},
+ "points": {
+ "total": 150
+ },
+ "result": {
+ "reward": {
+ "id": "lrew_128f4c6710947c85d1",
+ "type": "MATERIAL"
+ },
+ "quantity": 1,
+ "material": {
+ "type": "PRODUCT",
+ "product": {
+ "id": "prod_128f4c2edf547c859e"
+ }
+ },
+ "digital": null
+ }
+ },
+ "created_at": "2026-06-17T15:29:43.104Z",
+ "updated_at": "2026-06-17T15:29:44.542Z",
+ "object": "reward_transaction"
+ }
+ ],
+ "cursor": {
+ "next": "lcrstrx_12cacd3182e2311881",
+ "expires_at": "2026-07-27T16:00:26.059Z"
+ },
+ "object": "list"
+ }
+ }
}
}
}
@@ -4113,16 +4797,6 @@
}
}
},
- "409": {
- "description": "Conflict - e.g. duplicate resource or invalid state transition.",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ErrorResponse"
- }
- }
- }
- },
"500": {
"description": "Internal server error.",
"content": {
@@ -4141,28 +4815,8 @@
"Programs"
],
"summary": "Purchase a reward with points",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nPurchases a reward on behalf of the program member, spending points from the member's\nloyalty card (the card is resolved from the reward cost's card definition).\n\nRequires an ACTIVE program, an ACTIVE member, an ACTIVE reward assigned to the program\nwith available stock, a matching reward cost for the customer's context, and sufficient\npoints within the configured spending limits.\n\nModes:\n- `TRANSACTION` (default) — creates a PENDING reward transaction (and an underlying card\n transaction) processed asynchronously. Returns HTTP 202.\n- `DRY_RUN` — simulates the purchase without creating any transaction. Returns HTTP 200\n with a SIMULATED transaction payload.",
- "parameters": [
- {
- "name": "programId",
- "in": "path",
- "required": true,
- "description": "Unique loyalty program identifier (format: `lprg_` followed by hexadecimal characters).",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "memberId",
- "in": "path",
- "required": true,
- "description": "Program member ID (format `lmbr_[a-f0-9]+`).",
- "schema": {
- "type": "string",
- "pattern": "^lmbr_[a-f0-9]+$"
- }
- }
- ],
+ "description": "Purchases a reward on behalf of the program member by spending points from the member's loyalty card (the card is resolved from the reward cost's card definition).\n\nRequires an `ACTIVE` program and an `ACTIVE` reward within their configured validity windows, an `ACTIVE` member, the reward to be assigned to the program with available stock, a matching reward cost for the customer's context, and sufficient points within the configured spending limits.\n\nModes:\n- `TRANSACTION` (default): creates a `PENDING` reward transaction (and an underlying card transaction) processed asynchronously. Returns HTTP `202`.\n- `DRY_RUN`: simulates the purchase without creating any transaction. Returns HTTP `200` with a `SIMULATED` transaction payload.",
+ "parameters": [],
"requestBody": {
"required": true,
"content": {
@@ -4175,27 +4829,85 @@
},
"responses": {
"200": {
- "description": "Dry run result (mode `DRY_RUN`). No transaction was created; the returned transaction has status SIMULATED and no `id`.",
+ "description": "Dry run result (mode `DRY_RUN`). No transaction was created; the returned transaction has status `SIMULATED` and no `id`.",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/RewardPurchaseCreateResponse"
+ "$ref": "#/components/schemas/RewardPurchaseCreateDryRunResponse"
+ },
+ "examples": {
+ "Reward purchase dry run": {
+ "value": {
+ "transaction": {
+ "card_id": "lcrd_128f962dbd8c4ba5e1",
+ "card_transaction_id": null,
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "member_id": "lmbr_128f962dbc8c4ba5dc",
+ "reward_id": "lrew_1294cebb458e4904a0",
+ "status": "SIMULATED",
+ "type": "PURCHASE",
+ "details": {
+ "reason": "Points spent on reward",
+ "rejection": null,
+ "metadata": {},
+ "points": {
+ "total": 500
+ },
+ "result": null
+ },
+ "updated_at": null,
+ "object": "reward_transaction"
+ },
+ "status": "DRY_RUN",
+ "message": "Dry run mode. No transaction was created. This is only a simulation."
+ }
+ }
}
}
}
},
"202": {
- "description": "Purchase accepted (mode `TRANSACTION`). A PENDING reward transaction was created and will be processed asynchronously.",
+ "description": "Purchase accepted (mode `TRANSACTION`). A `PENDING` reward transaction was created and will be processed asynchronously.",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/RewardPurchaseCreateResponse"
+ "$ref": "#/components/schemas/RewardPurchaseCreateTransactionResponse"
+ },
+ "examples": {
+ "Reward purchase transaction created": {
+ "value": {
+ "transaction": {
+ "id": "lrtx_12cad1abefa2311e03",
+ "card_id": "lcrd_128f962dbd8c4ba5e1",
+ "card_transaction_id": "lctx_12cad1abefa2311e02",
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "member_id": "lmbr_128f962dbc8c4ba5dc",
+ "reward_id": "lrew_1294cebb458e4904a0",
+ "status": "PENDING",
+ "type": "PURCHASE",
+ "details": {
+ "reason": "Points spent on reward",
+ "rejection": null,
+ "metadata": {},
+ "points": {
+ "total": 500
+ },
+ "result": null
+ },
+ "created_at": "2026-07-27T16:09:59.999Z",
+ "updated_at": null,
+ "object": "reward_transaction"
+ },
+ "status": "TRANSACTION_CREATED",
+ "message": "Reward purchase transaction created"
+ }
+ }
}
}
}
},
"400": {
- "description": "Validation error - request body or query parameters failed validation, or the operation is not allowed in the current resource state.",
+ "description": "Request body validation failed.",
"content": {
"application/json": {
"schema": {
@@ -4210,16 +4922,71 @@
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
+ },
+ "examples": {
+ "Member not found": {
+ "value": {
+ "code": 404,
+ "key": "not_found",
+ "message": "Resource not found",
+ "details": "Cannot find member with id lmbr_128f96dbc8c4ba5dc",
+ "request_id": "v-12cbaf63ce6ac91da3",
+ "resource_id": "lmbr_128f96dbc8c4ba5dc",
+ "resource_type": "member"
+ }
+ },
+ "Program not found": {
+ "value": {
+ "code": 404,
+ "key": "not_found",
+ "message": "Resource not found",
+ "details": "Cannot find program with id lprg_128f5429f4c4bf7b2",
+ "request_id": "v-12cbaf431280295102",
+ "resource_id": "lprg_128f5429f4c4bf7b2",
+ "resource_type": "program"
+ }
+ },
+ "Reward not found": {
+ "value": {
+ "code": 404,
+ "key": "not_found",
+ "message": "Resource not found",
+ "details": "Cannot find reward with id lrew_128f4cefbad47863e",
+ "request_id": "v-12cbaf831680295186",
+ "resource_id": "lrew_128f4cefbad47863e",
+ "resource_type": "reward"
+ }
+ }
}
}
}
},
- "409": {
- "description": "Conflict - e.g. duplicate resource or invalid state transition.",
+ "423": {
+ "description": "The purchase is unavailable because a resource state, validity window, stock level, matching cost, card balance, or spending limit prevents it.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
+ },
+ "examples": {
+ "Insufficient card balance": {
+ "value": {
+ "code": 423,
+ "key": "insufficient_card_balance",
+ "message": "Insufficient card balance",
+ "details": "Operation exceeds the available card balance",
+ "request_id": "v-12cbb8e7c89a39f4df"
+ }
+ },
+ "Reward out of stock": {
+ "value": {
+ "code": 423,
+ "key": "reward_out_of_stock",
+ "message": "Cannot purchase reward when stock is not available",
+ "details": "Reward stock is not available",
+ "request_id": "v-12cbaf9b78002951b5"
+ }
+ }
}
}
}
@@ -4238,33 +5005,36 @@
}
},
"/v2/loyalties/programs/{programId}/members/{memberId}/orders/payments": {
+ "parameters": [
+ {
+ "name": "programId",
+ "in": "path",
+ "required": true,
+ "description": "Identifies the loyalty program (`lprg_` followed by hexadecimal characters).",
+ "schema": {
+ "type": "string",
+ "pattern": "^lprg_[a-f0-9]+$"
+ }
+ },
+ {
+ "name": "memberId",
+ "in": "path",
+ "required": true,
+ "description": "Identifies the program member (`lmbr_[a-f0-9]+`).",
+ "schema": {
+ "type": "string",
+ "pattern": "^lmbr_[a-f0-9]+$"
+ }
+ }
+ ],
"get": {
"operationId": "listMemberOrderPayments",
"tags": [
"Programs"
],
"summary": "List member order payments",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nLists order transactions (pay-with-points payments) for the given program member,\nwith cursor-based pagination. Supports filtering by transaction id and creation date.",
+ "description": "Lists persisted order transactions (pay-with-points payments) for the given program member, with cursor-based pagination. Supports filtering by transaction `id` and `created_at` date. Dry-run (`SIMULATED`) results from create are never persisted and do not appear in this list.",
"parameters": [
- {
- "name": "programId",
- "in": "path",
- "required": true,
- "description": "Unique loyalty program identifier (format: `lprg_` followed by hexadecimal characters).",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "memberId",
- "in": "path",
- "required": true,
- "description": "Program member ID (format `lmbr_[a-f0-9]+`).",
- "schema": {
- "type": "string",
- "pattern": "^lmbr_[a-f0-9]+$"
- }
- },
{
"name": "limit",
"in": "query",
@@ -4284,7 +5054,7 @@
"name": "order",
"in": "query",
"required": false,
- "description": "Sort order. A field name, optionally prefixed with `-` for descending order. May be provided multiple times (array). The same field cannot be used in both ascending and descending order at once. Default: `-created_at`.",
+ "description": "Sorts results by a field name, optionally prefixed with `-` for descending order. May be provided multiple times (array). The same field cannot be used in both ascending and descending order at once. Default: `-created_at`.",
"schema": {
"oneOf": [
{
@@ -4329,7 +5099,7 @@
"required": false,
"style": "deepObject",
"explode": true,
- "description": "Field filters, e.g. `filters[id][conditions][$is]=lotx_...`. Each field accepts a `conditions` object with condition operators.",
+ "description": "Filters results by field, e.g. `filters[id][conditions][$is]=lotx_...`. Each field accepts a `conditions` object with condition operators.",
"schema": {
"$ref": "#/components/schemas/OrderPaymentListFilters"
}
@@ -4337,17 +5107,112 @@
],
"responses": {
"200": {
- "description": "Paginated list of order payment transactions.",
+ "description": "Returns a paginated list of persisted order payment transactions.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrderPaymentListResponse"
+ },
+ "examples": {
+ "Member pay-with-points transactions": {
+ "value": {
+ "data": [
+ {
+ "id": "lotx_12b8dbf787c67de367",
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "member_id": "lmbr_128f962dbc8c4ba5dc",
+ "card_id": "lcrd_128f962dbd8c4ba5e1",
+ "card_definition_id": "lcdef_128f4a88414c4bed69",
+ "card_transaction_id": "lctx_12b8dbf787c67de366",
+ "order_id": "ord_12b4cdf5f30c158825",
+ "status": "APPROVED",
+ "type": "PAY_WITH_POINTS",
+ "details": {
+ "reason": "Points spent on order payment",
+ "rejection": null,
+ "metadata": {
+ "points_limit": 150
+ },
+ "payment": {
+ "id": "ordpay_12b8dbf8d6939c4cd3",
+ "amount": 100,
+ "points_spent": 100,
+ "exchange_ratio": 1
+ }
+ },
+ "created_at": "2026-07-13T17:22:19.296Z",
+ "updated_at": "2026-07-13T17:22:20.630Z",
+ "object": "order_transaction"
+ },
+ {
+ "id": "lotx_12b8d2573e96b6af3b",
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "member_id": "lmbr_128f962dbc8c4ba5dc",
+ "card_id": "lcrd_128f962dbd8c4ba5e1",
+ "card_definition_id": "lcdef_128f4a88414c4bed69",
+ "card_transaction_id": "lctx_12b8d2573e96b6af3a",
+ "order_id": "ord_12b4cdf5f30c158825",
+ "status": "APPROVED",
+ "type": "PAY_WITH_POINTS",
+ "details": {
+ "reason": "Points spent on order payment",
+ "rejection": null,
+ "metadata": {
+ "points_limit": 100
+ },
+ "payment": {
+ "id": "ordpay_12b8d25896d39c45e0",
+ "amount": 100,
+ "points_spent": 100,
+ "exchange_ratio": 1
+ }
+ },
+ "created_at": "2026-07-13T16:40:15.866Z",
+ "updated_at": "2026-07-13T16:40:17.237Z",
+ "object": "order_transaction"
+ },
+ {
+ "id": "lotx_12b8d23e9016b6af18",
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "member_id": "lmbr_128f962dbc8c4ba5dc",
+ "card_id": "lcrd_128f962dbd8c4ba5e1",
+ "card_definition_id": "lcdef_128f4a88414c4bed69",
+ "card_transaction_id": "lctx_12b8d23e9016b6af17",
+ "order_id": "ord_12b4cdf5f30c158825",
+ "status": "REJECTED",
+ "type": "PAY_WITH_POINTS",
+ "details": {
+ "reason": "Points spent on order payment",
+ "rejection": {
+ "reason": "PAYMENT_EXCEEDS_ORDER_TOTAL_AMOUNT"
+ },
+ "metadata": {
+ "amount_limit": 2000
+ },
+ "payment": {
+ "amount": 2000,
+ "points_spent": 2000,
+ "exchange_ratio": 1
+ }
+ },
+ "created_at": "2026-07-13T16:39:50.592Z",
+ "updated_at": "2026-07-13T16:39:52.240Z",
+ "object": "order_transaction"
+ }
+ ],
+ "cursor": {
+ "next": "lcrsotx_12cbca76e282083066",
+ "expires_at": "2026-07-28T10:26:59.530Z"
+ },
+ "object": "list"
+ }
+ }
}
}
}
},
"400": {
- "description": "Validation error - request body or query parameters failed validation, or the operation is not allowed in the current resource state.",
+ "description": "Validation error — query parameters failed validation, or the operation is not allowed in the current resource state.",
"content": {
"application/json": {
"schema": {
@@ -4357,21 +5222,35 @@
}
},
"404": {
- "description": "Resource not found.",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ErrorResponse"
- }
- }
- }
- },
- "409": {
- "description": "Conflict - e.g. duplicate resource or invalid state transition.",
+ "description": "Program or member not found.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
+ },
+ "examples": {
+ "Member not found": {
+ "value": {
+ "code": 404,
+ "key": "not_found",
+ "message": "Resource not found",
+ "details": "Cannot find member with id lmbr_128962dbc8c4ba5dc",
+ "request_id": "v-12cbd13b05da398de1",
+ "resource_id": "lmbr_128962dbc8c4ba5dc",
+ "resource_type": "member"
+ }
+ },
+ "Program not found": {
+ "value": {
+ "code": 404,
+ "key": "not_found",
+ "message": "Resource not found",
+ "details": "Cannot find program with id lprg_128f8429f4c4bf7b2",
+ "request_id": "v-12cbd12127da398dac",
+ "resource_id": "lprg_128f8429f4c4bf7b2",
+ "resource_type": "program"
+ }
+ }
}
}
}
@@ -4394,55 +5273,265 @@
"Programs"
],
"summary": "Pay for an order with points",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nPays for an order using points from the specified member loyalty card. The payment amount\nand points to spend are calculated from the card definition's pay-with-points exchange\nratio formula, capped by the card balance and the optional `payment_limit`.\n\nRequires an ACTIVE program, an ACTIVE member, and a card definition with pay-with-points\nenabled and a configured exchange ratio formula.\n\nModes:\n- `TRANSACTION` (default) — creates a PENDING order transaction (and an underlying card\n transaction) processed asynchronously. Returns HTTP 202.\n- `DRY_RUN` — simulates the payment without creating any transaction. Returns HTTP 200\n with a SIMULATED transaction payload.",
- "parameters": [
- {
- "name": "programId",
- "in": "path",
- "required": true,
- "description": "Unique loyalty program identifier (format: `lprg_` followed by hexadecimal characters).",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "memberId",
- "in": "path",
- "required": true,
- "description": "Program member ID (format `lmbr_[a-f0-9]+`).",
- "schema": {
- "type": "string",
- "pattern": "^lmbr_[a-f0-9]+$"
- }
- }
- ],
+ "description": "Pays for an order using points from the specified member loyalty card. The payment amount and points to spend are calculated from the card definition's pay-with-points exchange ratio formula, capped by the card balance and the optional `payment_limit`.\n\nRequires an `ACTIVE` program, an `ACTIVE` member, and a card definition with pay-with-points enabled, and a configured exchange ratio formula. Also, it requires an existing order in Voucherify with order `id` or order `source_id`.\n\nModes:\n- `TRANSACTION` (default) — creates a `PENDING` order transaction (and an underlying card transaction) processed asynchronously. Returns HTTP `202`.\n- `DRY_RUN` — simulates the payment without creating any transaction. Returns HTTP `200` with a `SIMULATED` transaction payload.",
+ "parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrderPaymentCreateRequest"
+ },
+ "examples": {
+ "Card balance type": {
+ "value": {
+ "payment_limit": {
+ "type": "CARD_BALANCE"
+ },
+ "mode": "TRANSACTION",
+ "card_id": "lcrd_128f962dbd8c4ba5e1",
+ "order": {
+ "id": "ord_12b4cdf5f30c158825"
+ }
+ }
+ },
+ "Point limit type": {
+ "value": {
+ "payment_limit": {
+ "type": "POINTS_LIMIT",
+ "points_limit": {
+ "max": 150
+ }
+ },
+ "mode": "TRANSACTION",
+ "card_id": "lcrd_128f962dbd8c4ba5e1",
+ "order": {
+ "id": "ord_12b4cdf5f30c158825"
+ }
+ }
+ },
+ "Amount limit type": {
+ "value": {
+ "payment_limit": {
+ "type": "AMOUNT_LIMIT",
+ "amount_limit": {
+ "max": 2000
+ }
+ },
+ "mode": "TRANSACTION",
+ "card_id": "lcrd_128f962dbd8c4ba5e1",
+ "order": {
+ "id": "ord_12b4cdf5f30c158825"
+ }
+ }
+ }
}
}
}
},
"responses": {
"200": {
- "description": "Dry run result (mode `DRY_RUN`). No transaction was created; the returned transaction has status SIMULATED and no `id`.",
+ "description": "Dry run result (mode `DRY_RUN`). No transaction was created; the returned transaction has status `SIMULATED` and no `id`.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrderPaymentCreateResponse"
+ },
+ "examples": {
+ "Dry run: Point limit": {
+ "value": {
+ "transaction": {
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "member_id": "lmbr_128f962dbc8c4ba5dc",
+ "card_id": "lcrd_128f962dbd8c4ba5e1",
+ "card_definition_id": "lcdef_128f4a88414c4bed69",
+ "card_transaction_id": null,
+ "order_id": "ord_12b4cdf5f30c158825",
+ "status": "SIMULATED",
+ "type": "PAY_WITH_POINTS",
+ "details": {
+ "reason": "Points spent on order payment",
+ "rejection": null,
+ "metadata": {
+ "points_limit": 150
+ },
+ "payment": {
+ "amount": 150,
+ "points_spent": 150,
+ "exchange_ratio": 1
+ }
+ },
+ "updated_at": null,
+ "object": "order_transaction"
+ },
+ "status": "DRY_RUN",
+ "message": "Dry run mode. No transaction was created. This is only a simulation."
+ }
+ },
+ "Dry run: Amount limit": {
+ "value": {
+ "transaction": {
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "member_id": "lmbr_128f962dbc8c4ba5dc",
+ "card_id": "lcrd_128f962dbd8c4ba5e1",
+ "card_definition_id": "lcdef_128f4a88414c4bed69",
+ "card_transaction_id": null,
+ "order_id": "ord_12b4cdf5f30c158825",
+ "status": "SIMULATED",
+ "type": "PAY_WITH_POINTS",
+ "details": {
+ "reason": "Points spent on order payment",
+ "rejection": null,
+ "metadata": {
+ "amount_limit": 2000
+ },
+ "payment": {
+ "amount": 650,
+ "points_spent": 650,
+ "exchange_ratio": 1
+ }
+ },
+ "updated_at": null,
+ "object": "order_transaction"
+ },
+ "status": "DRY_RUN",
+ "message": "Dry run mode. No transaction was created. This is only a simulation."
+ }
+ },
+ "Dry run: Card balance": {
+ "value": {
+ "transaction": {
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "member_id": "lmbr_128f962dbc8c4ba5dc",
+ "card_id": "lcrd_128f962dbd8c4ba5e1",
+ "card_definition_id": "lcdef_128f4a88414c4bed69",
+ "card_transaction_id": null,
+ "order_id": "ord_12b4cdf5f30c158825",
+ "status": "SIMULATED",
+ "type": "PAY_WITH_POINTS",
+ "details": {
+ "reason": "Points spent on order payment",
+ "rejection": null,
+ "metadata": {},
+ "payment": {
+ "amount": 650,
+ "points_spent": 650,
+ "exchange_ratio": 1
+ }
+ },
+ "updated_at": null,
+ "object": "order_transaction"
+ },
+ "status": "DRY_RUN",
+ "message": "Dry run mode. No transaction was created. This is only a simulation."
+ }
+ }
}
}
}
},
"202": {
- "description": "Payment accepted (mode `TRANSACTION`). A PENDING order transaction was created and will be processed asynchronously.",
+ "description": "Payment accepted (mode `TRANSACTION`). A `PENDING` order transaction was created and will be processed asynchronously.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrderPaymentCreateResponse"
+ },
+ "examples": {
+ "Transaction created: Point limit": {
+ "value": {
+ "transaction": {
+ "id": "lotx_12b884c72b0dd352b9",
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "member_id": "lmbr_128f962dbc8c4ba5dc",
+ "card_id": "lcrd_128f962dbd8c4ba5e1",
+ "card_definition_id": "lcdef_128f4a88414c4bed69",
+ "card_transaction_id": "lctx_12b884c72b0dd352b8",
+ "order_id": "ord_12b4cdf5f30c158825",
+ "status": "PENDING",
+ "type": "PAY_WITH_POINTS",
+ "details": {
+ "reason": "Points spent on order payment",
+ "rejection": null,
+ "metadata": {
+ "points_limit": 12
+ },
+ "payment": {
+ "amount": 12,
+ "points_spent": 12,
+ "exchange_ratio": 1
+ }
+ },
+ "created_at": "2026-07-13T11:01:23.245Z",
+ "updated_at": null,
+ "object": "order_transaction"
+ },
+ "status": "TRANSACTION_CREATED",
+ "message": "Pay with points transaction created"
+ }
+ },
+ "Transaction created: Amount limit": {
+ "value": {
+ "transaction": {
+ "id": "lotx_12b8939fd78dd3657f",
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "member_id": "lmbr_128f962dbc8c4ba5dc",
+ "card_id": "lcrd_128f962dbd8c4ba5e1",
+ "card_definition_id": "lcdef_128f4a88414c4bed69",
+ "card_transaction_id": "lctx_12b8939fd78dd3657e",
+ "order_id": "ord_12b4cdf5f30c158825",
+ "status": "PENDING",
+ "type": "PAY_WITH_POINTS",
+ "details": {
+ "reason": "Points spent on order payment",
+ "rejection": null,
+ "metadata": {
+ "amount_limit": 2000
+ },
+ "payment": {
+ "amount": 2000,
+ "points_spent": 2000,
+ "exchange_ratio": 1
+ }
+ },
+ "created_at": "2026-07-13T12:06:15.135Z",
+ "updated_at": null,
+ "object": "order_transaction"
+ },
+ "status": "TRANSACTION_CREATED",
+ "message": "Pay with points transaction created"
+ }
+ },
+ "Transaction created: Card balance": {
+ "value": {
+ "transaction": {
+ "id": "lotx_12b8861fdd0dd35462",
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "member_id": "lmbr_128f962dbc8c4ba5dc",
+ "card_id": "lcrd_128f962dbd8c4ba5e1",
+ "card_definition_id": "lcdef_128f4a88414c4bed69",
+ "card_transaction_id": "lctx_12b8861fdd0dd35461",
+ "order_id": "ord_12b4cdf5f30c158825",
+ "status": "PENDING",
+ "type": "PAY_WITH_POINTS",
+ "details": {
+ "reason": "Points spent on order payment",
+ "rejection": null,
+ "metadata": {},
+ "payment": {
+ "amount": 200,
+ "points_spent": 200,
+ "exchange_ratio": 1
+ }
+ },
+ "created_at": "2026-07-13T11:07:16.212Z",
+ "updated_at": null,
+ "object": "order_transaction"
+ },
+ "status": "TRANSACTION_CREATED",
+ "message": "Pay with points transaction created"
+ }
+ }
}
}
}
@@ -4463,16 +5552,73 @@
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
+ },
+ "examples": {
+ "Card not found": {
+ "value": {
+ "code": 404,
+ "key": "not_found",
+ "message": "Resource not found",
+ "details": "Cannot find card with id lcrd_128f962bd8c4ba5e1",
+ "request_id": "v-12cc33659a5a39c1f1",
+ "resource_id": "lcrd_128f962bd8c4ba5e1",
+ "resource_type": "card"
+ }
+ },
+ "Member not found": {
+ "value": {
+ "code": 404,
+ "key": "not_found",
+ "message": "Resource not found",
+ "details": "Cannot find member with id lmbr_128f962db8c4ba5dc",
+ "request_id": "v-12cc3350135a39c1c3",
+ "resource_id": "lmbr_128f962db8c4ba5dc",
+ "resource_type": "member"
+ }
+ },
+ "Order not found": {
+ "value": {
+ "code": 404,
+ "key": "not_found",
+ "message": "Resource not found",
+ "details": "Cannot find order with id ord_12b4cdf5f30c58825",
+ "request_id": "v-12cc3377e7da39c211",
+ "resource_id": "ord_12b4cdf5f30c58825",
+ "resource_type": "order"
+ }
+ },
+ "Program not found": {
+ "value": {
+ "code": 404,
+ "key": "not_found",
+ "message": "Resource not found",
+ "details": "Cannot find program with id lprg_128f5849f4c4bf7b2",
+ "request_id": "v-12cc332f6fda39c18b",
+ "resource_id": "lprg_128f5849f4c4bf7b2",
+ "resource_type": "program"
+ }
+ }
}
}
}
},
- "409": {
- "description": "Conflict - e.g. duplicate resource or invalid state transition.",
+ "423": {
+ "description": "Card balance is zero or the resource state blocks the payment.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
+ },
+ "examples": {
+ "Zero card balance": {
+ "value": {
+ "code": 423,
+ "key": "zero_card_balance",
+ "message": "Card balance is zero",
+ "details": "Operation requires a positive card balance",
+ "request_id": "v-12b8894b3ec1a59873"
+ }
+ }
}
}
}
@@ -4497,7 +5643,7 @@
"Programs"
],
"summary": "List member benefit transactions",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nLists benefit transactions (benefit fulfillments) for the given program member,\nwith cursor-based pagination. Supports filtering by benefit id and creation date.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nLists benefit transactions (benefit fulfillments) for the given program member,\nwith cursor-based pagination. Supports filtering by benefit id and creation date.",
"parameters": [
{
"name": "programId",
@@ -4649,7 +5795,7 @@
"Programs"
],
"summary": "List member tier transactions",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nLists tier transactions (tier joins, upgrades, downgrades, prolongations and exits)\nfor the given program member, with cursor-based pagination. Supports filtering by\ncard id and creation date.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nLists tier transactions (tier joins, upgrades, downgrades, prolongations and exits)\nfor the given program member, with cursor-based pagination. Supports filtering by\ncard id and creation date.",
"parameters": [
{
"name": "programId",
@@ -4801,7 +5947,7 @@
"Programs"
],
"summary": "Get card daily points report",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns aggregated daily points statistics for a member's loyalty card over the given\ndate range and resolution.\n\nThe date range is limited per resolution:\nmaximum 90 days for `day`, 12 weeks for `week`, 12 months for `month`, 4 quarters\nfor `quarter`.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns aggregated daily points statistics for a member's loyalty card over the given\ndate range and resolution.\n\nThe date range is limited per resolution:\nmaximum 90 days for `day`, 12 weeks for `week`, 12 months for `month`, 4 quarters\nfor `quarter`.",
"parameters": [
{
"name": "programId",
@@ -4930,7 +6076,7 @@
"Programs"
],
"summary": "Get program spending daily report",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns aggregated daily points-spending statistics for the program over the given\ndate range and resolution, optionally filtered by card definition.\n\nThe date range is limited per resolution:\nmaximum 90 days for `day`, 12 weeks for `week`, 12 months for `month`, 4 quarters\nfor `quarter`.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns aggregated daily points-spending statistics for the program over the given\ndate range and resolution, optionally filtered by card definition.\n\nThe date range is limited per resolution:\nmaximum 90 days for `day`, 12 weeks for `week`, 12 months for `month`, 4 quarters\nfor `quarter`.",
"parameters": [
{
"name": "programId",
@@ -5051,7 +6197,7 @@
"Programs"
],
"summary": "Get program spending summary report",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns total points-spending statistics for the program (all time), optionally\nfiltered by card definition.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns total points-spending statistics for the program (all time), optionally\nfiltered by card definition.",
"parameters": [
{
"name": "programId",
@@ -5135,7 +6281,7 @@
"Card Definitions"
],
"summary": "List Card Definitions",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of card definitions.\n\nFiltering is supported through the `filters` deep-object query parameter,\ne.g. `filters[name][conditions][$is]=Standard%20Card`.\nThe same field cannot be requested in both ascending and descending\norder at the same time.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of card definitions.\n\nFiltering is supported through the `filters` deep-object query parameter,\ne.g. `filters[name][conditions][$is]=Standard%20Card`.\nThe same field cannot be requested in both ascending and descending\norder at the same time.",
"parameters": [
{
"name": "limit",
@@ -5269,7 +6415,7 @@
"Card Definitions"
],
"summary": "Create Card Definition",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nCreates a new card definition. Only `name` and `type` are required; all other\nsections default server-side as follows:\n- `code_config`: 10-character alphanumeric code pattern (`##########`)\n- `points_expiration`: `NO_EXPIRATION`\n- `pending_points`: `IMMEDIATE`\n- `earning_limits`: global `NO_LIMIT`, transactions `NO_LIMIT`\n- `spending_limits`: global `NO_LIMIT`, transactions `NO_LIMIT`\n- `refunds`: spent points `NONE`, earned points `NONE`\n- `balance_settings`: `allow_negative: false`\n- `pay_with_points`: `NO_PAYMENTS`\n\nCross-field rules:\n- `balance_settings.allow_negative` can only be `true` when `points_expiration.type`\n is `NO_EXPIRATION`. Additionally, the earned points refund mode `REVOKE_BELOW_ZERO`\n requires `balance_settings.allow_negative` to be `true`.\n- The earned points refund method `REVOKE_FROM_PENDING` requires\n `pending_points.type` to be one of `PERIOD_BASED`, `FIXED_DATES`, `EVENT_BASED`.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nCreates a new card definition. Only `name` and `type` are required; all other\nsections default server-side as follows:\n- `code_config`: 10-character alphanumeric code pattern (`##########`)\n- `points_expiration`: `NO_EXPIRATION`\n- `pending_points`: `IMMEDIATE`\n- `earning_limits`: global `NO_LIMIT`, transactions `NO_LIMIT`\n- `spending_limits`: global `NO_LIMIT`, transactions `NO_LIMIT`\n- `refunds`: spent points `NONE`, earned points `NONE`\n- `balance_settings`: `allow_negative: false`\n- `pay_with_points`: `NO_PAYMENTS`\n\nCross-field rules:\n- `balance_settings.allow_negative` can only be `true` when `points_expiration.type`\n is `NO_EXPIRATION`. Additionally, the earned points refund mode `REVOKE_BELOW_ZERO`\n requires `balance_settings.allow_negative` to be `true`.\n- The earned points refund method `REVOKE_FROM_PENDING` requires\n `pending_points.type` to be one of `PERIOD_BASED`, `FIXED_DATES`, `EVENT_BASED`.",
"requestBody": {
"required": true,
"content": {
@@ -5341,7 +6487,7 @@
"Card Definitions"
],
"summary": "Get Card Definition",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a single card definition by its ID.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a single card definition by its ID.",
"responses": {
"200": {
"description": "The card definition.",
@@ -5413,7 +6559,7 @@
"Card Definitions"
],
"summary": "Update Card Definition",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nUpdates a card definition. All properties are optional; only provided sections\nare updated. `type` and `status` cannot be changed through this endpoint\n(status transitions are performed via the activate/draft endpoints).\n\nWhen the card definition is in use (e.g. assigned to a program with existing cards),\nupdates to restricted sections may be rejected with a resource-locked error;\nonly `name`, `metadata` and `pay_with_points` are always updatable.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nUpdates a card definition. All properties are optional; only provided sections\nare updated. `type` and `status` cannot be changed through this endpoint\n(status transitions are performed via the activate/draft endpoints).\n\nWhen the card definition is in use (e.g. assigned to a program with existing cards),\nupdates to restricted sections may be rejected with a resource-locked error;\nonly `name`, `metadata` and `pay_with_points` are always updatable.",
"requestBody": {
"required": true,
"content": {
@@ -5495,7 +6641,7 @@
"Card Definitions"
],
"summary": "Delete Card Definition",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nDeletes a card definition. Returns the deleted card definition.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nDeletes a card definition. Returns the deleted card definition.",
"responses": {
"200": {
"description": "The deleted card definition.",
@@ -5569,7 +6715,7 @@
"Card Definitions"
],
"summary": "Activate Card Definition",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nTransitions the card definition from `DRAFT` to `ACTIVE`.\nNo request body. Activating from any other state results in an\ninvalid state transition error (409).",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nTransitions the card definition from `DRAFT` to `ACTIVE`.\nNo request body. Activating from any other state results in an\ninvalid state transition error (409).",
"responses": {
"200": {
"description": "The activated card definition.",
@@ -5643,7 +6789,7 @@
"Card Definitions"
],
"summary": "Draft Card Definition",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nTransitions the card definition from `ACTIVE` back to `DRAFT`.\nNo request body. Drafting from any other state results in an\ninvalid state transition error (409).",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nTransitions the card definition from `ACTIVE` back to `DRAFT`.\nNo request body. Drafting from any other state results in an\ninvalid state transition error (409).",
"responses": {
"200": {
"description": "The drafted card definition.",
@@ -5717,7 +6863,7 @@
"Card Definitions"
],
"summary": "List Card Definition Activities",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of activities recorded for the card definition\n(creation, updates, deletion, state transitions and program assignments).\nReturns 404 when the card definition does not exist.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of activities recorded for the card definition\n(creation, updates, deletion, state transitions and program assignments).\nReturns 404 when the card definition does not exist.",
"parameters": [
{
"name": "id",
@@ -5851,7 +6997,7 @@
],
"operationId": "createEarningRule",
"summary": "Create earning rule",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nCreates a new earning rule. When `status` is omitted the rule is created as `DRAFT`.\nWhen `validity_hours` is omitted it defaults to `{ \"type\": \"ANY_TIME\" }`.\nWhen `trigger_limits` is omitted it defaults to\n`{ \"cooldown\": { \"type\": \"NO_COOLDOWN\" }, \"frequency\": { \"type\": \"NO_LIMIT\" } }`.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nCreates a new earning rule. When `status` is omitted the rule is created as `DRAFT`.\nWhen `validity_hours` is omitted it defaults to `{ \"type\": \"ANY_TIME\" }`.\nWhen `trigger_limits` is omitted it defaults to\n`{ \"cooldown\": { \"type\": \"NO_COOLDOWN\" }, \"frequency\": { \"type\": \"NO_LIMIT\" } }`.",
"requestBody": {
"required": true,
"content": {
@@ -5921,7 +7067,7 @@
],
"operationId": "listEarningRules",
"summary": "List earning rules",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of earning rules. The same field cannot be used\nin both ascending and descending order at once\n(e.g. `order=name&order=-name` is rejected). Default order is `-created_at`;\n`id` is always appended as a tie-breaker.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of earning rules. The same field cannot be used\nin both ascending and descending order at once\n(e.g. `order=name&order=-name` is rejected). Default order is `-created_at`;\n`id` is always appended as a tie-breaker.",
"parameters": [
{
"name": "limit",
@@ -6050,7 +7196,7 @@
],
"operationId": "getEarningRule",
"summary": "Get earning rule",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a single earning rule by its ID.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a single earning rule by its ID.",
"responses": {
"200": {
"description": "Earning rule",
@@ -6122,7 +7268,7 @@
],
"operationId": "updateEarningRule",
"summary": "Update earning rule",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nUpdates an earning rule. All properties are optional; `status` cannot be changed\nthrough this endpoint (use the activate/deactivate/draft endpoints). For rules that\nare not in `DRAFT` status, only the following properties may effectively change:\nname, earnings, error, validity_hours, start_date, end_date, trigger_limits, metadata.\nEarnings items may carry an `id` (`lernei_...`) to update an existing earning item;\nitems without an `id` are created.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nUpdates an earning rule. All properties are optional; `status` cannot be changed\nthrough this endpoint (use the activate/deactivate/draft endpoints). For rules that\nare not in `DRAFT` status, only the following properties may effectively change:\nname, earnings, error, validity_hours, start_date, end_date, trigger_limits, metadata.\nEarnings items may carry an `id` (`lernei_...`) to update an existing earning item;\nitems without an `id` are created.",
"requestBody": {
"required": true,
"content": {
@@ -6204,7 +7350,7 @@
],
"operationId": "deleteEarningRule",
"summary": "Delete earning rule",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nSoft-deletes an earning rule and returns its last state.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nSoft-deletes an earning rule and returns its last state.",
"responses": {
"200": {
"description": "Deleted earning rule",
@@ -6278,7 +7424,7 @@
],
"operationId": "activateEarningRule",
"summary": "Activate earning rule",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nMoves the earning rule to `ACTIVE` status. No request body.\nAllowed transitions: `DRAFT -> ACTIVE`, `INACTIVE -> ACTIVE`.\nInvalid transitions are rejected with a conflict error.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nMoves the earning rule to `ACTIVE` status. No request body.\nAllowed transitions: `DRAFT -> ACTIVE`, `INACTIVE -> ACTIVE`.\nInvalid transitions are rejected with a conflict error.",
"responses": {
"200": {
"description": "Activated earning rule",
@@ -6352,7 +7498,7 @@
],
"operationId": "deactivateEarningRule",
"summary": "Deactivate earning rule",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nMoves the earning rule to `INACTIVE` status. No request body.\nAllowed transition: `ACTIVE -> INACTIVE`.\nInvalid transitions are rejected with a conflict error.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nMoves the earning rule to `INACTIVE` status. No request body.\nAllowed transition: `ACTIVE -> INACTIVE`.\nInvalid transitions are rejected with a conflict error.",
"responses": {
"200": {
"description": "Deactivated earning rule",
@@ -6426,7 +7572,7 @@
],
"operationId": "draftEarningRule",
"summary": "Move earning rule to draft",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nMoves the earning rule back to `DRAFT` status. No request body.\nAllowed transition: `ACTIVE -> DRAFT`.\nInvalid transitions are rejected with a conflict error.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nMoves the earning rule back to `DRAFT` status. No request body.\nAllowed transition: `ACTIVE -> DRAFT`.\nInvalid transitions are rejected with a conflict error.",
"responses": {
"200": {
"description": "Drafted earning rule",
@@ -6500,7 +7646,7 @@
],
"operationId": "listEarningRuleActivities",
"summary": "List earning rule activities",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of activities (audit trail) for a single earning rule.\nThe same field cannot be used in both ascending and descending order at once.\nDefault order is `-created_at`.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of activities (audit trail) for a single earning rule.\nThe same field cannot be used in both ascending and descending order at once.\nDefault order is `-created_at`.",
"parameters": [
{
"name": "id",
@@ -6635,7 +7781,7 @@
"Tier Structures"
],
"summary": "Create tier structure",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nCreates a new tier structure. Depending on `type`, either\n`point_balance` (for `POINT_BALANCE`) or `point_earned` (for `POINT_EARNED`)\nis required and the other must be null/omitted. If `expiration` is omitted it\ndefaults to `{ \"type\": \"NO_EXPIRATION\" }`; if `downgrade` is omitted it defaults\nto `{ \"type\": \"NO_DOWNGRADE\" }`; if `status` is omitted it defaults to `DRAFT`.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nCreates a new tier structure. Depending on `type`, either\n`point_balance` (for `POINT_BALANCE`) or `point_earned` (for `POINT_EARNED`)\nis required and the other must be null/omitted. If `expiration` is omitted it\ndefaults to `{ \"type\": \"NO_RETENTION\" }`; if `downgrade` is omitted it defaults\nto `{ \"type\": \"NO_DOWNGRADE\" }`; if `status` is omitted it defaults to `DRAFT`.",
"requestBody": {
"required": true,
"content": {
@@ -6705,7 +7851,7 @@
"Tier Structures"
],
"summary": "List tier structures",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of tier structures. The same field cannot be\nrequested in both ascending and descending order at once. Default order is\n`-created_at`.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of tier structures. The same field cannot be\nrequested in both ascending and descending order at once. Default order is\n`-created_at`.",
"parameters": [
{
"name": "limit",
@@ -6841,7 +7987,7 @@
"Tier Structures"
],
"summary": "Get tier structure",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a single tier structure by its id.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a single tier structure by its id.",
"responses": {
"200": {
"description": "The tier structure.",
@@ -6913,7 +8059,7 @@
"Tier Structures"
],
"summary": "Update tier structure",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nUpdates a tier structure. All properties are optional; provided\nvalues are merged with the existing tier structure. When `type` is provided as\n`POINT_EARNED`, `point_earned` is required and `point_balance` must be null; when\n`type` is `POINT_BALANCE`, `point_balance` is required and `point_earned` must be null.\nWhen the tier structure is not in `DRAFT` status, only `name` and `metadata` may be\nupdated; attempting to update other properties results in a validation error.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nUpdates a tier structure. All properties are optional; provided\nvalues are merged with the existing tier structure. When `type` is provided as\n`POINT_EARNED`, `point_earned` is required and `point_balance` must be null; when\n`type` is `POINT_BALANCE`, `point_balance` is required and `point_earned` must be null.\nWhen the tier structure is not in `DRAFT` status, only `name` and `metadata` may be\nupdated; attempting to update other properties results in a validation error.",
"requestBody": {
"required": true,
"content": {
@@ -6995,7 +8141,7 @@
"Tier Structures"
],
"summary": "Delete tier structure",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nDeletes a tier structure and returns the deleted resource.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nDeletes a tier structure and returns the deleted resource.",
"responses": {
"200": {
"description": "The deleted tier structure.",
@@ -7069,7 +8215,7 @@
"Tier Structures"
],
"summary": "Activate tier structure",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nMoves the tier structure to the `ACTIVE` status. Allowed state transitions:\n`DRAFT` -> `ACTIVE` and `INACTIVE` -> `ACTIVE`. No request body.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nMoves the tier structure to the `ACTIVE` status. Allowed state transitions:\n`DRAFT` -> `ACTIVE` and `INACTIVE` -> `ACTIVE`. No request body.",
"responses": {
"200": {
"description": "The activated tier structure.",
@@ -7143,7 +8289,7 @@
"Tier Structures"
],
"summary": "Deactivate tier structure",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nMoves the tier structure to the `INACTIVE` status. Allowed state transition:\n`ACTIVE` -> `INACTIVE`. No request body.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nMoves the tier structure to the `INACTIVE` status. Allowed state transition:\n`ACTIVE` -> `INACTIVE`. No request body.",
"responses": {
"200": {
"description": "The deactivated tier structure.",
@@ -7217,7 +8363,7 @@
"Tier Structures"
],
"summary": "Move tier structure to draft",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nMoves the tier structure back to the `DRAFT` status. Allowed state transition:\n`ACTIVE` -> `DRAFT`. No request body.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nMoves the tier structure back to the `DRAFT` status. Allowed state transition:\n`ACTIVE` -> `DRAFT`. No request body.",
"responses": {
"200": {
"description": "The drafted tier structure.",
@@ -7291,7 +8437,7 @@
"Tier Structures"
],
"summary": "Create tier",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nCreates a tier within the tier structure. If `downgrade` is omitted it defaults to\n`{ \"type\": \"INHERIT\" }`. A tier structure can hold at most 10 tiers.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nCreates a tier within the tier structure. If `downgrade` is omitted it defaults to\n`{ \"type\": \"INHERIT\" }`. A tier structure can hold at most 10 tiers.",
"requestBody": {
"required": true,
"content": {
@@ -7373,7 +8519,7 @@
"Tier Structures"
],
"summary": "List tiers",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of tiers belonging to the tier structure. This\nendpoint does not support a `filters` parameter. The same field cannot be requested\nin both ascending and descending order at once. Default order is `-created_at`.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of tiers belonging to the tier structure. This\nendpoint does not support a `filters` parameter. The same field cannot be requested\nin both ascending and descending order at once. Default order is `-created_at`.",
"parameters": [
{
"name": "id",
@@ -7500,7 +8646,7 @@
"Tier Structures"
],
"summary": "Update tier",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nUpdates a tier within the tier structure. All properties are optional. When the\nparent tier structure is not in `DRAFT` status, only `name` and `metadata` may be\nupdated.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nUpdates a tier within the tier structure. All properties are optional. When the\nparent tier structure is not in `DRAFT` status, only `name` and `metadata` may be\nupdated.",
"requestBody": {
"required": true,
"content": {
@@ -7592,7 +8738,7 @@
"Tier Structures"
],
"summary": "Delete tier",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nDeletes a tier from the tier structure and returns the deleted resource.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nDeletes a tier from the tier structure and returns the deleted resource.",
"responses": {
"200": {
"description": "The deleted tier.",
@@ -7676,7 +8822,7 @@
"Tier Structures"
],
"summary": "List tier structure activities",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of activities recorded for the tier structure\n(creation, updates, state transitions, assignments, and nested tier changes).\nThe same field cannot be requested in both ascending and descending order at once.\nDefault order is `-created_at`.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of activities recorded for the tier structure\n(creation, updates, state transitions, assignments, and nested tier changes).\nThe same field cannot be requested in both ascending and descending order at once.\nDefault order is `-created_at`.",
"parameters": [
{
"name": "id",
@@ -7810,7 +8956,7 @@
"Benefits"
],
"summary": "List benefits",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of benefits. Supports filtering by `id`, `name`, `status`,\n`type`, and `created_at`, ordering by `created_at`, `name`, and `type` (prefix with `-` for\ndescending), and cursor-based pagination. Deleted benefits are excluded.\nMultiple filters are combined with the `junction` (`AND` by default).\nThe same field cannot be ordered both ascending and descending at the same time.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of benefits. Supports filtering by `id`, `name`, `status`,\n`type`, and `created_at`, ordering by `created_at`, `name`, and `type` (prefix with `-` for\ndescending), and cursor-based pagination. Deleted benefits are excluded.\nMultiple filters are combined with the `junction` (`AND` by default).\nThe same field cannot be ordered both ascending and descending at the same time.",
"parameters": [
{
"name": "limit",
@@ -7949,7 +9095,7 @@
"Benefits"
],
"summary": "Create benefit",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nCreates a new benefit. Exactly one type-specific configuration object (`points`,\n`points_proportional`, `material`, or `digital`) is required, matching the `type`.\nWhen `status` is omitted the benefit is created in `DRAFT` status. When `stock` is\nomitted it defaults to `{ \"type\": \"UNLIMITED\" }`.\n\nReferenced resources are validated: the card definition (for points-based types) must\nexist and - when creating with `status: ACTIVE` - must be ACTIVE (423 `resource_locked`\notherwise); the product/SKU (for `MATERIAL`) and campaign (for `DIGITAL`) must exist,\nand the campaign type must match the digital benefit type (`DISCOUNT_COUPONS` or\n`GIFT_VOUCHERS`). The benefit name must be unique per project (409 `duplicate_found`).",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nCreates a new benefit. Exactly one type-specific configuration object (`points`,\n`points_proportional`, `material`, or `digital`) is required, matching the `type`.\nWhen `status` is omitted the benefit is created in `DRAFT` status. When `stock` is\nomitted it defaults to `{ \"type\": \"UNLIMITED\" }`.\n\nReferenced resources are validated: the card definition (for points-based types) must\nexist and - when creating with `status: ACTIVE` - must be ACTIVE (423 `resource_locked`\notherwise); the product/SKU (for `MATERIAL`) and campaign (for `DIGITAL`) must exist,\nand the campaign type must match the digital benefit type (`DISCOUNT_COUPONS` or\n`GIFT_VOUCHERS`). The benefit name must be unique per project (409 `duplicate_found`).",
"requestBody": {
"required": true,
"content": {
@@ -8031,7 +9177,7 @@
"Benefits"
],
"summary": "Get benefit",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a single benefit by its ID.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a single benefit by its ID.",
"responses": {
"200": {
"description": "The benefit",
@@ -8103,7 +9249,7 @@
"Benefits"
],
"summary": "Update benefit",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nUpdates a benefit. When the benefit is in `DRAFT` status all properties can be updated.\nWhen the benefit is `ACTIVE`, only `name` and `stock` may be updated (400 `invalid_payload`\notherwise). Referenced resources (card definition, product/SKU, campaign) are validated\nthe same way as on create; a points-based benefit can only reference an ACTIVE card\ndefinition (423 `resource_locked` otherwise). The benefit name must remain unique per\nproject (409 `duplicate_found`).",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nUpdates a benefit. When the benefit is in `DRAFT` status all properties can be updated.\nWhen the benefit is `ACTIVE`, only `name` and `stock` may be updated (400 `invalid_payload`\notherwise). Referenced resources (card definition, product/SKU, campaign) are validated\nthe same way as on create; a points-based benefit can only reference an ACTIVE card\ndefinition (423 `resource_locked` otherwise). The benefit name must remain unique per\nproject (409 `duplicate_found`).",
"requestBody": {
"required": true,
"content": {
@@ -8195,7 +9341,7 @@
"Benefits"
],
"summary": "Delete benefit",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nSoft-deletes a benefit and returns the deleted benefit. A benefit that is used by any\nearning rule cannot be deleted (400 `resource_in_use`, with `related_object_ids` and\n`related_object_type: earning_rule` in the error body).",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nSoft-deletes a benefit and returns the deleted benefit. A benefit that is used by any\nearning rule cannot be deleted (400 `resource_in_use`, with `related_object_ids` and\n`related_object_type: earning_rule` in the error body).",
"responses": {
"200": {
"description": "The deleted benefit",
@@ -8269,7 +9415,7 @@
"Benefits"
],
"summary": "Activate benefit",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nMoves a benefit from `DRAFT` to `ACTIVE` status. No request body. Only the\n`DRAFT` -> `ACTIVE` transition is allowed; activating from any other state returns\n400 `invalid_state_transition`. A points-based benefit cannot be activated when its\nconnected card definition does not exist or is not ACTIVE (423 `resource_locked`).",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nMoves a benefit from `DRAFT` to `ACTIVE` status. No request body. Only the\n`DRAFT` -> `ACTIVE` transition is allowed; activating from any other state returns\n400 `invalid_state_transition`. A points-based benefit cannot be activated when its\nconnected card definition does not exist or is not ACTIVE (423 `resource_locked`).",
"parameters": [
{
"name": "id",
@@ -8353,7 +9499,7 @@
"Benefits"
],
"summary": "Move benefit to draft",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nMoves a benefit from `ACTIVE` back to `DRAFT` status. No request body. Only the\n`ACTIVE` -> `DRAFT` transition is allowed; drafting from any other state returns\n400 `invalid_state_transition`. A benefit assigned to an active earning rule cannot\nbe moved to draft (423 `resource_locked`, key `connected_active_earning_rule`).",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nMoves a benefit from `ACTIVE` back to `DRAFT` status. No request body. Only the\n`ACTIVE` -> `DRAFT` transition is allowed; drafting from any other state returns\n400 `invalid_state_transition`. A benefit assigned to an active earning rule cannot\nbe moved to draft (423 `resource_locked`, key `connected_active_earning_rule`).",
"parameters": [
{
"name": "id",
@@ -8437,7 +9583,7 @@
"Benefits"
],
"summary": "List benefit activities",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of activities recorded for the benefit (created, updated,\ndeleted, activated, drafted). Returns 404 when the benefit does not exist. Supports\nfiltering by activity `id`, `type`, and `created_at`, ordering by `created_at`\n(default `-created_at`), and cursor-based pagination.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of activities recorded for the benefit (created, updated,\ndeleted, activated, drafted). Returns 404 when the benefit does not exist. Supports\nfiltering by activity `id`, `type`, and `created_at`, ordering by `created_at`\n(default `-created_at`), and cursor-based pagination.",
"parameters": [
{
"name": "id",
@@ -8580,7 +9726,7 @@
"Rewards"
],
"summary": "List rewards v2",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of rewards. Results can be filtered by id, name,\ntype and created_at, and ordered by created_at or name (ascending or descending).\nThe same field cannot be ordered both ascending and descending at the same time.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of rewards. Results can be filtered by id, name,\ntype and created_at, and ordered by created_at or name (ascending or descending).\nThe same field cannot be ordered both ascending and descending at the same time.",
"parameters": [
{
"name": "limit",
@@ -8722,7 +9868,7 @@
"Rewards"
],
"summary": "Create a reward",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nCreates a new reward. `name`, `type` and `costs` are required. When `type` is\n`MATERIAL` the `material` object is required and `digital` must be null; when\n`type` is `DIGITAL` the `digital` object is required and `material` must be null.\nThe reward can be created directly in `DRAFT` (default) or `ACTIVE` status.\nWhen `validity_hours` is not provided it defaults to `{ \"type\": \"ANY_TIME\" }`.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nCreates a new reward. `name`, `type` and `costs` are required. When `type` is\n`MATERIAL` the `material` object is required and `digital` must be null; when\n`type` is `DIGITAL` the `digital` object is required and `material` must be null.\nThe reward can be created directly in `DRAFT` (default) or `ACTIVE` status.\nWhen `validity_hours` is not provided it defaults to `{ \"type\": \"ANY_TIME\" }`.",
"requestBody": {
"required": true,
"content": {
@@ -8793,8 +9939,8 @@
"tags": [
"Rewards"
],
- "summary": "Get a reward by ID",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a single reward by its ID.",
+ "summary": "Get reward by ID",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a single reward by its ID.",
"parameters": [
{
"name": "id",
@@ -8866,7 +10012,7 @@
"Rewards"
],
"summary": "Update a reward",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nUpdates an existing reward. When `type` is provided as `MATERIAL` the `material`\nobject is required and `digital` must be null; when `type` is provided as `DIGITAL`\nthe `digital` object is required and `material` must be null.\n\nIn `DRAFT` status all properties can be updated. In `ACTIVE`/`INACTIVE` status only\nthe following properties can be updated: `name`, `metadata`, `refunds`,\n`validity_hours`, `start_date`, `end_date`, `costs`.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nUpdates an existing reward. When `type` is provided as `MATERIAL` the `material`\nobject is required and `digital` must be null; when `type` is provided as `DIGITAL`\nthe `digital` object is required and `material` must be null.\n\nIn `DRAFT` status all properties can be updated. In `ACTIVE`/`INACTIVE` status only\nthe following properties can be updated: `name`, `metadata`, `refunds`,\n`validity_hours`, `start_date`, `end_date`, `costs`.",
"parameters": [
{
"name": "id",
@@ -8948,7 +10094,7 @@
"Rewards"
],
"summary": "Delete a reward",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nDeletes a reward (moves it to the DELETED status). Returns the deleted reward.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nDeletes a reward (moves it to the DELETED status). Returns the deleted reward.",
"parameters": [
{
"name": "id",
@@ -9022,7 +10168,7 @@
"Rewards"
],
"summary": "Activate a reward",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nMoves the reward to the ACTIVE status. Allowed from DRAFT or INACTIVE status;\nother transitions are rejected with a conflict error. This endpoint takes no\nrequest body.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nMoves the reward to the ACTIVE status. Allowed from DRAFT or INACTIVE status;\nother transitions are rejected with a conflict error. This endpoint takes no\nrequest body.",
"parameters": [
{
"name": "id",
@@ -9096,7 +10242,7 @@
"Rewards"
],
"summary": "Deactivate a reward",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nMoves the reward to the INACTIVE status. Allowed only from ACTIVE status;\nother transitions are rejected with a conflict error. This endpoint takes no\nrequest body.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nMoves the reward to the INACTIVE status. Allowed only from ACTIVE status;\nother transitions are rejected with a conflict error. This endpoint takes no\nrequest body.",
"parameters": [
{
"name": "id",
@@ -9170,7 +10316,7 @@
"Rewards"
],
"summary": "Move a reward back to draft",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nMoves the reward back to the DRAFT status. Allowed only from ACTIVE status;\nother transitions are rejected with a conflict error. This endpoint takes no\nrequest body.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nMoves the reward back to the DRAFT status. Allowed only from ACTIVE status;\nother transitions are rejected with a conflict error. This endpoint takes no\nrequest body.",
"parameters": [
{
"name": "id",
@@ -9244,7 +10390,7 @@
"Rewards"
],
"summary": "List reward activities",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of activities recorded for the given reward\n(created, updated, deleted, assigned, unassigned, activated, deactivated, drafted).\nReturns 404 when the reward does not exist.",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nReturns a cursor-paginated list of activities recorded for the given reward\n(created, updated, deleted, assigned, unassigned, activated, deactivated, drafted).\nReturns 404 when the reward does not exist.",
"parameters": [
{
"name": "id",
@@ -9394,7 +10540,7 @@
],
"operationId": "examineEarningRules",
"summary": "Examine earning rules",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nEstimates earning opportunities for a customer without triggering any actual earning.\nThe `trigger` selects whether all trigger events or one specific event is examined.\nWhen a specific event is selected, exactly one matching context object is required:\n`customer_order_paid` for `customer.order.paid`, `customer_segment_entered` for\n`customer.segment.entered`, and `customer_custom_event` for `customer.custom_event`\n(the other context objects must not be present).",
+ "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may be subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nEstimates earning opportunities for a customer without triggering any actual earning.\nThe `trigger` selects whether all trigger events or one specific event is examined.\nWhen a specific event is selected, exactly one matching context object is required:\n`customer_order_paid` for `customer.order.paid`, `customer_segment_entered` for\n`customer.segment.entered`, and `customer_custom_event` for `customer.custom_event`\n(the other context objects must not be present).",
"requestBody": {
"required": true,
"content": {
@@ -9458,78 +10604,236 @@
}
}
}
- },
- "/v2/loyalties/examine/rewards": {
- "post": {
- "tags": [
- "Examine"
- ],
- "operationId": "examineRewards",
- "summary": "Examine rewards",
- "description": "\n\n\nBETA endpoint\n\nThis is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.\n\n\n\nEstimates which rewards a customer can obtain across their loyalty program memberships,\nincluding availability status, points cost and unavailability reasons.",
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ExamineRewardsRequest"
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Rewards examination result",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ExamineRewardsResponse"
- }
- }
- }
- },
- "400": {
- "description": "Validation error - request body or query parameters failed validation, or the operation is not allowed in the current resource state.",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ErrorResponse"
- }
- }
- }
- },
- "404": {
- "description": "Resource not found.",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ErrorResponse"
- }
- }
- }
- },
- "409": {
- "description": "Conflict - e.g. duplicate resource or invalid state transition.",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ErrorResponse"
- }
- }
- }
- },
- "500": {
- "description": "Internal server error.",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ErrorResponse"
- }
- }
- }
- }
- }
- }
+ },
+ "/v2/loyalties/examine/rewards": {
+ "post": {
+ "tags": [
+ "Examine"
+ ],
+ "operationId": "examineRewards",
+ "summary": "Examine rewards",
+ "description": "Evaluates rewards assigned to a customer's active Loyalty v2 program memberships. Use `member_id` to examine one membership only. Applies temporary customer and member metadata overrides without updating stored data. Returns reward availability by card, including points costs and applicable unavailability reasons.",
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ExamineRewardsRequest"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Rewards examination result",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ExamineRewardsResponse"
+ },
+ "examples": {
+ "Examine reward": {
+ "value": {
+ "customer": {
+ "id": "cust_6onRrs4kCnvSVrTs5YtDPFBG",
+ "source_id": "lx-rdmptr",
+ "metadata": {
+ "VIP": true
+ },
+ "object": "customer"
+ },
+ "rewards": [
+ {
+ "id": "lrew_128f4cab04147c8608",
+ "name": "Free item coupon",
+ "type": "DIGITAL",
+ "metadata": {},
+ "object": "reward"
+ },
+ {
+ "id": "lrew_128f4c6710947c85d1",
+ "name": "Minas Gerais 500",
+ "type": "MATERIAL",
+ "metadata": {},
+ "object": "reward"
+ },
+ {
+ "id": "lrew_1294cebb458e4904a0",
+ "name": "Carioca shirt",
+ "type": "MATERIAL",
+ "metadata": {},
+ "object": "reward"
+ },
+ {
+ "id": "lrew_12b22d6ef31184e002",
+ "name": "Carioca shorts",
+ "type": "MATERIAL",
+ "metadata": {},
+ "object": "reward"
+ },
+ {
+ "id": "lrew_12bb65405edf8d3dec",
+ "name": "Carioca longsleeve",
+ "type": "MATERIAL",
+ "metadata": {},
+ "object": "reward"
+ }
+ ],
+ "memberships": [
+ {
+ "member": {
+ "id": "lmbr_128f962dbc8c4ba5dc",
+ "customer_id": "cust_6onRrs4kCnvSVrTs5YtDPFBG",
+ "program_id": "lprg_128f58429f4c4bf7b2",
+ "metadata": {},
+ "object": "member"
+ },
+ "program": {
+ "id": "lprg_128f58429f4c4bf7b2",
+ "name": "AnnualProgram",
+ "metadata": {},
+ "object": "program"
+ },
+ "cards": [
+ {
+ "card": {
+ "id": "lcrd_128f962dbd8c4ba5e1",
+ "card_definition_id": "lcdef_128f4a88414c4bed69",
+ "card_type": "INDIVIDUAL",
+ "code": "AnnualTime-7M7ShPGfme",
+ "object": "card"
+ },
+ "rewards": [
+ {
+ "reward": {
+ "id": "lrew_128f4cab04147c8608",
+ "object": "reward"
+ },
+ "status": "AVAILABLE",
+ "cost": {
+ "points": 300,
+ "object": "reward_cost"
+ },
+ "object": "reward_estimation"
+ },
+ {
+ "reward": {
+ "id": "lrew_128f4c6710947c85d1",
+ "object": "reward"
+ },
+ "status": "AVAILABLE",
+ "cost": {
+ "points": 150,
+ "object": "reward_cost"
+ },
+ "object": "reward_estimation"
+ },
+ {
+ "reward": {
+ "id": "lrew_1294cebb458e4904a0",
+ "object": "reward"
+ },
+ "status": "AVAILABLE",
+ "cost": {
+ "points": 500,
+ "object": "reward_cost"
+ },
+ "object": "reward_estimation"
+ }
+ ],
+ "object": "card_estimation"
+ },
+ {
+ "card": {
+ "id": "lcrd_128f962dbd8c4ba5df",
+ "card_definition_id": "lcdef_128f495f720c4bec8c",
+ "card_type": "INDIVIDUAL",
+ "code": "SummerTime-7z8dWawICd",
+ "object": "card"
+ },
+ "rewards": [
+ {
+ "reward": {
+ "id": "lrew_12b22d6ef31184e002",
+ "object": "reward"
+ },
+ "status": "UNAVAILABLE",
+ "cost": {
+ "points": 321,
+ "object": "reward_cost"
+ },
+ "unavailability_reasons": [
+ {
+ "reason": "insufficient_balance",
+ "details": {
+ "required": 321,
+ "available": 10,
+ "missing": 311
+ },
+ "object": "reward_unavailability_reason"
+ }
+ ],
+ "object": "reward_estimation"
+ }
+ ],
+ "object": "card_estimation"
+ }
+ ],
+ "object": "member_rewards_opportunity"
+ }
+ ],
+ "object": "rewards_examine_result"
+ }
+ }
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Validation error - request body or query parameters failed validation, or the operation is not allowed in the current resource state.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Resource not found.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ },
+ "examples": {
+ "Customer not found": {
+ "value": {
+ "code": 404,
+ "key": "not_found",
+ "message": "Resource not found",
+ "details": "Cannot find customer with id cust_6onRrs4kCnvSVrTs5YtDPFB",
+ "request_id": "v-12c2e64d5d4a67cddc",
+ "resource_id": "cust_6onRrs4kCnvSVrTs5YtDPFB",
+ "resource_type": "customer"
+ }
+ }
+ }
+ }
+ }
+ },
+ "500": {
+ "description": "Unexpected server error.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ }
+ }
}
},
"components": {
@@ -9556,11 +10860,11 @@
},
"request_id": {
"type": "string",
- "description": "Identifier of the request that produced the error."
+ "description": "Unique identifier of the request that produced the error."
},
"resource_id": {
"type": "string",
- "description": "Identifier of the resource that produced the error."
+ "description": "Unique identifier of the resource that produced the error."
},
"resource_type": {
"type": "string",
@@ -9568,6 +10872,24 @@
}
}
},
+ "BadRequest": {
+ "type": "object",
+ "description": "Framework-level error returned when the raw request payload is rejected before reaching domain validation (for example, when it exceeds a configured size limit).",
+ "properties": {
+ "statusCode": {
+ "type": "integer",
+ "description": "HTTP status code of the error."
+ },
+ "error": {
+ "type": "string",
+ "description": "Short, human-readable description of the HTTP status."
+ },
+ "message": {
+ "type": "string",
+ "description": "Human-readable message with more details about the error."
+ }
+ }
+ },
"ProgramValidityDailyHoursUpsert": {
"type": "object",
"description": "A single daily validity-hours window definition.",
@@ -9604,7 +10926,7 @@
},
"ProgramValidityHoursUpsert": {
"type": "object",
- "description": "Validity hours configuration. When `type` is `ANY_TIME`, `daily` must be omitted or null.\nWhen `type` is `DAILY`, `daily` is required and must contain at least one window.",
+ "description": "Validity hours configuration. When `type` is `ANY_TIME`, `daily` must be omitted or `null`.\nWhen `type` is `DAILY`, `daily` is required and must contain at least one window.",
"properties": {
"type": {
"type": "string",
@@ -10301,7 +11623,7 @@
"null"
],
"format": "date-time",
- "description": "Program validity start date (ISO 8601), or null when not set."
+ "description": "Program validity start date (ISO 8601), or `null` when not set."
},
"end_date": {
"type": [
@@ -10309,7 +11631,7 @@
"null"
],
"format": "date-time",
- "description": "Program validity end date (ISO 8601), or null when not set."
+ "description": "Program validity end date (ISO 8601), or `null` when not set."
},
"validity_hours": {
"$ref": "#/components/schemas/ProgramValidityHours",
@@ -10330,7 +11652,7 @@
"null"
],
"format": "date-time",
- "description": "Last update timestamp (ISO 8601), or null when never updated."
+ "description": "Last update timestamp (ISO 8601), or `null` when never updated."
},
"object": {
"type": "string",
@@ -10339,6 +11661,47 @@
}
}
},
+ "ProgramSimple": {
+ "type": "object",
+ "description": "A loyalty program in its simple representation, as embedded in membership responses.",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique program identifier.",
+ "pattern": "^lprg_[a-f0-9]+$"
+ },
+ "name": {
+ "type": "string",
+ "description": "Program name."
+ },
+ "status": {
+ "type": "string",
+ "description": "Program status.",
+ "enum": [
+ "DRAFT",
+ "ACTIVE",
+ "INACTIVE",
+ "DELETED"
+ ]
+ },
+ "metadata": {
+ "type": "object",
+ "description": "User-defined key-value metadata. Defaults to `{}`."
+ },
+ "object": {
+ "type": "string",
+ "description": "Object type marker. Always `program`.",
+ "const": "program"
+ }
+ },
+ "required": [
+ "id",
+ "name",
+ "status",
+ "metadata",
+ "object"
+ ]
+ },
"ProgramCreateAssignedCardDefinition": {
"type": "object",
"description": "Card definition assigned during program creation.",
@@ -10397,7 +11760,7 @@
"type": "object",
"properties": {
"card_definitions": {
- "description": "Card definitions assigned at creation, or null when none were provided.",
+ "description": "Card definitions assigned at creation, or `null` when none were provided.",
"oneOf": [
{
"type": "array",
@@ -10411,7 +11774,7 @@
]
},
"earning_rules": {
- "description": "Earning rules assigned at creation, or null when none were provided.",
+ "description": "Earning rules assigned at creation, or `null` when none were provided.",
"oneOf": [
{
"type": "array",
@@ -10425,7 +11788,7 @@
]
},
"rewards": {
- "description": "Rewards assigned at creation, or null when none were provided.",
+ "description": "Rewards assigned at creation, or `null` when none were provided.",
"oneOf": [
{
"type": "array",
@@ -10439,7 +11802,7 @@
]
},
"tier_structures": {
- "description": "Tier structures assigned at creation, or null when none were provided.",
+ "description": "Tier structures assigned at creation, or `null` when none were provided.",
"oneOf": [
{
"type": "array",
@@ -10488,7 +11851,7 @@
}
},
"cursor": {
- "description": "Pagination cursor, or null when there are no more results.",
+ "description": "Pagination cursor, or `null` when there are no more results.",
"oneOf": [
{
"$ref": "#/components/schemas/ProgramListCursor"
@@ -10545,7 +11908,7 @@
}
},
"cursor": {
- "description": "Pagination cursor, or null when there are no more results.",
+ "description": "Pagination cursor, or `null` when there are no more results.",
"oneOf": [
{
"$ref": "#/components/schemas/ProgramListCursor"
@@ -10562,7 +11925,7 @@
"description": "Result of a card definition assignment batch. Keys are null when the corresponding operation list was not provided.",
"properties": {
"assigned": {
- "description": "Assignments created by the batch, or null when no assign operations were requested.",
+ "description": "Assignments created by the batch, or `null` when no assign operations were requested.",
"oneOf": [
{
"type": "array",
@@ -10576,7 +11939,7 @@
]
},
"unassigned": {
- "description": "Assignments removed by the batch, or null when no unassign operations were requested.",
+ "description": "Assignments removed by the batch, or `null` when no unassign operations were requested.",
"oneOf": [
{
"type": "array",
@@ -10629,7 +11992,7 @@
}
},
"cursor": {
- "description": "Pagination cursor, or null when there are no more results.",
+ "description": "Pagination cursor, or `null` when there are no more results.",
"oneOf": [
{
"$ref": "#/components/schemas/ProgramListCursor"
@@ -10646,7 +12009,7 @@
"description": "Result of an earning rule assignment batch. Keys are null when the corresponding operation list was not provided.",
"properties": {
"assigned": {
- "description": "Assignments created by the batch, or null when no assign operations were requested.",
+ "description": "Assignments created by the batch, or `null` when no assign operations were requested.",
"oneOf": [
{
"type": "array",
@@ -10660,7 +12023,7 @@
]
},
"unassigned": {
- "description": "Assignments removed by the batch, or null when no unassign operations were requested.",
+ "description": "Assignments removed by the batch, or `null` when no unassign operations were requested.",
"oneOf": [
{
"type": "array",
@@ -10713,7 +12076,7 @@
}
},
"cursor": {
- "description": "Pagination cursor, or null when there are no more results.",
+ "description": "Pagination cursor, or `null` when there are no more results.",
"oneOf": [
{
"$ref": "#/components/schemas/ProgramListCursor"
@@ -10730,7 +12093,7 @@
"description": "Result of a tier structure assignment batch. Keys are null when the corresponding operation list was not provided.",
"properties": {
"assigned": {
- "description": "Assignments created by the batch, or null when no assign operations were requested.",
+ "description": "Assignments created by the batch, or `null` when no assign operations were requested.",
"oneOf": [
{
"type": "array",
@@ -10744,7 +12107,7 @@
]
},
"unassigned": {
- "description": "Assignments removed by the batch, or null when no unassign operations were requested.",
+ "description": "Assignments removed by the batch, or `null` when no unassign operations were requested.",
"oneOf": [
{
"type": "array",
@@ -10787,7 +12150,7 @@
"null"
],
"format": "date-time",
- "description": "Last update timestamp (ISO 8601), or null when never updated."
+ "description": "Last update timestamp (ISO 8601), or `null` when never updated."
},
"object": {
"type": "string",
@@ -10813,7 +12176,7 @@
}
},
"cursor": {
- "description": "Pagination cursor, or null when there are no more results.",
+ "description": "Pagination cursor, or `null` when there are no more results.",
"oneOf": [
{
"$ref": "#/components/schemas/ProgramListCursor"
@@ -10830,7 +12193,7 @@
"description": "Result of a reward assignment batch. Keys are null when the corresponding operation list was not provided.",
"properties": {
"assigned": {
- "description": "Assignments created by the batch, or null when no assign operations were requested.",
+ "description": "Assignments created by the batch, or `null` when no assign operations were requested.",
"oneOf": [
{
"type": "array",
@@ -10844,7 +12207,7 @@
]
},
"unassigned": {
- "description": "Assignments removed by the batch, or null when no unassign operations were requested.",
+ "description": "Assignments removed by the batch, or `null` when no unassign operations were requested.",
"oneOf": [
{
"type": "array",
@@ -10914,7 +12277,7 @@
},
"program_id": {
"type": "string",
- "description": "Identifier of the program the activity relates to.",
+ "description": "Unique identifier of the program the activity relates to.",
"pattern": "^lprg_[a-f0-9]+$"
},
"type": {
@@ -10948,7 +12311,7 @@
},
"group_id": {
"type": "string",
- "description": "Identifier grouping activities recorded within the same operation."
+ "description": "Unique identifier grouping activities recorded within the same operation."
},
"source": {
"$ref": "#/components/schemas/ProgramActivitySource",
@@ -10973,7 +12336,7 @@
}
},
"cursor": {
- "description": "Pagination cursor, or null when there are no more results.",
+ "description": "Pagination cursor, or `null` when there are no more results.",
"oneOf": [
{
"$ref": "#/components/schemas/ProgramListCursor"
@@ -12009,15 +13372,24 @@
},
"MemberCreateRequest": {
"type": "object",
+ "title": "Create program member request",
"description": "Request body for creating a program member. No additional properties are allowed.",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/MemberCreate"
+ }
+ ]
+ },
+ "MemberCreate": {
+ "type": "object",
"properties": {
"customer_id": {
"type": "string",
"pattern": "^cust_[a-zA-Z0-9]+",
- "description": "ID of an existing customer to enroll as a member. Required."
+ "description": "Unique Voucherify customer ID of an existing customer to enroll as a member. Required."
},
"status": {
- "description": "Initial member status. Defaults to `ACTIVE` when omitted or null.",
+ "description": "Initial member status. Defaults to `ACTIVE` when omitted or `null`.",
"oneOf": [
{
"type": "string",
@@ -12033,7 +13405,7 @@
"default": "ACTIVE"
},
"metadata": {
- "description": "Free-form metadata attached to the member. Validated against the metadata\nschema defined for the `vl_member` related object (when one is configured).\nDefaults to an empty object.",
+ "description": "Free-form metadata attached to the member. Validated against the metadata schema defined for the `vl_member` related object (when one is configured). Defaults to an empty object.",
"oneOf": [
{
"type": "object"
@@ -12047,59 +13419,19 @@
},
"required": [
"customer_id"
- ],
- "additionalProperties": false
+ ]
+ },
+ "MemberCreateResponse": {
+ "$ref": "#/components/schemas/MemberWithCards"
},
"MemberBatchCreateRequest": {
"type": "array",
- "description": "Request body for batch member creation - a JSON array of member entries. The raw\nbody is limited to 10485760 bytes (10 MB) and is processed asynchronously in\nbatches of 100 entries. Each entry is validated like a single member creation\nrequest during background processing; per-entry failures (invalid customer_id\nformat, unknown customer, invalid status, member already exists) are reported in\nthe async action result.",
+ "description": "Request body for batch member creation - a JSON array of member entries. The raw body is limited to 10485760 bytes (10 MB) and is processed asynchronously in batches of 100 entries. Each entry is validated like a single member creation request during background processing; per-entry failures (invalid customer_id format, unknown customer, invalid status, member already exists) are reported in the async action result.",
"items": {
- "$ref": "#/components/schemas/MemberBatchCreateItem"
+ "$ref": "#/components/schemas/MemberCreate"
}
},
- "MemberBatchCreateItem": {
- "type": "object",
- "description": "A single member entry of the batch creation payload.",
- "properties": {
- "customer_id": {
- "type": "string",
- "pattern": "^cust_[a-zA-Z0-9]+",
- "description": "ID of an existing customer to enroll as a member. Required per entry."
- },
- "status": {
- "description": "Initial member status. Defaults to `ACTIVE` when omitted.",
- "oneOf": [
- {
- "type": "string",
- "enum": [
- "ACTIVE",
- "INACTIVE"
- ]
- },
- {
- "type": "null"
- }
- ],
- "default": "ACTIVE"
- },
- "metadata": {
- "description": "Free-form metadata attached to the member. Defaults to an empty object.",
- "oneOf": [
- {
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "default": {}
- }
- },
- "required": [
- "customer_id"
- ]
- },
- "MemberBatchScheduleResponse": {
+ "MemberBatchCreateResponse": {
"type": "object",
"description": "Result of scheduling the members batch creation.",
"properties": {
@@ -12141,7 +13473,7 @@
"id": {
"type": "string",
"pattern": "^lmbr_[a-f0-9]+$",
- "description": "Unique member ID assigned by Voucherify."
+ "description": "Unique member ID."
},
"customer_id": {
"type": "string",
@@ -12177,7 +13509,7 @@
"null"
],
"format": "date-time",
- "description": "Timestamp when the member was last updated (ISO 8601), or null if never updated."
+ "description": "Timestamp when the member was last updated (ISO 8601), or `null` if never updated."
},
"object": {
"type": "string",
@@ -12197,7 +13529,7 @@
]
},
"MemberWithCards": {
- "description": "A loyalty program member together with its loyalty cards. Returned by member\ncreate and get endpoints.",
+ "description": "A loyalty program member together with its loyalty cards. Returned by member create and get endpoints.",
"allOf": [
{
"$ref": "#/components/schemas/Member"
@@ -12206,7 +13538,7 @@
"type": "object",
"properties": {
"cards": {
- "description": "Member's loyalty cards - one per card definition assigned to the program. Card codes are generated asynchronously, so `card.code` may be `null` right after member creation.",
+ "description": "Member's loyalty cards - one per card definition assigned to the program. Card codes are generated asynchronously, so `card.code` may be `null` right after member creation.",
"type": "array",
"items": {
"$ref": "#/components/schemas/MemberCard"
@@ -12219,6 +13551,59 @@
}
]
},
+ "Membership": {
+ "type": "object",
+ "description": "A loyalty membership - the member's full loyalty profile within a program, combining the member, the program, and the member's loyalty cards with tier progress.",
+ "properties": {
+ "member": {
+ "$ref": "#/components/schemas/Member",
+ "description": "The loyalty program member."
+ },
+ "program": {
+ "$ref": "#/components/schemas/ProgramSimple",
+ "description": "The loyalty program the member belongs to."
+ },
+ "cards": {
+ "type": "array",
+ "description": "Member's loyalty cards - one per card definition assigned to the program, each enriched with tier progress. Card codes are generated asynchronously, so `card.code` may be `null` right after member creation.",
+ "items": {
+ "$ref": "#/components/schemas/MembershipCard"
+ }
+ },
+ "object": {
+ "type": "string",
+ "const": "membership",
+ "description": "Object type marker, always `membership`."
+ }
+ },
+ "required": [
+ "member",
+ "program",
+ "cards",
+ "object"
+ ]
+ },
+ "MembershipCard": {
+ "type": "object",
+ "description": "A membership's loyalty card - the member's assignment to the card (`member_role`, `created_at`) combined with the card details in the `card` object and the member's tier progress on this card.",
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/MemberCard"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "tier_progress": {
+ "$ref": "#/components/schemas/MemberTierProgress",
+ "description": "The member's tier progress on this card. Omitted on endpoints that don't enrich cards with tier progress."
+ }
+ },
+ "required": [
+ "tier_progress"
+ ]
+ }
+ ]
+ },
"MemberCard": {
"type": "object",
"description": "A member's loyalty card - the member's assignment to the card (`member_role`, `created_at`) combined with the card details in the `card` object.",
@@ -12229,7 +13614,7 @@
"OWNER",
"MEMBER"
],
- "description": "Role of the member on this card."
+ "description": "Role of the member on this card. Currently, loyalty program members can have only the `OWNER` role."
},
"created_at": {
"type": "string",
@@ -12237,7 +13622,7 @@
"description": "Timestamp when the card was assigned to the member (ISO 8601)."
},
"card": {
- "description": "The loyalty card details, or null when the card is not available.",
+ "description": "The loyalty card details, or `null` when the card is not available.",
"oneOf": [
{
"$ref": "#/components/schemas/CardSimple"
@@ -12265,7 +13650,7 @@
"description": "Member's tier progress on a card.",
"properties": {
"current": {
- "description": "The member's current tier, or null.",
+ "description": "The member's current tier, or `null`.",
"oneOf": [
{
"$ref": "#/components/schemas/MemberTierProgressCurrent"
@@ -12276,7 +13661,7 @@
]
},
"tier_structure": {
- "description": "Reference to the tier structure the progress relates to, or null.",
+ "description": "Reference to the tier structure the progress relates to, or `null`.",
"oneOf": [
{
"$ref": "#/components/schemas/MemberTierProgressTierStructure"
@@ -12286,6 +13671,13 @@
}
]
},
+ "deferred": {
+ "type": "array",
+ "description": "Upcoming tier assignments scheduled to start later, when the tier structure defers tier changes. The member will be assigned to the deferred tier at the start date.",
+ "items": {
+ "$ref": "#/components/schemas/MemberTierProgressDeferred"
+ }
+ },
"risks": {
"type": "array",
"description": "Upcoming risks of losing or downgrading the current tier.",
@@ -12295,7 +13687,7 @@
},
"opportunities": {
"type": "array",
- "description": "Opportunities to reach higher tiers.",
+ "description": "Opportunities to reach higher tiers. Deferred tiers are not included in this list.",
"items": {
"$ref": "#/components/schemas/MemberTierProgressOpportunity"
}
@@ -12309,6 +13701,7 @@
"required": [
"current",
"tier_structure",
+ "deferred",
"risks",
"opportunities",
"object"
@@ -12334,6 +13727,38 @@
"object"
]
},
+ "MemberTierProgressDeferred": {
+ "type": "object",
+ "description": "A tier assignment deferred to a future date.",
+ "properties": {
+ "id": {
+ "type": "string",
+ "pattern": "^lt_[a-f0-9]+$",
+ "description": "ID of the deferred tier."
+ },
+ "start_at": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "format": "date-time",
+ "description": "Timestamp when the deferred tier starts (ISO 8601), or `null`."
+ },
+ "expires_at": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "format": "date-time",
+ "description": "Timestamp when the deferred tier expires (ISO 8601), or `null`."
+ }
+ },
+ "required": [
+ "id",
+ "start_at",
+ "expires_at"
+ ]
+ },
"MemberTierProgressCurrent": {
"type": "object",
"description": "The member's current tier.",
@@ -12341,7 +13766,7 @@
"id": {
"type": "string",
"pattern": "^lt_[a-f0-9]+$",
- "description": "Tier ID."
+ "description": "Unique Voucherify ID of the tier."
},
"name": {
"type": "string",
@@ -12353,7 +13778,7 @@
"null"
],
"format": "date-time",
- "description": "Timestamp when the tier was activated for the member (ISO 8601), or null."
+ "description": "Timestamp when the tier was activated for the member (ISO 8601), or `null`."
},
"expires_at": {
"type": [
@@ -12361,10 +13786,10 @@
"null"
],
"format": "date-time",
- "description": "Timestamp when the member's tier expires (ISO 8601), or null."
+ "description": "Timestamp when the member's tier expires (ISO 8601), or `null`."
},
"points": {
- "description": "Member's points position within the tier's points range, or null.",
+ "description": "Member's points position within the tier's points range, or `null`.",
"oneOf": [
{
"$ref": "#/components/schemas/MemberTierProgressPoints"
@@ -12397,13 +13822,12 @@
},
"max": {
"type": "number",
- "description": "Maximum points of the tier's range."
+ "description": "Maximum points of the tier's range. Absent if this is the highest tier in the tier structure."
}
},
"required": [
"current",
- "min",
- "max"
+ "min"
]
},
"MemberTierProgressRisk": {
@@ -12424,14 +13848,14 @@
"null"
],
"format": "date-time",
- "description": "Date when the risk materializes (ISO 8601), or null."
+ "description": "Date when the risk materializes (ISO 8601), or `null`."
},
"tier_id": {
"type": [
"string",
"null"
],
- "description": "ID of the tier the member would be downgraded to (`lt_[a-f0-9]+`), or null for `TIER_LEFT`."
+ "description": "ID of the tier the member would be downgraded to (`lt_[a-f0-9]+`), or `null` for `TIER_LEFT`."
}
},
"required": [
@@ -12450,14 +13874,14 @@
"null"
],
"format": "date-time",
- "description": "Deadline for taking advantage of the opportunity (ISO 8601), or null."
+ "description": "Deadline for taking advantage of the opportunity (ISO 8601), or `null`."
},
"tier_id": {
"type": [
"string",
"null"
],
- "description": "ID of the tier that can be reached (`lt_[a-f0-9]+`), or null."
+ "description": "ID of the tier that can be reached (`lt_[a-f0-9]+`), or `null`."
},
"points": {
"type": "number",
@@ -12757,10 +14181,10 @@
}
},
"cursor": {
- "description": "Pagination cursor, or null when there are no more results.",
+ "description": "Pagination cursor, or `null` when there are no more results.",
"oneOf": [
{
- "$ref": "#/components/schemas/MemberListCursor"
+ "$ref": "#/components/schemas/ListCursor"
},
{
"type": "null"
@@ -12779,7 +14203,7 @@
"object"
]
},
- "MemberListCursor": {
+ "ListCursor": {
"type": "object",
"description": "Pagination cursor.",
"properties": {
@@ -12853,7 +14277,7 @@
"description": "Filter by creation date (date conditions).",
"oneOf": [
{
- "$ref": "#/components/schemas/MemberDateFilter"
+ "$ref": "#/components/schemas/DateFilter"
},
{
"type": "null"
@@ -13190,9 +14614,9 @@
],
"additionalProperties": false
},
- "MemberDateFilter": {
+ "DateFilter": {
"type": "object",
- "description": "Date filter conditions. `$before`/`$after` take date strings; `$is`,\n`$more_than`, `$less_than` take non-negative integers;\n`$has_value`/`$is_unknown` are presence checks. Each condition accepts a single\nvalue or an array with exactly one value. At least one condition is required.",
+ "description": "Date filter conditions. `$before`/`$after` take date strings (ISO 8601); `$is`, `$more_than`, `$less_than` take non-negative integers; `$has_value`/`$is_unknown` are presence checks. Each condition accepts a single value or an array with exactly one value. At least one condition is required.",
"properties": {
"conditions": {
"type": "object",
@@ -13202,12 +14626,14 @@
"description": "Date is before the given date.",
"oneOf": [
{
- "type": "string"
+ "type": "string",
+ "format": "date-time"
},
{
"type": "array",
"items": {
- "type": "string"
+ "type": "string",
+ "format": "date-time"
},
"minItems": 1,
"maxItems": 1
@@ -13221,12 +14647,14 @@
"description": "Date is after the given date.",
"oneOf": [
{
- "type": "string"
+ "type": "string",
+ "format": "date-time"
},
{
"type": "array",
"items": {
- "type": "string"
+ "type": "string",
+ "format": "date-time"
},
"minItems": 1,
"maxItems": 1
@@ -13240,12 +14668,14 @@
"description": "Date matches the given non-negative integer value.",
"oneOf": [
{
- "type": "string"
+ "type": "string",
+ "format": "date-time"
},
{
"type": "array",
"items": {
- "type": "string"
+ "type": "string",
+ "format": "date-time"
},
"minItems": 1,
"maxItems": 1
@@ -13344,10 +14774,10 @@
}
},
"cursor": {
- "description": "Pagination cursor, or null when there are no more results.",
+ "description": "Pagination cursor, or `null` when there are no more results.",
"oneOf": [
{
- "$ref": "#/components/schemas/MemberListCursor"
+ "$ref": "#/components/schemas/ListCursor"
},
{
"type": "null"
@@ -13507,7 +14937,7 @@
"description": "Filter by activity creation date (date conditions).",
"oneOf": [
{
- "$ref": "#/components/schemas/MemberDateFilter"
+ "$ref": "#/components/schemas/DateFilter"
},
{
"type": "null"
@@ -13787,10 +15217,10 @@
}
},
"cursor": {
- "description": "Pagination cursor, or null when there are no more results.",
+ "description": "Pagination cursor, or `null` when there are no more results.",
"oneOf": [
{
- "$ref": "#/components/schemas/MemberListCursor"
+ "$ref": "#/components/schemas/ListCursor"
},
{
"type": "null"
@@ -13905,7 +15335,7 @@
"description": "Filter by activity creation date (date conditions).",
"oneOf": [
{
- "$ref": "#/components/schemas/MemberDateFilter"
+ "$ref": "#/components/schemas/DateFilter"
},
{
"type": "null"
@@ -14170,7 +15600,7 @@
"description": "Result of a manual card points adjustment.",
"properties": {
"transaction": {
- "description": "The created card transaction (`ADMIN_CREDIT` or `ADMIN_DEBIT`), or null when no transaction was created (status `NO_CHANGE`).",
+ "description": "The created card transaction (`ADMIN_CREDIT` or `ADMIN_DEBIT`), or `null` when no transaction was created (status `NO_CHANGE`).",
"oneOf": [
{
"$ref": "#/components/schemas/CardTransaction"
@@ -14204,7 +15634,7 @@
"description": "Result of a manual pending points activation. This endpoint always returns\nstatus `TRANSACTION_CREATED` on success.",
"properties": {
"transaction": {
- "description": "The created `PENDING_POINTS_ACTIVATED` card transaction, or null.",
+ "description": "The created `PENDING_POINTS_ACTIVATED` card transaction, or `null`.",
"oneOf": [
{
"$ref": "#/components/schemas/CardTransaction"
@@ -14238,7 +15668,7 @@
"description": "Result of a pending points cancellation. This endpoint always returns status\n`TRANSACTION_CREATED` on success.",
"properties": {
"transaction": {
- "description": "The created `PENDING_POINTS_CANCELED` card transaction, or null.",
+ "description": "The created `PENDING_POINTS_CANCELED` card transaction, or `null`.",
"oneOf": [
{
"$ref": "#/components/schemas/CardTransaction"
@@ -14272,7 +15702,7 @@
"description": "Result of a manual points bucket expiration. This endpoint always returns status\n`TRANSACTION_CREATED` on success.",
"properties": {
"transaction": {
- "description": "The created `ADMIN_POINTS_EXPIRATION` card transaction, or null.",
+ "description": "The created `ADMIN_POINTS_EXPIRATION` card transaction, or `null`.",
"oneOf": [
{
"$ref": "#/components/schemas/CardTransaction"
@@ -14303,7 +15733,6 @@
},
"CardTransactionListResponse": {
"type": "object",
- "description": "Cursor-paginated list of card transactions.",
"properties": {
"data": {
"type": "array",
@@ -14313,10 +15742,10 @@
}
},
"cursor": {
- "description": "Pagination cursor, or null when there are no more results.",
+ "description": "Pagination cursor, or `null` when there are no more results.",
"oneOf": [
{
- "$ref": "#/components/schemas/MemberListCursor"
+ "$ref": "#/components/schemas/ListCursor"
},
{
"type": "null"
@@ -14347,22 +15776,22 @@
"card_id": {
"type": "string",
"pattern": "^lcrd_[a-f0-9]+$",
- "description": "ID of the card the transaction belongs to."
+ "description": "ID of the card the transaction belongs to. Assigned by Voucherify."
},
"program_id": {
"type": "string",
"pattern": "^lprg_[a-f0-9]+$",
- "description": "ID of the loyalty program."
+ "description": "ID of the loyalty program. Assigned by Voucherify."
},
"member_id": {
"type": "string",
"pattern": "^lmbr_[a-f0-9]+$",
- "description": "ID of the member owning the card."
+ "description": "ID of the member owning the card. Assigned by Voucherify."
},
"card_definition_id": {
"type": "string",
"pattern": "^lcdef_[a-f0-9]+$",
- "description": "ID of the card definition of the card."
+ "description": "ID of the card definition of the card. Assigned by Voucherify."
},
"card_type": {
"type": "string",
@@ -14423,7 +15852,7 @@
"null"
],
"format": "date-time",
- "description": "Timestamp when the transaction was last updated (ISO 8601), or null."
+ "description": "Timestamp when the transaction was last updated (ISO 8601), or `null`."
},
"object": {
"type": "string",
@@ -14448,7 +15877,7 @@
},
"CardTransactionDetails": {
"type": "object",
- "description": "Card transaction details. `reason`, `rejection` and `metadata` are present on all\nvariants; the remaining fields depend on the transaction `type`:\n\n- `ADMIN_CREDIT`: `points` (`total`, `expiration_date`)\n- `ADMIN_DEBIT`: `points` (`total`)\n- `ADMIN_POINTS_EXPIRATION`: `bucket` (the expired points bucket)\n- `POINTS_EARNED`: `points` (`total`, `expiration_date`)\n- `POINTS_EXPIRED`: `points` (`total`), `date`, `buckets`\n- `POINTS_SPENT_ON_REWARD`: `points` (`total`), `reward`, `reward_transaction`,\n `target_card`, `purchase_transaction`\n- `POINTS_PURCHASED`: `points` (`total`, `expiration_date`, `expiration_type`),\n `reward`, `reward_transaction`, `card_transaction`\n- `POINTS_PURCHASE_REVERSED`: `points` (`total`, `expiration_date`,\n `expiration_type`), `reward`, `purchase`, `reward_transaction`\n- `POINTS_SPENT_ON_ORDER`: `points` (`total`), `order`, `order_transaction`\n- `POINTS_REFUNDED`: `points` (`total`)\n- `POINTS_RETURNED`: `points` (`total`, `expiration_date`, `expiration_type`),\n `reward`, `purchase`, `reward_transaction`\n- `PENDING_POINTS_ADDED` / `PENDING_POINTS_ACTIVATED` / `PENDING_POINTS_CANCELED`:\n `points` (`total`, `date`, `type`)",
+ "description": "Card transaction details. `reason`, `rejection` and `metadata` are present on all variants; the remaining fields depend on the transaction `type`:\n\n- `ADMIN_CREDIT`: `points` (`total`, `expiration_date`)\n- `ADMIN_DEBIT`: `points` (`total`)\n- `ADMIN_POINTS_EXPIRATION`: `bucket` (the expired points bucket)\n- `POINTS_EARNED`: `points` (`total`, `expiration_date`)\n- `POINTS_EXPIRED`: `points` (`total`), `date`, `buckets`\n- `POINTS_SPENT_ON_REWARD`: `points` (`total`), `reward`, `reward_transaction`,`target_card`, `purchase_transaction`\n- `POINTS_PURCHASED`: `points` (`total`, `expiration_date`, `expiration_type`), `reward`, `reward_transaction`, `card_transaction`\n- `POINTS_PURCHASE_REVERSED`: `points` (`total`, `expiration_date`,\n `expiration_type`), `reward`, `purchase`, `reward_transaction`\n- `POINTS_SPENT_ON_ORDER`: `points` (`total`), `order`, `order_transaction`\n- `POINTS_REFUNDED`: `points` (`total`)\n- `POINTS_RETURNED`: `points` (`total`, `expiration_date`, `expiration_type`), `reward`, `purchase`, `reward_transaction`\n- `PENDING_POINTS_ADDED` / `PENDING_POINTS_ACTIVATED` / `PENDING_POINTS_CANCELED`: `points` (`total`, `date`, `type`)",
"properties": {
"reason": {
"type": [
@@ -14458,7 +15887,7 @@
"description": "Reason for the transaction (e.g. the reason provided in a manual adjustment request)."
},
"rejection": {
- "description": "Rejection details when the transaction was rejected, or null.",
+ "description": "Rejection details when the transaction was rejected, or `null`.",
"oneOf": [
{
"type": "object",
@@ -14496,7 +15925,7 @@
"null"
],
"format": "date",
- "description": "Expiration date of the affected points (`YYYY-MM-DD`), or null."
+ "description": "Expiration date of the affected points (`YYYY-MM-DD`), or `null`."
},
"expiration_type": {
"type": [
@@ -14510,7 +15939,7 @@
"SLIDING_EXPIRATION",
null
],
- "description": "Points expiration type of the affected points, or null."
+ "description": "Points expiration type of the affected points, or `null`."
},
"date": {
"type": "string",
@@ -14546,7 +15975,7 @@
"description": "Expiration date (`POINTS_EXPIRED` only, `YYYY-MM-DD`)."
},
"reward": {
- "description": "Reference to the reward involved, or null.",
+ "description": "Reference to the reward involved, or `null`.",
"oneOf": [
{
"type": "object",
@@ -14563,7 +15992,7 @@
]
},
"reward_transaction": {
- "description": "Reference to the related reward transaction, or null.",
+ "description": "Reference to the related reward transaction, or `null`.",
"oneOf": [
{
"type": "object",
@@ -14580,7 +16009,7 @@
]
},
"card_transaction": {
- "description": "Reference to the linked card transaction (e.g. the spend side of a points purchase), or null.",
+ "description": "Reference to the linked card transaction (e.g. the spend side of a points purchase), or `null`.",
"oneOf": [
{
"type": "object",
@@ -14597,7 +16026,7 @@
]
},
"purchase": {
- "description": "References to the original purchase transactions (reversal/return variants), or null.",
+ "description": "References to the original purchase transactions (reversal/return variants), or `null`.",
"oneOf": [
{
"type": "object",
@@ -14642,7 +16071,7 @@
]
},
"order": {
- "description": "Reference to the order paid with points (`POINTS_SPENT_ON_ORDER` only), or null.",
+ "description": "Reference to the order paid with points (`POINTS_SPENT_ON_ORDER` only), or `null`.",
"oneOf": [
{
"type": "object",
@@ -14659,7 +16088,7 @@
]
},
"order_transaction": {
- "description": "Reference to the related order transaction (`POINTS_SPENT_ON_ORDER` only), or null.",
+ "description": "Reference to the related order transaction (`POINTS_SPENT_ON_ORDER` only), or `null`.",
"oneOf": [
{
"type": "object",
@@ -14676,7 +16105,7 @@
]
},
"target_card": {
- "description": "Reference to the target card credited by a points purchase (`POINTS_SPENT_ON_REWARD` only), or null.",
+ "description": "Reference to the target card credited by a points purchase (`POINTS_SPENT_ON_REWARD` only), or `null`.",
"oneOf": [
{
"type": "object",
@@ -14693,7 +16122,7 @@
]
},
"purchase_transaction": {
- "description": "Reference to the linked purchase card transaction (`POINTS_SPENT_ON_REWARD` only), or null.",
+ "description": "Reference to the linked purchase card transaction (`POINTS_SPENT_ON_REWARD` only), or `null`.",
"oneOf": [
{
"type": "object",
@@ -14745,7 +16174,7 @@
"description": "Filter by transaction creation date (date conditions).",
"oneOf": [
{
- "$ref": "#/components/schemas/MemberDateFilter"
+ "$ref": "#/components/schemas/DateFilter"
},
{
"type": "null"
@@ -14757,7 +16186,7 @@
},
"CardTransactionIdFilter": {
"type": "object",
- "description": "ID filter conditions for card transaction IDs. At least one condition is\nrequired.",
+ "description": "ID filter conditions for card transaction IDs. At least one condition is required.",
"properties": {
"conditions": {
"type": "object",
@@ -14868,10 +16297,10 @@
}
},
"cursor": {
- "description": "Pagination cursor, or null when there are no more results.",
+ "description": "Pagination cursor, or `null` when there are no more results.",
"oneOf": [
{
- "$ref": "#/components/schemas/MemberListCursor"
+ "$ref": "#/components/schemas/ListCursor"
},
{
"type": "null"
@@ -14975,7 +16404,7 @@
"null"
],
"format": "date-time",
- "description": "Timestamp when the bucket was last updated (ISO 8601), or null."
+ "description": "Timestamp when the bucket was last updated (ISO 8601), or `null`."
},
"object": {
"type": "string",
@@ -15011,10 +16440,10 @@
}
},
"cursor": {
- "description": "Pagination cursor, or null when there are no more results.",
+ "description": "Pagination cursor, or `null` when there are no more results.",
"oneOf": [
{
- "$ref": "#/components/schemas/MemberListCursor"
+ "$ref": "#/components/schemas/ListCursor"
},
{
"type": "null"
@@ -15122,7 +16551,7 @@
"null"
],
"format": "date-time",
- "description": "Timestamp when the bucket was last updated (ISO 8601), or null."
+ "description": "Timestamp when the bucket was last updated (ISO 8601), or `null`."
},
"object": {
"type": "string",
@@ -15198,7 +16627,7 @@
"properties": {
"reward_id": {
"type": "string",
- "description": "Identifier of the reward to purchase (format `lrew_...`)."
+ "description": "Unique identifier of the reward to purchase (format `lrew_...`)."
},
"mode": {
"type": "string",
@@ -15207,7 +16636,7 @@
"DRY_RUN"
],
"default": "TRANSACTION",
- "description": "Purchase mode. `TRANSACTION` creates a PENDING reward transaction processed asynchronously (HTTP 202). `DRY_RUN` only simulates the purchase and returns the calculation result (HTTP 200); no transaction is created. Defaults to `TRANSACTION` when omitted."
+ "description": "Purchase mode. `TRANSACTION` creates a `PENDING` reward transaction processed asynchronously (HTTP `202`). `DRY_RUN` only simulates the purchase and returns the calculation result (HTTP `200`); no transaction is created. Defaults to `TRANSACTION` when omitted."
}
},
"required": [
@@ -15220,7 +16649,7 @@
"description": "Request body for refunding a reward purchase. May be empty; defaults are applied.",
"properties": {
"policies": {
- "description": "Refund policies. When omitted or null, defaults are applied.",
+ "description": "Refund policies. When omitted or `null`, defaults are applied.",
"oneOf": [
{
"$ref": "#/components/schemas/RewardPurchaseRefundPolicies"
@@ -15276,30 +16705,30 @@
"properties": {
"id": {
"type": "string",
- "description": "Unique reward transaction identifier (format `lrtx_...`). Absent for DRY_RUN (SIMULATED) transactions, which are never persisted."
+ "description": "Unique reward transaction identifier (format `lrtx_...`). Absent for `DRY_RUN` (SIMULATED) transactions, which are never persisted."
},
"card_id": {
"type": "string",
- "description": "Identifier of the loyalty card the points were spent from (format `lcrd_...`)."
+ "description": "Unique identifier of the loyalty card the points were spent from (format `lcrd_...`)."
},
"card_transaction_id": {
"type": [
"string",
"null"
],
- "description": "Identifier of the underlying card transaction (format `lctx_...`). `null` for DRY_RUN (SIMULATED) transactions."
+ "description": "Unique identifier of the underlying card transaction (format `lctx_...`). `null` for `DRY_RUN` (SIMULATED) transactions."
},
"program_id": {
"type": "string",
- "description": "Identifier of the loyalty program (format `lprg_...`)."
+ "description": "Unique identifier of the loyalty program (format `lprg_...`)."
},
"member_id": {
"type": "string",
- "description": "Identifier of the program member (format `lmbr_...`)."
+ "description": "Unique identifier of the program member (format `lmbr_...`)."
},
"reward_id": {
"type": "string",
- "description": "Identifier of the purchased reward (format `lrew_...`)."
+ "description": "Unique identifier of the purchased reward (format `lrew_...`)."
},
"status": {
"type": "string",
@@ -15311,7 +16740,7 @@
"SIMULATED",
"REFUNDED"
],
- "description": "Transaction status. `PENDING` — created, awaiting processing; `PROCESSING` — being processed; `APPROVED` — completed successfully; `REJECTED` — rejected (see `details.rejection`); `SIMULATED` — dry-run result, not persisted; `REFUNDED` — purchase has been refunded."
+ "description": "Transaction status:\n\n- `PENDING`: Created and awaiting processing.\n\n- `PROCESSING`: Being processed.\n\n- `APPROVED`: Completed successfully.\n\n- `REJECTED`: Rejected (see `details.rejection`).\n\n- `SIMULATED`: Dry-run result that is not persisted.\n\n- `REFUNDED`: Purchase has been refunded."
},
"type": {
"type": "string",
@@ -15357,14 +16786,15 @@
},
"RewardPurchaseTransactionDetailsPurchase": {
"type": "object",
- "description": "Details of a PURCHASE reward transaction.",
+ "title": "Purchase details",
+ "description": "Details of a `PURCHASE` reward transaction.",
"properties": {
"reason": {
"type": "string",
"description": "Human-readable reason. For purchases: \"Points spent on reward\"."
},
"rejection": {
- "description": "Rejection details, present when the transaction was rejected.",
+ "description": "Rejection details, present when the transaction was rejected. `null` otherwise.",
"oneOf": [
{
"$ref": "#/components/schemas/RewardPurchaseRejection"
@@ -15391,7 +16821,7 @@
]
},
"result": {
- "description": "Fulfillment result, populated once the purchase is processed (APPROVED). `null` for PENDING/SIMULATED transactions.",
+ "description": "Fulfillment result, populated once the purchase is processed (APPROVED). `null` for `PENDING`/`SIMULATED` transactions.",
"oneOf": [
{
"$ref": "#/components/schemas/RewardPurchaseResult"
@@ -15401,10 +16831,18 @@
}
]
}
- }
+ },
+ "required": [
+ "reason",
+ "rejection",
+ "metadata",
+ "points",
+ "result"
+ ]
},
"RewardPurchaseTransactionDetailsRefund": {
"type": "object",
+ "title": "Refund details",
"description": "Details of a REFUND reward transaction.",
"properties": {
"reason": {
@@ -15510,21 +16948,28 @@
"type": "number",
"description": "Total number of points."
}
- }
+ },
+ "required": [
+ "total"
+ ]
},
"RewardPurchaseRejection": {
"type": "object",
- "description": "Rejection details.",
+ "description": "Details about a rejected reward purchase transaction.",
"properties": {
"reason": {
"type": "string",
"description": "Machine-readable rejection reason."
},
"details": {
- "type": "string",
- "description": "Additional human-readable details about the rejection."
+ "type": "object",
+ "description": "Additional structured context about the rejection. Fields depend on the rejection reason.",
+ "additionalProperties": true
}
- }
+ },
+ "required": [
+ "reason"
+ ]
},
"RewardPurchaseResult": {
"type": "object",
@@ -15549,7 +16994,7 @@
"description": "Fulfilled quantity."
},
"material": {
- "description": "Material reward fulfillment payload. Present for MATERIAL rewards.",
+ "description": "Material reward fulfillment payload. Present for `MATERIAL` rewards.",
"oneOf": [
{
"$ref": "#/components/schemas/RewardPurchaseResultMaterial"
@@ -15560,7 +17005,7 @@
]
},
"digital": {
- "description": "Digital reward fulfillment payload. Present for DIGITAL rewards.",
+ "description": "Digital reward fulfillment payload. Present for `DIGITAL` rewards.",
"oneOf": [
{
"$ref": "#/components/schemas/RewardPurchaseResultDigital"
@@ -15670,10 +17115,9 @@
"type": "string",
"enum": [
"SKIPPED",
- "DELETED",
- "CREDITS_SUBTRACTED"
+ "DELETED"
],
- "description": "Refund handling result for this coupon (present in refund results): `DELETED` — the coupon was deleted; `SKIPPED` — the coupon was left intact."
+ "description": "Refund handling result for this coupon (present in refund results):\n\n- `DELETED`: The coupon was deleted.\n\n- `SKIPPED`: The coupon was left intact."
}
}
},
@@ -15701,10 +17145,9 @@
"type": "string",
"enum": [
"SKIPPED",
- "DELETED",
"CREDITS_SUBTRACTED"
],
- "description": "Refund handling result for this gift voucher (present in refund results): `CREDITS_SUBTRACTED` — the credited balance was subtracted; `SKIPPED` — the voucher was left intact."
+ "description": "Refund handling result for this gift voucher (present in refund results):\n\n- `CREDITS_SUBTRACTED`: The credited balance was subtracted.\n\n- `SKIPPED`: The voucher was left intact."
}
}
},
@@ -15726,34 +17169,201 @@
}
}
},
- "RewardPurchaseCreateResponse": {
+ "RewardPurchaseCreateDryRunResponse": {
"type": "object",
- "description": "Result of a reward purchase request.",
+ "description": "Result of a reward purchase request in dry-run mode.",
"properties": {
"transaction": {
- "description": "The created (or simulated) reward transaction.",
- "oneOf": [
- {
- "$ref": "#/components/schemas/RewardPurchaseTransaction"
+ "type": "object",
+ "description": "The simulated reward transaction.",
+ "properties": {
+ "card_id": {
+ "type": "string",
+ "description": "Unique identifier of the loyalty card the points are to be spent from (format `lcrd_...`)."
},
- {
- "type": "null"
+ "card_transaction_id": {
+ "type": "null",
+ "description": "`null` for `DRY_RUN` (SIMULATED) transactions."
+ },
+ "program_id": {
+ "type": "string",
+ "description": "Unique identifier of the loyalty program (format `lprg_...`)."
+ },
+ "member_id": {
+ "type": "string",
+ "description": "Unique identifier of the program member (format `lmbr_...`)."
+ },
+ "reward_id": {
+ "type": "string",
+ "description": "Unique identifier of the purchased reward (format `lrew_...`)."
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "SIMULATED"
+ ],
+ "description": "Transaction status is `SIMULATED` for a dry-run result that is not persisted."
+ },
+ "type": {
+ "type": "string",
+ "const": "PURCHASE",
+ "description": "Transaction type. It contains purchase details for the simulated transaction."
+ },
+ "details": {
+ "description": "Transaction details. For a dry run purchase, it's always `PURCHASE`.",
+ "$ref": "#/components/schemas/RewardPurchaseTransactionDetailsPurchase"
+ },
+ "updated_at": {
+ "type": "null",
+ "description": "For `DRY_RUN` transactions, this is always `null`."
+ },
+ "object": {
+ "type": "string",
+ "const": "reward_transaction",
+ "description": "Object type marker. Always `reward_transaction`."
}
+ },
+ "required": [
+ "id",
+ "card_id",
+ "card_transaction_id",
+ "program_id",
+ "member_id",
+ "reward_id",
+ "status",
+ "type",
+ "details",
+ "created_at",
+ "updated_at",
+ "object"
]
},
"status": {
"type": "string",
"enum": [
- "TRANSACTION_CREATED",
"DRY_RUN"
],
- "description": "Result status. `TRANSACTION_CREATED` for `TRANSACTION` mode, `DRY_RUN` for dry-run mode."
+ "description": "Result status. Always `DRY_RUN` for the dry-run mode."
},
"message": {
"type": "string",
- "description": "Human-readable result message. `TRANSACTION` mode: \"Reward purchase transaction created\". `DRY_RUN` mode: \"Dry run mode. No transaction was created. This is only a simulation.\"."
+ "description": "Human-readable result message. `DRY_RUN` mode: \"Dry run mode. No transaction was created. This is only a simulation.\"."
}
- }
+ },
+ "required": [
+ "transaction",
+ "status",
+ "message"
+ ]
+ },
+ "RewardPurchaseCreateTransactionResponse": {
+ "type": "object",
+ "description": "Result of a reward purchase request.",
+ "properties": {
+ "transaction": {
+ "type": "object",
+ "description": "A reward transaction. Represents a reward purchase transaction.",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Unique reward transaction identifier (format `lrtx_...`)."
+ },
+ "card_id": {
+ "type": "string",
+ "description": "Unique identifier of the loyalty card the points were spent from (format `lcrd_...`)."
+ },
+ "card_transaction_id": {
+ "type": "string",
+ "description": "Unique identifier of the underlying card transaction (format `lctx_...`)."
+ },
+ "program_id": {
+ "type": "string",
+ "description": "Unique identifier of the loyalty program (format `lprg_...`)."
+ },
+ "member_id": {
+ "type": "string",
+ "description": "Unique identifier of the program member (format `lmbr_...`)."
+ },
+ "reward_id": {
+ "type": "string",
+ "description": "Unique identifier of the purchased reward (format `lrew_...`)."
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "PENDING"
+ ],
+ "description": "Transaction status:\n\n- `PENDING`: Created and awaiting processing."
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "PURCHASE"
+ ],
+ "description": "Transaction type."
+ },
+ "details": {
+ "description": "Transaction details. Shape depends on `type` — purchase details for `PURCHASE`.",
+ "oneOf": [
+ {
+ "$ref": "#/components/schemas/RewardPurchaseTransactionDetailsPurchase"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "description": "Timestamp when the transaction was created (ISO 8601)."
+ },
+ "updated_at": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "format": "date-time",
+ "description": "Timestamp when the transaction was last updated (ISO 8601), or `null`."
+ },
+ "object": {
+ "type": "string",
+ "const": "reward_transaction",
+ "description": "Object type marker. Always `reward_transaction`."
+ }
+ },
+ "required": [
+ "id",
+ "card_id",
+ "card_transaction_id",
+ "program_id",
+ "member_id",
+ "reward_id",
+ "status",
+ "type",
+ "details",
+ "created_at",
+ "updated_at",
+ "object"
+ ]
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "TRANSACTION_CREATED"
+ ],
+ "description": "Result status. `TRANSACTION_CREATED` for `TRANSACTION` mode."
+ },
+ "message": {
+ "type": "string",
+ "description": "Human-readable result message. `TRANSACTION` mode: \"Reward purchase transaction created\"."
+ }
+ },
+ "required": [
+ "transaction",
+ "status",
+ "message"
+ ]
},
"RewardPurchaseRefundResponse": {
"type": "object",
@@ -16049,7 +17659,7 @@
"properties": {
"card_id": {
"type": "string",
- "description": "Identifier of the member's loyalty card to spend points from (format `lcrd_...`)."
+ "description": "Unique identifier of the member's loyalty card to spend points from (format `lcrd_...`)."
},
"order": {
"$ref": "#/components/schemas/OrderPaymentOrder"
@@ -16066,7 +17676,7 @@
]
},
"mode": {
- "description": "Payment mode. `TRANSACTION` creates a PENDING order transaction processed asynchronously (HTTP 202). `DRY_RUN` only simulates the payment and returns the calculation result (HTTP 200); no transaction is created. Defaults to `TRANSACTION` when omitted or null.",
+ "description": "Payment mode. `TRANSACTION` creates a PENDING order transaction processed asynchronously (HTTP 202). `DRY_RUN` only simulates the payment and returns the calculation result (HTTP 200); no transaction is created. Defaults to `TRANSACTION` when omitted or `null`.",
"oneOf": [
{
"type": "string",
@@ -16211,38 +17821,38 @@
},
"OrderPaymentTransaction": {
"type": "object",
- "description": "An order transaction. Represents a pay-with-points payment.",
+ "description": "An order transaction representing a pay-with-points payment. List endpoints return only persisted transactions; `SIMULATED` appears only on dry-run create responses.",
"properties": {
"id": {
"type": "string",
- "description": "Unique order transaction identifier (format `lotx_...`). Absent for DRY_RUN (SIMULATED) transactions, which are never persisted."
+ "description": "Identifies the order transaction (`lotx_...`). Absent on dry-run (`SIMULATED`) create responses, which are never persisted. Always present in list responses."
},
"program_id": {
"type": "string",
- "description": "Identifier of the loyalty program (format `lprg_...`)."
+ "description": "Unique identifier of the loyalty program (format `lprg_...`)."
},
"member_id": {
"type": "string",
- "description": "Identifier of the program member (format `lmbr_...`)."
+ "description": "Unique identifier of the program member (format `lmbr_...`)."
},
"card_id": {
"type": "string",
- "description": "Identifier of the loyalty card the points were spent from (format `lcrd_...`)."
+ "description": "Unique identifier of the loyalty card the points were spent from (format `lcrd_...`)."
},
"card_definition_id": {
"type": "string",
- "description": "Identifier of the card definition (format `lcdef_...`)."
+ "description": "Unique identifier of the card definition (format `lcdef_...`)."
},
"card_transaction_id": {
"type": [
"string",
"null"
],
- "description": "Identifier of the underlying card transaction (format `lctx_...`). `null` for DRY_RUN (SIMULATED) transactions."
+ "description": "Unique identifier of the underlying card transaction (format `lctx_...`). `null` for DRY_RUN (SIMULATED) transactions."
},
"order_id": {
"type": "string",
- "description": "Identifier of the paid order (format `ord_...`)."
+ "description": "Unique identifier of the paid order (format `ord_...`)."
},
"status": {
"type": "string",
@@ -16253,14 +17863,14 @@
"REJECTED",
"SIMULATED"
],
- "description": "Transaction status. `PENDING` — created, awaiting processing; `PROCESSING` — being processed; `APPROVED` — completed successfully; `REJECTED` — rejected (see `details.rejection`); `SIMULATED` — dry-run result, not persisted."
+ "description": "Transaction status. `PENDING` — created, awaiting processing; `PROCESSING` — being processed; `APPROVED` — completed successfully; `REJECTED` — rejected (see `details.rejection`); `SIMULATED` — dry-run create result, not persisted (not returned by list)."
},
"type": {
"type": "string",
"enum": [
"PAY_WITH_POINTS"
],
- "description": "Transaction type."
+ "description": "Defines the transaction type. Always `PAY_WITH_POINTS`."
},
"details": {
"description": "Transaction details for the `PAY_WITH_POINTS` type.",
@@ -16295,7 +17905,7 @@
},
"OrderPaymentTransactionDetails": {
"type": "object",
- "description": "Details of a PAY_WITH_POINTS order transaction.",
+ "description": "Details of a `PAY_WITH_POINTS` order transaction.",
"properties": {
"reason": {
"type": "string",
@@ -16314,7 +17924,7 @@
},
"metadata": {
"type": "object",
- "description": "Transaction metadata. For pay-with-points transactions this contains the flattened payment limits used for the calculation: `amount_limit` and/or `points_limit` (omitted when the default CARD_BALANCE limit was used). Empty object when not set.",
+ "description": "Transaction metadata. For pay-with-points transactions this contains the flattened payment limits used for the calculation: `amount_limit` and/or `points_limit` (omitted when the default `CARD_BALANCE` limit was used). Empty object when not set.",
"properties": {
"amount_limit": {
"type": "integer",
@@ -16342,7 +17952,7 @@
},
"amount": {
"type": "number",
- "description": "Order amount paid with points."
+ "description": "Amount of the order paid with points."
},
"points_spent": {
"type": "number",
@@ -16356,15 +17966,37 @@
},
"OrderPaymentRejection": {
"type": "object",
- "description": "Rejection details.",
+ "description": "Rejection details for a rejected order payment transaction.",
"properties": {
"reason": {
"type": "string",
- "description": "Machine-readable rejection reason."
+ "description": "Machine-readable rejection reason. Order-side: `ORDER_NOT_FOUND`, `PAYMENT_EXCEEDS_ORDER_TOTAL_AMOUNT`. Card-side (when the linked card transaction fails first): `NOT_ENOUGH_BALANCE`, `GLOBAL_SPENDING_LIMIT_EXCEEDED`, `TRANSACTION_SPENDING_LIMIT_EXCEEDED`."
},
"details": {
- "type": "string",
- "description": "Additional human-readable details about the rejection."
+ "description": "Structured rejection context. Omitted when the reason carries no extra data (`ORDER_NOT_FOUND`, `PAYMENT_EXCEEDS_ORDER_TOTAL_AMOUNT`, `NOT_ENOUGH_BALANCE`). For `GLOBAL_SPENDING_LIMIT_EXCEEDED`: `type`, `limit`, `spendings`. For `TRANSACTION_SPENDING_LIMIT_EXCEEDED`: `type`, `limit`.",
+ "oneOf": [
+ {
+ "type": "object",
+ "additionalProperties": true,
+ "properties": {
+ "type": {
+ "type": "string",
+ "description": "Spending cap type that was exceeded."
+ },
+ "limit": {
+ "type": "number",
+ "description": "Configured spending limit."
+ },
+ "spendings": {
+ "type": "number",
+ "description": "Projected total spendings that exceeded the limit. Present for `GLOBAL_SPENDING_LIMIT_EXCEEDED`."
+ }
+ }
+ },
+ {
+ "type": "null"
+ }
+ ]
}
}
},
@@ -16402,7 +18034,7 @@
"description": "Filters for listing order payments.",
"properties": {
"junction": {
- "description": "Logical junction between the field filters. Defaults to AND behavior.",
+ "description": "Joins field filters with `AND` or `OR`. Defaults to `AND`.",
"oneOf": [
{
"type": "string",
@@ -16694,19 +18326,19 @@
},
"benefit_id": {
"type": "string",
- "description": "Identifier of the fulfilled benefit (format `lben_...`)."
+ "description": "Unique identifier of the fulfilled benefit (format `lben_...`)."
},
"program_id": {
"type": "string",
- "description": "Identifier of the loyalty program (format `lprg_...`)."
+ "description": "Unique identifier of the loyalty program (format `lprg_...`)."
},
"member_id": {
"type": "string",
- "description": "Identifier of the program member (format `lmbr_...`)."
+ "description": "Unique identifier of the program member (format `lmbr_...`)."
},
"earning_rule_id": {
"type": "string",
- "description": "Identifier of the earning rule that triggered the fulfillment (format `lern_...`)."
+ "description": "Unique identifier of the earning rule that triggered the fulfillment (format `lern_...`)."
},
"type": {
"type": "string",
@@ -16962,30 +18594,30 @@
},
"card_id": {
"type": "string",
- "description": "Identifier of the related loyalty card (format `lcrd_...`)."
+ "description": "Unique identifier of the related loyalty card (format `lcrd_...`)."
},
"program_id": {
"type": "string",
- "description": "Identifier of the loyalty program (format `lprg_...`)."
+ "description": "Unique identifier of the loyalty program (format `lprg_...`)."
},
"member_id": {
"type": "string",
- "description": "Identifier of the program member (format `lmbr_...`)."
+ "description": "Unique identifier of the program member (format `lmbr_...`)."
},
"card_definition_id": {
"type": "string",
- "description": "Identifier of the card definition (format `lcdef_...`)."
+ "description": "Unique identifier of the card definition (format `lcdef_...`)."
},
"tier_structure_id": {
"type": "string",
- "description": "Identifier of the tier structure (format `lts_...`)."
+ "description": "Unique identifier of the tier structure (format `lts_...`)."
},
"tier_id": {
"type": [
"string",
"null"
],
- "description": "Identifier of the related tier (format `lt_...`), or `null`."
+ "description": "Unique identifier of the related tier (format `lt_...`), or `null`."
},
"type": {
"type": "string",
@@ -17046,14 +18678,14 @@
"string",
"null"
],
- "description": "Identifier of the tier the member moved from (format `lt_...`). `null` for `JOINED` and `PROLONGED` transactions."
+ "description": "Unique identifier of the tier the member moved from (format `lt_...`). `null` for `JOINED` and `PROLONGED` transactions."
},
"tier_to": {
"type": [
"string",
"null"
],
- "description": "Identifier of the tier the member moved to (format `lt_...`). `null` for `LEFT` transactions."
+ "description": "Unique identifier of the tier the member moved to (format `lt_...`). `null` for `LEFT` transactions."
},
"origin": {
"description": "What triggered the tier change.",
@@ -17114,7 +18746,7 @@
"items": {
"type": "string"
},
- "description": "Identifiers of the card transactions that triggered the tier change (format `lctx_...`)."
+ "description": "Unique identifiers of the card transactions that triggered the tier change (format `lctx_...`)."
}
}
},
@@ -17279,7 +18911,6 @@
},
"RewardPurchaseListResponse": {
"type": "object",
- "description": "Paginated list of reward purchase transactions.",
"properties": {
"data": {
"type": "array",
@@ -17319,7 +18950,6 @@
},
"OrderPaymentListResponse": {
"type": "object",
- "description": "Paginated list of order payment transactions.",
"properties": {
"data": {
"type": "array",
@@ -17336,12 +18966,12 @@
"properties": {
"next": {
"type": "string",
- "description": "Cursor to pass as the `cursor` query parameter to fetch the next page (format `lcrsotx_...`)."
+ "description": "Pass as the `cursor` query parameter to fetch the next page (format `lcrsotx_...`)."
},
"expires_at": {
"type": "string",
"format": "date-time",
- "description": "Timestamp when the cursor expires."
+ "description": "Timestamp when the cursor expires (ISO 8601)."
}
}
},
@@ -17542,7 +19172,7 @@
},
"card_definition_id": {
"type": "string",
- "description": "Identifier of the card definition (format `lcdef_...`)."
+ "description": "Unique identifier of the card definition (format `lcdef_...`)."
},
"success": {
"type": "number",
@@ -17585,11 +19215,11 @@
"properties": {
"id": {
"type": "string",
- "description": "Identifier of the summary row."
+ "description": "Unique identifier of the summary row."
},
"card_definition_id": {
"type": "string",
- "description": "Identifier of the card definition (format `lcdef_...`)."
+ "description": "Unique identifier of the card definition (format `lcdef_...`)."
},
"success": {
"type": "number",
@@ -18521,7 +20151,7 @@
},
"CardDefinitionEarningLimitsGlobalInput": {
"type": "object",
- "description": "Global (per card) earning limits. When `type` is `NO_LIMIT`, `limits` must be\nempty or null; when `type` is `LIMITED`, `limits` must contain exactly 1 limit.",
+ "description": "Global (per card) earning limits. When `type` is `NO_LIMIT`, `limits` must be\nempty or `null`; when `type` is `LIMITED`, `limits` must contain exactly 1 limit.",
"properties": {
"type": {
"type": "string",
@@ -18667,7 +20297,7 @@
},
"CardDefinitionEarningLimitsTransactionsInput": {
"type": "object",
- "description": "Per-transaction earning limits. When `type` is `NO_LIMIT`, `limits` must be\nempty or null; when `type` is `LIMITED`, `limits` must contain at least 1 limit.\nEach limit `type` may appear at most once in the array.",
+ "description": "Per-transaction earning limits. When `type` is `NO_LIMIT`, `limits` must be\nempty or `null`; when `type` is `LIMITED`, `limits` must contain at least 1 limit.\nEach limit `type` may appear at most once in the array.",
"properties": {
"type": {
"type": "string",
@@ -18762,7 +20392,7 @@
},
"CardDefinitionSpendingLimitsGlobalInput": {
"type": "object",
- "description": "Global (per card) spending limits. When `type` is `NO_LIMIT`, `limits` must be\nempty or null; when `type` is `LIMITED`, `limits` must contain exactly 1 limit.",
+ "description": "Global (per card) spending limits. When `type` is `NO_LIMIT`, `limits` must be\nempty or `null`; when `type` is `LIMITED`, `limits` must contain exactly 1 limit.",
"properties": {
"type": {
"type": "string",
@@ -18908,7 +20538,7 @@
},
"CardDefinitionSpendingLimitsTransactionsInput": {
"type": "object",
- "description": "Per-transaction spending limits. When `type` is `NO_LIMIT`, `limits` must be\nempty or null; when `type` is `LIMITED`, `limits` must contain exactly 1 limit.",
+ "description": "Per-transaction spending limits. When `type` is `NO_LIMIT`, `limits` must be\nempty or `null`; when `type` is `LIMITED`, `limits` must contain exactly 1 limit.",
"properties": {
"type": {
"type": "string",
@@ -18983,7 +20613,7 @@
},
"CardDefinitionRefundsSpentPointsInput": {
"type": "object",
- "description": "How points spent on a refunded order are handled. When `type` is `NONE`,\n`methods` must be empty or null; when `type` is `REFUNDABLE`, `methods`\nmust contain exactly 1 method.",
+ "description": "How points spent on a refunded order are handled. When `type` is `NONE`,\n`methods` must be empty or `null`; when `type` is `REFUNDABLE`, `methods`\nmust contain exactly 1 method.",
"properties": {
"type": {
"type": "string",
@@ -19045,7 +20675,7 @@
},
"CardDefinitionRefundsEarnedPointsInput": {
"type": "object",
- "description": "How points earned on a refunded order are handled. When `type` is `NONE`,\n`methods` must be empty or null; when `type` is `REFUNDABLE`, `methods`\nmust contain exactly 1 method.",
+ "description": "How points earned on a refunded order are handled. When `type` is `NONE`,\n`methods` must be empty or `null`; when `type` is `REFUNDABLE`, `methods`\nmust contain exactly 1 method.",
"properties": {
"type": {
"type": "string",
@@ -21293,7 +22923,7 @@
"next"
]
},
- "EarningRuleMetadata": {
+ "Metadata": {
"type": "object",
"description": "Arbitrary key-value metadata; any JSON object is accepted.",
"additionalProperties": true
@@ -21369,7 +22999,7 @@
"description": "Arbitrary key-value metadata. Nullable.",
"oneOf": [
{
- "$ref": "#/components/schemas/EarningRuleMetadata"
+ "$ref": "#/components/schemas/Metadata"
},
{
"type": "null"
@@ -21458,7 +23088,7 @@
"description": "Arbitrary key-value metadata. Nullable.",
"oneOf": [
{
- "$ref": "#/components/schemas/EarningRuleMetadata"
+ "$ref": "#/components/schemas/Metadata"
},
{
"type": "null"
@@ -24027,7 +25657,7 @@
]
},
"metadata": {
- "$ref": "#/components/schemas/EarningRuleMetadata",
+ "$ref": "#/components/schemas/Metadata",
"description": "Arbitrary key-value metadata. Always present (empty object when unset)."
},
"created_at": {
@@ -25036,7 +26666,7 @@
]
},
"expiration": {
- "description": "Tier membership expiration settings. If omitted, defaults to\n`{ \"type\": \"NO_EXPIRATION\" }`.",
+ "description": "Tier membership expiration settings. If omitted, defaults to\n`{ \"type\": \"NO_RETENTION\" }`.",
"oneOf": [
{
"$ref": "#/components/schemas/TierStructureExpirationUpsert"
@@ -25266,7 +26896,7 @@
"card_definition_id": {
"type": "string",
"pattern": "^lcdef_[a-f0-9]+$",
- "description": "Identifier of the card definition whose point balance is tracked."
+ "description": "Unique identifier of the card definition whose point balance is tracked."
}
},
"required": [
@@ -25281,7 +26911,7 @@
"card_definition_id": {
"type": "string",
"pattern": "^lcdef_[a-f0-9]+$",
- "description": "Identifier of the card definition whose earned points are tracked."
+ "description": "Unique identifier of the card definition whose earned points are tracked."
},
"period": {
"$ref": "#/components/schemas/TierStructurePointEarnedPeriodUpsert",
@@ -25412,7 +27042,7 @@
"type": {
"type": "string",
"enum": [
- "NO_EXPIRATION",
+ "NO_RETENTION",
"SLIDING_EXPIRATION",
"FIXED_DURATION",
"CALENDAR_EXPIRATION"
@@ -25464,7 +27094,7 @@
"if": {
"properties": {
"type": {
- "const": "NO_EXPIRATION"
+ "const": "NO_RETENTION"
}
}
},
@@ -26070,7 +27700,7 @@
"id": {
"type": "string",
"minLength": 1,
- "description": "Identifier of the customer segment."
+ "description": "Unique identifier of the customer segment."
}
},
"required": [
@@ -26158,7 +27788,7 @@
"null"
],
"format": "date-time",
- "description": "Last update timestamp (ISO 8601), or null if never updated."
+ "description": "Last update timestamp (ISO 8601), or `null` if never updated."
},
"object": {
"type": "string",
@@ -26186,7 +27816,7 @@
"card_definition_id": {
"type": "string",
"pattern": "^lcdef_[a-f0-9]+$",
- "description": "Identifier of the card definition whose point balance is tracked."
+ "description": "Unique identifier of the card definition whose point balance is tracked."
}
}
},
@@ -26197,7 +27827,7 @@
"card_definition_id": {
"type": "string",
"pattern": "^lcdef_[a-f0-9]+$",
- "description": "Identifier of the card definition whose earned points are tracked."
+ "description": "Unique identifier of the card definition whose earned points are tracked."
},
"period": {
"$ref": "#/components/schemas/TierStructurePointEarnedPeriod",
@@ -26240,7 +27870,7 @@
"type": {
"type": "string",
"enum": [
- "NO_EXPIRATION",
+ "NO_RETENTION",
"SLIDING_EXPIRATION",
"FIXED_DURATION",
"CALENDAR_EXPIRATION"
@@ -26405,7 +28035,7 @@
}
},
"cursor": {
- "description": "Pagination cursor for fetching the next page, or null when there are no more\nresults.",
+ "description": "Pagination cursor for fetching the next page, or `null` when there are no more\nresults.",
"oneOf": [
{
"type": "object",
@@ -26451,7 +28081,7 @@
"tier_structure_id": {
"type": "string",
"pattern": "^lts_[a-f0-9]+$",
- "description": "Identifier of the parent tier structure."
+ "description": "Unique identifier of the parent tier structure."
},
"name": {
"type": "string",
@@ -26480,7 +28110,7 @@
"null"
],
"format": "date-time",
- "description": "Last update timestamp (ISO 8601), or null if never updated."
+ "description": "Last update timestamp (ISO 8601), or `null` if never updated."
},
"object": {
"type": "string",
@@ -26541,7 +28171,7 @@
"properties": {
"id": {
"type": "string",
- "description": "Identifier of the customer segment."
+ "description": "Unique identifier of the customer segment."
}
}
},
@@ -26571,7 +28201,7 @@
}
},
"cursor": {
- "description": "Pagination cursor for fetching the next page, or null when there are no more\nresults.",
+ "description": "Pagination cursor for fetching the next page, or `null` when there are no more\nresults.",
"oneOf": [
{
"type": "object",
@@ -26642,7 +28272,7 @@
},
"group_id": {
"type": "string",
- "description": "Identifier grouping related activities that were produced by the same operation.\nOmitted when not set."
+ "description": "Unique identifier grouping related activities that were produced by the same operation.\nOmitted when not set."
},
"source": {
"$ref": "#/components/schemas/TierStructureActivitySource",
@@ -26651,7 +28281,7 @@
"tier_structure_id": {
"type": "string",
"pattern": "^lts_[a-f0-9]+$",
- "description": "Identifier of the tier structure the activity relates to."
+ "description": "Unique identifier of the tier structure the activity relates to."
}
},
"required": [
@@ -26707,7 +28337,7 @@
"properties": {
"id": {
"type": "string",
- "description": "Identifier of the user."
+ "description": "Unique identifier of the user."
}
}
},
@@ -26743,7 +28373,7 @@
}
},
"cursor": {
- "description": "Pagination cursor for fetching the next page, or null when there are no more\nresults.",
+ "description": "Pagination cursor for fetching the next page, or `null` when there are no more\nresults.",
"oneOf": [
{
"type": "object",
@@ -27924,7 +29554,7 @@
},
"BenefitCreateRequest": {
"type": "object",
- "description": "Request body for creating a benefit. Exactly one type-specific configuration object\nis required, matching the `type`; the remaining type-specific properties must be\nomitted or null.",
+ "description": "Request body for creating a benefit. Exactly one type-specific configuration object\nis required, matching the `type`; the remaining type-specific properties must be\nomitted or `null`.",
"properties": {
"name": {
"type": "string",
@@ -28230,7 +29860,7 @@
},
"BenefitPointsProportional": {
"type": "object",
- "description": "Proportional points effect - points are calculated from an order amount, order items,\nor a metadata property. Exactly one calculation source object (`order`, `customer`,\n`custom_event`, or `order_items`) is required, determined by `calculation_type`;\nthe remaining source properties must be omitted or null.",
+ "description": "Proportional points effect - points are calculated from an order amount, order items,\nor a metadata property. Exactly one calculation source object (`order`, `customer`,\n`custom_event`, or `order_items`) is required, determined by `calculation_type`;\nthe remaining source properties must be omitted or `null`.",
"properties": {
"calculation_type": {
"type": "string",
@@ -28730,7 +30360,7 @@
},
"BenefitPointsProportionalApplicableTo": {
"type": "object",
- "description": "A single applicability rule. Exactly one of `product`, `sku`, or `products_collection`\nis required, matching the `type`; the other two must be omitted or null.",
+ "description": "A single applicability rule. Exactly one of `product`, `sku`, or `products_collection`\nis required, matching the `type`; the other two must be omitted or `null`.",
"properties": {
"type": {
"type": "string",
@@ -28904,7 +30534,7 @@
},
"BenefitMaterial": {
"type": "object",
- "description": "Material benefit - a physical product or SKU. Exactly one of `product` or `sku` is\nrequired, matching the `type`; the other must be omitted or null.",
+ "description": "Material benefit - a physical product or SKU. Exactly one of `product` or `sku` is\nrequired, matching the `type`; the other must be omitted or `null`.",
"properties": {
"type": {
"type": "string",
@@ -29028,7 +30658,7 @@
},
"BenefitDigital": {
"type": "object",
- "description": "Digital benefit - a reward sourced from a Voucherify campaign. Exactly one of\n`gift_vouchers` or `discount_coupons` is required, matching the `type`; the other must\nbe omitted or null. The referenced campaign must exist and its campaign type must match\nthe benefit's digital type.",
+ "description": "Digital benefit - a reward sourced from a Voucherify campaign. Exactly one of\n`gift_vouchers` or `discount_coupons` is required, matching the `type`; the other must\nbe omitted or `null`. The referenced campaign must exist and its campaign type must match\nthe benefit's digital type.",
"properties": {
"type": {
"type": "string",
@@ -29153,7 +30783,7 @@
},
"BenefitStock": {
"type": "object",
- "description": "Stock configuration of the benefit. When `type` is `LIMITED` the `limited` object is\nrequired; when `type` is `UNLIMITED` the `limited` object must be omitted or null.",
+ "description": "Stock configuration of the benefit. When `type` is `LIMITED` the `limited` object is\nrequired; when `type` is `UNLIMITED` the `limited` object must be omitted or `null`.",
"properties": {
"type": {
"type": "string",
@@ -30666,7 +32296,7 @@
"description": "Initial status of the reward. Defaults to DRAFT behavior when omitted."
},
"validity_hours": {
- "description": "Hours during which the reward can be purchased. Defaults to `{ \"type\": \"ANY_TIME\" }` when omitted or null.",
+ "description": "Hours during which the reward can be purchased. Defaults to `{ \"type\": \"ANY_TIME\" }` when omitted or `null`.",
"oneOf": [
{
"$ref": "#/components/schemas/RewardValidityHoursRequest"
@@ -30908,7 +32538,7 @@
"product_id": {
"type": "string",
"pattern": "^prod_[a-f0-9]+",
- "description": "Identifier of the product the SKU belongs to, prefixed with `prod_`."
+ "description": "Unique identifier of the product the SKU belongs to, prefixed with `prod_`."
},
"id": {
"type": "string",
@@ -30981,7 +32611,7 @@
"campaign_id": {
"type": "string",
"pattern": "^camp_[a-zA-Z0-9]+",
- "description": "Identifier of the discount coupons campaign to publish a coupon from, prefixed with `camp_`."
+ "description": "Unique identifier of the discount coupons campaign to publish a coupon from, prefixed with `camp_`."
}
},
"required": [
@@ -30996,7 +32626,7 @@
"campaign_id": {
"type": "string",
"pattern": "^camp_[a-zA-Z0-9]+",
- "description": "Identifier of the gift vouchers campaign to publish a voucher from, prefixed with `camp_`."
+ "description": "Unique identifier of the gift vouchers campaign to publish a voucher from, prefixed with `camp_`."
},
"balance": {
"type": "number",
@@ -31023,7 +32653,7 @@
"card_definition_id": {
"type": "string",
"pattern": "^lcdef_[a-f0-9]+$",
- "description": "Identifier of the card definition to credit points to, prefixed with `lcdef_`."
+ "description": "Unique identifier of the card definition to credit points to, prefixed with `lcdef_`."
}
},
"required": [
@@ -31146,7 +32776,7 @@
"id": {
"type": "string",
"pattern": "^lrcst_[a-f0-9]+$",
- "description": "Identifier of an existing cost to update, prefixed with `lrcst_`. Omit to create a new cost."
+ "description": "Unique identifier of an existing cost to update, prefixed with `lrcst_`. Omit to create a new cost."
},
"rules": {
"$ref": "#/components/schemas/RewardCostRulesRequest",
@@ -31180,7 +32810,7 @@
"card_definition_id": {
"type": "string",
"pattern": "^lcdef_[a-f0-9]+$",
- "description": "Identifier of the card definition the points are spent from, prefixed with `lcdef_`."
+ "description": "Unique identifier of the card definition the points are spent from, prefixed with `lcdef_`."
}
},
"required": [
@@ -31294,7 +32924,7 @@
"properties": {
"id": {
"type": "string",
- "description": "Identifier of the referenced resource."
+ "description": "Unique identifier of the referenced resource."
},
"object": {
"type": "string",
@@ -32252,7 +33882,7 @@
"null"
],
"format": "date-time",
- "description": "Date from which the reward is available, or null when not set."
+ "description": "Date from which the reward is available, or `null` when not set."
},
"end_date": {
"type": [
@@ -32260,7 +33890,7 @@
"null"
],
"format": "date-time",
- "description": "Date until which the reward is available, or null when not set."
+ "description": "Date until which the reward is available, or `null` when not set."
},
"validity_hours": {
"$ref": "#/components/schemas/RewardValidityHoursResponse",
@@ -32300,7 +33930,7 @@
"null"
],
"format": "date-time",
- "description": "Timestamp when the reward was last updated (ISO-8601), or null when never updated."
+ "description": "Timestamp when the reward was last updated (ISO-8601), or `null` when never updated."
},
"object": {
"type": "string",
@@ -32367,7 +33997,7 @@
"product_id": {
"type": "string",
"pattern": "^prod_[a-f0-9]+",
- "description": "Identifier of the product the SKU belongs to, prefixed with `prod_`."
+ "description": "Unique identifier of the product the SKU belongs to, prefixed with `prod_`."
},
"id": {
"type": "string",
@@ -32417,7 +34047,7 @@
"campaign_id": {
"type": "string",
"pattern": "^camp_[a-zA-Z0-9]+",
- "description": "Identifier of the discount coupons campaign, prefixed with `camp_`."
+ "description": "Unique identifier of the discount coupons campaign, prefixed with `camp_`."
}
},
"required": [
@@ -32431,7 +34061,7 @@
"campaign_id": {
"type": "string",
"pattern": "^camp_[a-zA-Z0-9]+",
- "description": "Identifier of the gift vouchers campaign, prefixed with `camp_`."
+ "description": "Unique identifier of the gift vouchers campaign, prefixed with `camp_`."
},
"balance": {
"type": "number",
@@ -32454,7 +34084,7 @@
"card_definition_id": {
"type": "string",
"pattern": "^lcdef_[a-f0-9]+$",
- "description": "Identifier of the card definition points are credited to, prefixed with `lcdef_`."
+ "description": "Unique identifier of the card definition points are credited to, prefixed with `lcdef_`."
}
},
"required": [
@@ -32551,7 +34181,7 @@
"array",
"null"
],
- "description": "Points spending definitions, or null when none are defined.",
+ "description": "Points spending definitions, or `null` when none are defined.",
"items": {
"$ref": "#/components/schemas/RewardCostSpendingResponse"
}
@@ -32572,7 +34202,7 @@
"card_definition_id": {
"type": "string",
"pattern": "^lcdef_[a-f0-9]+$",
- "description": "Identifier of the card definition the points are spent from, prefixed with `lcdef_`."
+ "description": "Unique identifier of the card definition the points are spent from, prefixed with `lcdef_`."
}
},
"required": [
@@ -32647,7 +34277,7 @@
}
},
"cursor": {
- "description": "Pagination cursor, or null when there are no more results.",
+ "description": "Pagination cursor, or `null` when there are no more results.",
"oneOf": [
{
"$ref": "#/components/schemas/RewardListCursor"
@@ -32728,7 +34358,7 @@
"string",
"null"
],
- "description": "Identifier grouping related activities recorded together. Omitted or null when the activity is not part of a group."
+ "description": "Unique identifier grouping related activities recorded together. Omitted or `null` when the activity is not part of a group."
},
"source": {
"$ref": "#/components/schemas/RewardActivitySource",
@@ -32737,7 +34367,7 @@
"reward_id": {
"type": "string",
"pattern": "^lrew_[a-f0-9]+$",
- "description": "Identifier of the reward the activity belongs to, prefixed with `lrew_`."
+ "description": "Unique identifier of the reward the activity belongs to, prefixed with `lrew_`."
}
},
"required": [
@@ -32839,7 +34469,7 @@
}
},
"cursor": {
- "description": "Pagination cursor, or null when there are no more results.",
+ "description": "Pagination cursor, or `null` when there are no more results.",
"oneOf": [
{
"$ref": "#/components/schemas/RewardListCursor"
@@ -32863,7 +34493,7 @@
},
"ExamineCustomerIdentification": {
"type": "object",
- "description": "How the examined customer is identified. Depending on `type`, exactly one of `customer_id`, `customer_source_id` or `member_id` is required; the other two must not be present.",
+ "description": "Identifies the customer to examine. Depending on `type`, requires one of `customer_id`, `customer_source_id`, or `member_id`. Non-selected identifiers may be omitted or set to `null`.",
"properties": {
"type": {
"type": "string",
@@ -32880,7 +34510,7 @@
"null"
],
"pattern": "^cust_[a-zA-Z0-9]+",
- "description": "Customer ID (`cust_...`). Required when `type` is `customer_id`."
+ "description": "Unique customer ID (`cust_...`). Required when `type` is `customer_id`."
},
"customer_source_id": {
"type": [
@@ -32919,19 +34549,13 @@
"required": [
"customer_id"
],
- "not": {
- "anyOf": [
- {
- "required": [
- "customer_source_id"
- ]
- },
- {
- "required": [
- "member_id"
- ]
- }
- ]
+ "properties": {
+ "customer_source_id": {
+ "type": "null"
+ },
+ "member_id": {
+ "type": "null"
+ }
}
}
},
@@ -32950,19 +34574,13 @@
"required": [
"customer_source_id"
],
- "not": {
- "anyOf": [
- {
- "required": [
- "customer_id"
- ]
- },
- {
- "required": [
- "member_id"
- ]
- }
- ]
+ "properties": {
+ "customer_id": {
+ "type": "null"
+ },
+ "member_id": {
+ "type": "null"
+ }
}
}
},
@@ -32981,19 +34599,13 @@
"required": [
"member_id"
],
- "not": {
- "anyOf": [
- {
- "required": [
- "customer_id"
- ]
- },
- {
- "required": [
- "customer_source_id"
- ]
- }
- ]
+ "properties": {
+ "customer_id": {
+ "type": "null"
+ },
+ "customer_source_id": {
+ "type": "null"
+ }
}
}
}
@@ -33248,7 +34860,7 @@
"description": "Customer metadata overrides. Nullable.",
"oneOf": [
{
- "$ref": "#/components/schemas/EarningRuleMetadata"
+ "$ref": "#/components/schemas/Metadata"
},
{
"type": "null"
@@ -33266,7 +34878,7 @@
"description": "Member metadata overrides. Nullable.",
"oneOf": [
{
- "$ref": "#/components/schemas/EarningRuleMetadata"
+ "$ref": "#/components/schemas/Metadata"
},
{
"type": "null"
@@ -33446,7 +35058,7 @@
"description": "Order item metadata. Nullable.",
"oneOf": [
{
- "$ref": "#/components/schemas/EarningRuleMetadata"
+ "$ref": "#/components/schemas/Metadata"
},
{
"type": "null"
@@ -33499,7 +35111,7 @@
"description": "Order metadata. Nullable.",
"oneOf": [
{
- "$ref": "#/components/schemas/EarningRuleMetadata"
+ "$ref": "#/components/schemas/Metadata"
},
{
"type": "null"
@@ -33551,7 +35163,7 @@
"description": "Custom event metadata. Nullable.",
"oneOf": [
{
- "$ref": "#/components/schemas/EarningRuleMetadata"
+ "$ref": "#/components/schemas/Metadata"
},
{
"type": "null"
@@ -33572,7 +35184,7 @@
"description": "Custom event metadata. Nullable.",
"oneOf": [
{
- "$ref": "#/components/schemas/EarningRuleMetadata"
+ "$ref": "#/components/schemas/Metadata"
},
{
"type": "null"
@@ -33708,7 +35320,7 @@
"properties": {
"id": {
"type": "string",
- "description": "Customer ID (`cust_...`)."
+ "description": "Unique customer ID (`cust_...`)."
},
"source_id": {
"type": "string",
@@ -33724,7 +35336,13 @@
"const": "customer",
"description": "Object type marker. Always `customer`."
}
- }
+ },
+ "required": [
+ "id",
+ "source_id",
+ "metadata",
+ "object"
+ ]
},
"ExamineProgramReference": {
"type": "object",
@@ -33732,7 +35350,7 @@
"properties": {
"id": {
"type": "string",
- "description": "Program ID (`lprg_...`)."
+ "description": "Unique program ID (`lprg_...`)."
},
"name": {
"type": "string",
@@ -33748,7 +35366,13 @@
"const": "program",
"description": "Object type marker. Always `program`."
}
- }
+ },
+ "required": [
+ "id",
+ "name",
+ "metadata",
+ "object"
+ ]
},
"ExamineMemberReference": {
"type": "object",
@@ -33756,15 +35380,15 @@
"properties": {
"id": {
"type": "string",
- "description": "Member ID (`lmbr_...`)."
+ "description": "Unique member ID (`lmbr_...`)."
},
"customer_id": {
"type": "string",
- "description": "Customer ID the member belongs to."
+ "description": "Unique customer ID the member belongs to."
},
"program_id": {
"type": "string",
- "description": "Program ID the member belongs to."
+ "description": "Unique program ID the member belongs to."
},
"metadata": {
"type": "object",
@@ -33776,7 +35400,14 @@
"const": "member",
"description": "Object type marker. Always `member`."
}
- }
+ },
+ "required": [
+ "id",
+ "customer_id",
+ "program_id",
+ "metadata",
+ "object"
+ ]
},
"ExamineCardReference": {
"type": "object",
@@ -33784,11 +35415,11 @@
"properties": {
"id": {
"type": "string",
- "description": "Card ID (`lcrd_...`)."
+ "description": "Unique card ID (`lcrd_...`)."
},
"card_definition_id": {
"type": "string",
- "description": "Card definition ID (`lcdef_...`)."
+ "description": "Unique card definition ID (`lcdef_...`)."
},
"card_type": {
"type": "string",
@@ -33802,14 +35433,21 @@
"string",
"null"
],
- "description": "Card code. May be null right after member creation because card codes are generated asynchronously."
+ "description": "Card code. May be `null` right after member creation because card codes are generated asynchronously."
},
"object": {
"type": "string",
"const": "card",
"description": "Object type marker. Always `card`."
}
- }
+ },
+ "required": [
+ "id",
+ "card_definition_id",
+ "card_type",
+ "code",
+ "object"
+ ]
},
"ExamineEarningRuleReference": {
"type": "object",
@@ -33881,7 +35519,7 @@
},
"ExamineEarningRulesCardEarningRuleEstimation": {
"type": "object",
- "description": "Points estimation from a single earning rule for a card.",
+ "description": "Point estimation from a single earning rule for a card.",
"properties": {
"earning_rule": {
"$ref": "#/components/schemas/ExamineEarningRuleReference"
@@ -33899,7 +35537,7 @@
},
"ExamineEarningRulesCardEstimation": {
"type": "object",
- "description": "Points estimation for a single card.",
+ "description": "Point estimation for a single card.",
"properties": {
"card": {
"$ref": "#/components/schemas/ExamineCardReference"
@@ -33969,7 +35607,7 @@
},
"cards": {
"type": "array",
- "description": "Points estimations per card.",
+ "description": "Point estimations per card.",
"items": {
"$ref": "#/components/schemas/ExamineEarningRulesCardEstimation"
}
@@ -34025,18 +35663,19 @@
"description": "Request body for examining rewards.",
"properties": {
"customer_identification": {
- "$ref": "#/components/schemas/ExamineCustomerIdentification"
+ "$ref": "#/components/schemas/ExamineCustomerIdentification",
+ "description": "Identifies the customer or loyalty member to examine."
},
"customer": {
"type": "object",
- "description": "Customer metadata overrides used during examination.",
+ "description": "Provides temporary customer metadata overrides for the examination. Merges them with stored metadata without updating the customer.",
"additionalProperties": false,
"properties": {
"metadata": {
- "description": "Customer metadata overrides. Nullable.",
+ "description": "Overrides customer metadata for this examination. Set to `null` to apply no override.",
"oneOf": [
{
- "$ref": "#/components/schemas/EarningRuleMetadata"
+ "$ref": "#/components/schemas/Metadata"
},
{
"type": "null"
@@ -34047,14 +35686,14 @@
},
"member": {
"type": "object",
- "description": "Member metadata overrides used during examination.",
+ "description": "Provides temporary member metadata overrides for the examination. Requires `customer_identification.type` to be `member_id`. Merges them with stored metadata without updating the member.",
"additionalProperties": false,
"properties": {
"metadata": {
- "description": "Member metadata overrides. Nullable.",
+ "description": "Overrides member metadata for this examination. Set to `null` to apply no override.",
"oneOf": [
{
- "$ref": "#/components/schemas/EarningRuleMetadata"
+ "$ref": "#/components/schemas/Metadata"
},
{
"type": "null"
@@ -34075,14 +35714,18 @@
"properties": {
"id": {
"type": "string",
- "description": "Reward ID (`lrew_...`)."
+ "description": "Unique reward ID (`lrew_...`)."
},
"object": {
"type": "string",
"const": "reward",
"description": "Object type marker. Always `reward`."
}
- }
+ },
+ "required": [
+ "id",
+ "object"
+ ]
},
"ExamineRewardsRewardDetail": {
"type": "object",
@@ -34090,7 +35733,7 @@
"properties": {
"id": {
"type": "string",
- "description": "Reward ID (`lrew_...`)."
+ "description": "Unique reward ID (`lrew_...`)."
},
"name": {
"type": "string",
@@ -34114,7 +35757,14 @@
"const": "reward",
"description": "Object type marker. Always `reward`."
}
- }
+ },
+ "required": [
+ "id",
+ "name",
+ "type",
+ "metadata",
+ "object"
+ ]
},
"ExamineRewardsRewardCost": {
"type": "object",
@@ -34129,7 +35779,11 @@
"const": "reward_cost",
"description": "Object type marker. Always `reward_cost`."
}
- }
+ },
+ "required": [
+ "points",
+ "object"
+ ]
},
"ExamineRewardsRewardUnavailabilityReason": {
"type": "object",
@@ -34139,31 +35793,74 @@
"type": "string",
"enum": [
"insufficient_balance",
- "out_of_stock",
- "no_matching_cost",
- "no_card_for_cost",
- "no_target_card",
- "reward_inactive"
+ "no_target_card"
],
- "description": "Unavailability reason code."
+ "description": "Identifies why the reward is unavailable.\n\n- `insufficient_balance`: The source card balance is lower than the required points cost.\n\n- `no_target_card`: The member does not have the loyalty card that would receive the points from a \"points on a loyalty card\" reward."
},
"details": {
- "type": "string",
- "description": "Additional details. Absent when not provided."
+ "description": "Provides values related to the unavailability reason.",
+ "oneOf": [
+ {
+ "type": "object",
+ "title": "Insufficient balance",
+ "description": "Provides balance details for `insufficient_balance`.",
+ "additionalProperties": false,
+ "properties": {
+ "required": {
+ "type": "number",
+ "description": "Points required to obtain the reward (reward price in points)."
+ },
+ "available": {
+ "type": "number",
+ "description": "Points available on the source card."
+ },
+ "missing": {
+ "type": "number",
+ "description": "Additional points required to obtain the reward."
+ }
+ },
+ "required": [
+ "required",
+ "available",
+ "missing"
+ ]
+ },
+ {
+ "type": "object",
+ "description": "Identifies the missing target card for `no_target_card`.",
+ "title": "No target card",
+ "additionalProperties": false,
+ "properties": {
+ "card_definition_id": {
+ "type": "string",
+ "description": "Unique card definition ID (`lcdef_...`) of the missing target card."
+ }
+ },
+ "required": [
+ "card_definition_id"
+ ]
+ }
+ ]
},
"object": {
"type": "string",
"const": "reward_unavailability_reason",
"description": "Object type marker. Always `reward_unavailability_reason`."
}
- }
+ },
+ "required": [
+ "reason",
+ "details",
+ "object"
+ ]
},
"ExamineRewardsCardRewardEstimation": {
"type": "object",
"description": "Reward availability estimation for a card.",
"properties": {
"reward": {
- "$ref": "#/components/schemas/ExamineRewardsRewardReference"
+ "$ref": "#/components/schemas/ExamineRewardsRewardReference",
+ "description": "Identifies the examined reward."
},
"status": {
"type": "string",
@@ -34175,7 +35872,7 @@
},
"cost": {
"$ref": "#/components/schemas/ExamineRewardsRewardCost",
- "description": "Points cost. Absent when no cost applies."
+ "description": "Provides the matched points cost for this card."
},
"unavailability_reasons": {
"type": "array",
@@ -34189,14 +35886,21 @@
"const": "reward_estimation",
"description": "Object type marker. Always `reward_estimation`."
}
- }
+ },
+ "required": [
+ "reward",
+ "status",
+ "cost",
+ "object"
+ ]
},
"ExamineRewardsCardEstimation": {
"type": "object",
"description": "Reward estimations for a single card.",
"properties": {
"card": {
- "$ref": "#/components/schemas/ExamineCardReference"
+ "$ref": "#/components/schemas/ExamineCardReference",
+ "description": "Identifies the card used for the reward estimations."
},
"rewards": {
"type": "array",
@@ -34210,17 +35914,24 @@
"const": "card_estimation",
"description": "Object type marker. Always `card_estimation`."
}
- }
+ },
+ "required": [
+ "card",
+ "rewards",
+ "object"
+ ]
},
"ExamineRewardsMembership": {
"type": "object",
"description": "Reward opportunities for one program membership.",
"properties": {
"member": {
- "$ref": "#/components/schemas/ExamineMemberReference"
+ "$ref": "#/components/schemas/ExamineMemberReference",
+ "description": "Identifies the examined loyalty program member."
},
"program": {
- "$ref": "#/components/schemas/ExamineProgramReference"
+ "$ref": "#/components/schemas/ExamineProgramReference",
+ "description": "Identifies the loyalty program for this membership."
},
"cards": {
"type": "array",
@@ -34234,18 +35945,24 @@
"const": "member_rewards_opportunity",
"description": "Object type marker. Always `member_rewards_opportunity`."
}
- }
+ },
+ "required": [
+ "member",
+ "program",
+ "cards",
+ "object"
+ ]
},
"ExamineRewardsResponse": {
"type": "object",
- "description": "Rewards examination result.",
"properties": {
"customer": {
- "$ref": "#/components/schemas/ExamineCustomerReference"
+ "$ref": "#/components/schemas/ExamineCustomerReference",
+ "description": "Identifies the customer used for the examination."
},
"rewards": {
"type": "array",
- "description": "All rewards considered during examination (deduplicated).",
+ "description": "Lists rewards included in the returned card estimations.",
"items": {
"$ref": "#/components/schemas/ExamineRewardsRewardDetail"
}
@@ -34262,7 +35979,13 @@
"const": "rewards_examine_result",
"description": "Object type marker. Always `rewards_examine_result`."
}
- }
+ },
+ "required": [
+ "customer",
+ "rewards",
+ "memberships",
+ "object"
+ ]
}
},
"securitySchemes": {
@@ -34285,9 +36008,11 @@
},
"security": [
{
- "bearerAuth": [],
"X-App-Id": [],
"X-App-Token": []
+ },
+ {
+ "bearerAuth": []
}
]
}
\ No newline at end of file
diff --git a/documentation/openapi/loyalties.json b/documentation/openapi/loyalties.json
index deea514de..976ed5dc2 100644
--- a/documentation/openapi/loyalties.json
+++ b/documentation/openapi/loyalties.json
@@ -38,11 +38,12 @@
"/v1/loyalties": {
"get": {
"operationId": "list-loyalty-programs",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Campaigns",
- "description": "Returns a list of your loyalty campaigns.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nReturns a list of your loyalty campaigns.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -259,11 +260,12 @@
},
"post": {
"operationId": "create-loyalty-program",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Create Loyalty Campaign",
- "description": "Creates a batch of [loyalty cards](/api-reference/loyalties/get-member) aggregated in a single loyalty campaign. It also allows you to define a custom codes pattern. \n\n\n> 📘 Global uniqueness\n> All codes are unique across the whole project. Voucherify won't allow to generate the same codes in any of your campaigns.\n\n\n> 🚧 Asynchronous action!\n>\n> This is an asynchronous action, you can't read or modify a newly created campaign until the code generation is completed. See `creation_status` field in the [loyalty campaign object](/api-reference/loyalties/loyalty-campaign-object) description.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nCreates a batch of [loyalty cards](/api-reference/loyalties/get-member) aggregated in a single loyalty campaign. It also allows you to define a custom codes pattern. \n\n\n\n\nGlobal uniqueness\n\nAll codes are unique across the whole project. Voucherify won't allow to generate the same codes in any of your campaigns.\n\n\n\n\n\n\nAsynchronous action!\n\nThis is an asynchronous action, you can't read or modify a newly created campaign until the code generation is completed. See `creation_status` field in the [loyalty campaign object](/api-reference/loyalties/loyalty-campaign-object) description.\n\n",
"parameters": [],
"security": [
{
@@ -499,11 +501,12 @@
],
"get": {
"operationId": "get-loyalty-program",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Loyalty Campaign",
- "description": "Retrieve a specific loyalty campaign.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieve a specific loyalty campaign.",
"parameters": [],
"security": [
{
@@ -645,11 +648,12 @@
},
"put": {
"operationId": "update-loyalty-program",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Update Loyalty Campaign",
- "description": "Updates a loyalty program. \n\nFields other than those specified in the allowed request body payload won't be modified (even if provided they are silently skipped). Any parameters not provided will be left unchanged. \n\nThis method will update the [loyalty cards](/api-reference/loyalties/get-member) which have not been published or redeemed yet.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nUpdates a loyalty program. \n\nFields other than those specified in the allowed request body payload won't be modified (even if provided they are silently skipped). Any parameters not provided will be left unchanged. \n\nThis method will update the [loyalty cards](/api-reference/loyalties/get-member) which have not been published or redeemed yet.",
"parameters": [],
"security": [
{
@@ -888,11 +892,12 @@
},
"delete": {
"operationId": "delete-loyalty-program",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Delete Loyalty Campaign",
- "description": "Deletes a loyalty campaign and all related loyalty cards. This action cannot be undone. Also, it immediately removes any redemptions on loyalty cards.\n\nIf the `force` parameter is set to `false` or not set at all, the loyalty campaign and all related loyalty cards will be moved to [the bin](/api-reference/bin/list-bin-entries).",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nDeletes a loyalty campaign and all related loyalty cards. This action cannot be undone. Also, it immediately removes any redemptions on loyalty cards.\n\nIf the `force` parameter is set to `false` or not set at all, the loyalty campaign and all related loyalty cards will be moved to [the bin](/api-reference/bin/list-bin-entries).",
"parameters": [
{
"schema": {
@@ -973,11 +978,12 @@
],
"get": {
"operationId": "list-members",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Members",
- "description": "Returns a list of your loyalty cards. The loyalty cards are sorted by creation date, with the most recent loyalty cards appearing first.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nReturns a list of your loyalty cards. The loyalty cards are sorted by creation date, with the most recent loyalty cards appearing first.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -1154,11 +1160,12 @@
},
"post": {
"operationId": "add-member",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Add Member",
- "description": "This method assigns a loyalty card to a customer. It selects a [loyalty card](/api-reference/vouchers/get-voucher) suitable for publication, adds a publish entry, and returns the published voucher. \n\nA voucher is suitable for publication when it's active and hasn't been published yet. \n\n\n> 📘 Auto-update campaign\n>\n> In case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use **auto-update** campaign.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nThis method assigns a loyalty card to a customer. It selects a [loyalty card](/api-reference/vouchers/get-voucher) suitable for publication, adds a publish entry, and returns the published voucher. \n\nA voucher is suitable for publication when it's active and hasn't been published yet. \n\n\n\n\nAuto-update campaign\n\nIn case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use **auto-update** campaign.\n\n",
"parameters": [],
"security": [
{
@@ -1383,11 +1390,12 @@
],
"get": {
"operationId": "get-member-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Member with campaign ID",
- "description": "Retrieves the loyalty card with the given member ID (i.e. voucher code).",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieves the loyalty card with the given member ID (i.e. voucher code).",
"parameters": [],
"security": [
{
@@ -1485,11 +1493,12 @@
],
"get": {
"operationId": "get-member",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Member",
- "description": "Retrieve loyalty card with the given member ID (i.e. voucher code). \n\n\n> 📘 Alternative endpoint\n> This endpoint is an alternative to this [endpoint](/api-reference/loyalties/get-member-with-campaign-id). The URL was re-designed to allow you to retrieve loyalty card details without having to provide the `campaignId` as a path parameter.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieve loyalty card with the given member ID (i.e. voucher code). \n\n\n\n\nAlternative endpoint\n\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/get-member-with-campaign-id). The URL was re-designed to allow you to retrieve loyalty card details without having to provide the `campaignId` as a path parameter.\n\n",
"parameters": [],
"security": [
{
@@ -1587,11 +1596,12 @@
],
"get": {
"operationId": "list-campaign-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Campaign Pending Points",
- "description": "Lists all pending points that are currently assigned to all loyalty cards in a campaign. Once the points are added to the card, the entry is no longer returned.\n\n>👍 Configuring pending points\n>\n>Pending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nLists all pending points that are currently assigned to all loyalty cards in a campaign. Once the points are added to the card, the entry is no longer returned.\n\n\n\nConfiguring pending points\n\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n\n",
"parameters": [
{
"schema": {
@@ -1824,11 +1834,12 @@
],
"get": {
"operationId": "list-member-pending-points-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Pending Points with campaign ID",
- "description": "Lists all pending points that are currently assigned to the loyalty card. Once the points are added to the card, the entry is no longer returned.\n\n>👍 Configuring pending points\n>\n>Pending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nLists all pending points that are currently assigned to the loyalty card. Once the points are added to the card, the entry is no longer returned.\n\n\n\nConfiguring pending points\n\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n\n",
"parameters": [
{
"schema": {
@@ -2063,11 +2074,12 @@
],
"get": {
"operationId": "list-member-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Pending Points",
- "description": "\n> 📘 Alternative endpoint\n> This endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-member-pending-points-with-campaign-id). The URL was re-designed to list member pending points without having to provide the `campaignId` as a path parameter.\n\nLists all pending points that are currently assigned to the loyalty card. Once the points are added to the card, the entry is no longer returned.\n\n>👍 Configuring pending points\n>\n>Pending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\n\n\n\nAlternative endpoint\n\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-member-pending-points-with-campaign-id). The URL was re-designed to list member pending points without having to provide the `campaignId` as a path parameter.\n\n\n\nLists all pending points that are currently assigned to the loyalty card. Once the points are added to the card, the entry is no longer returned.\n\n\n\nConfiguring pending points\n\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n\n",
"parameters": [
{
"schema": {
@@ -2300,11 +2312,12 @@
],
"post": {
"operationId": "activate-member-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Activate Member Pending Points",
- "description": "Activate manually the pending points and add them to the loyalty card. The pending points are determined by the pending point ID.\n\nOnce activated, the pending point entry with that ID is not listed by the endpoints: List member ([with campaign ID](/api-reference/loyalties/list-member-pending-points-with-campaign-id), [without campaign ID](/api-reference/loyalties/list-member-pending-points)), [List campaign pending points](/api-reference/loyalties/list-campaign-pending-points).\n\nThis **POST** method does not require a request body.\n\n>👍 Configuring pending points\n>\n>Pending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nActivate manually the pending points and add them to the loyalty card. The pending points are determined by the pending point ID.\n\nOnce activated, the pending point entry with that ID is not listed by the endpoints: List member ([with campaign ID](/api-reference/loyalties/list-member-pending-points-with-campaign-id), [without campaign ID](/api-reference/loyalties/list-member-pending-points)), [List campaign pending points](/api-reference/loyalties/list-campaign-pending-points).\n\nThis **POST** method does not require a request body.\n\n\n\nConfiguring pending points\n\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n\n",
"parameters": [],
"security": [
{
@@ -2435,11 +2448,12 @@
],
"post": {
"operationId": "adjust-member-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Adjust Member Pending Points",
- "description": "Adjusts the pending points with a given ID. You can add or subtract the number of points.\n\n>👍 Configuring pending points\n>\n>Pending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nAdjusts the pending points with a given ID. You can add or subtract the number of points.\n\n\n\nConfiguring pending points\n\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n\n",
"parameters": [],
"security": [
{
@@ -2591,11 +2605,12 @@
],
"post": {
"operationId": "cancel-member-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Cancel Member Pending Points",
- "description": "Cancel manually the pending points for the loyalty card. The pending points are determined by the pending point ID.\n\nOnce canceled, the pending point entry with that ID is not listed by the endpoints: List member ([with campaign ID](/api-reference/loyalties/list-member-pending-points-with-campaign-id), [without campaign ID](/api-reference/loyalties/list-member-pending-points)), [List campaign pending points](/api-reference/loyalties/list-campaign-pending-points).\n\nThis **POST** method does not require a request body and it returns an empty, 204, response.\n\n>👍 Configuring pending points\n>\n>Pending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nCancel manually the pending points for the loyalty card. The pending points are determined by the pending point ID.\n\nOnce canceled, the pending point entry with that ID is not listed by the endpoints: List member ([with campaign ID](/api-reference/loyalties/list-member-pending-points-with-campaign-id), [without campaign ID](/api-reference/loyalties/list-member-pending-points)), [List campaign pending points](/api-reference/loyalties/list-campaign-pending-points).\n\nThis **POST** method does not require a request body and it returns an empty, 204, response.\n\n\n\nConfiguring pending points\n\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n\n",
"parameters": [],
"security": [
{
@@ -2703,11 +2718,12 @@
],
"get": {
"operationId": "list-member-activity-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Activity with campaign ID",
- "description": "Retrieves the list of activities for the given member ID related to a voucher and customer who is the holder of the voucher.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieves the list of activities for the given member ID related to a voucher and customer who is the holder of the voucher.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -2803,11 +2819,12 @@
],
"get": {
"operationId": "list-member-activity",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Activity",
- "description": "\n> 📘 Alternative endpoint\n> This endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-member-activity-with-campaign-id). The URL was re-designed to allow you to get member activities without having to provide the `campaignId` as a path parameter.\n\nRetrieves the list of activities for the given member ID related to a voucher and customer who is the holder of the voucher.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\n\n\n\nAlternative endpoint\n\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-member-activity-with-campaign-id). The URL was re-designed to allow you to get member activities without having to provide the `campaignId` as a path parameter.\n\n\n\nRetrieves the list of activities for the given member ID related to a voucher and customer who is the holder of the voucher.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -2901,11 +2918,12 @@
],
"post": {
"operationId": "update-loyalty-card-balance-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Adjust Loyalty Card Balance with campaign ID",
- "description": "This method adds or removes balance to an existing loyalty card that is assigned to a holder. The removal of points will consume the points that expire the soonest. \n\n >🚧 Async Action\n> \n> This is an async action. If you want to perform several add or remove loyalty card balance actions in a short time and their order matters, set up sufficient time-out between the calls.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nThis method adds or removes balance to an existing loyalty card that is assigned to a holder. The removal of points will consume the points that expire the soonest. \n\n \n\nAsync Action\n\nThis is an async action. If you want to perform several add or remove loyalty card balance actions in a short time and their order matters, set up sufficient time-out between the calls.\n\n",
"parameters": [],
"security": [
{
@@ -3021,11 +3039,12 @@
],
"post": {
"operationId": "update-loyalty-card-balance",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Adjust Loyalty Card Balance",
- "description": "This method gives adds or removes balance to an existing loyalty card that is assigned to a holder. The removal of points will consume the points that expire the soonest. \n\n\n\n >🚧 Async Action\n> \n> This is an async action. If you want to perform several add or remove loyalty card balance actions in a short time and their order matters, set up sufficient time-out between the calls.\n\n\n> 📘 Alternative endpoint\n> This endpoint is an alternative to this [endpoint](/api-reference/loyalties/adjust-loyalty-card-balance-with-campaign-id). The URL was re-designed to allow you to add or remove loyalty card balance without having to provide the `campaignId` as a path parameter.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nThis method gives adds or removes balance to an existing loyalty card that is assigned to a holder. The removal of points will consume the points that expire the soonest. \n\n\n\n \n\nAsync Action\n\nThis is an async action. If you want to perform several add or remove loyalty card balance actions in a short time and their order matters, set up sufficient time-out between the calls.\n\n\n\n\n\n\nAlternative endpoint\n\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/adjust-loyalty-card-balance-with-campaign-id). The URL was re-designed to allow you to add or remove loyalty card balance without having to provide the `campaignId` as a path parameter.\n\n",
"parameters": [],
"security": [
{
@@ -3137,11 +3156,12 @@
],
"post": {
"operationId": "transfer-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Transfer Loyalty Points",
- "description": "Transfer points between different loyalty cards which have holders.\n\nProvide the campaign ID and the loyalty card ID you want the points to be transferred to as path parameters. In the request body, provide the loyalty cards you want the points to be transferred from and the number of points to transfer from each card.\n\nTransfer works only for loyalty cards that have holders, meaning the cards were published to customers.\n\nThe transferred points expire according to the target program expiration rules.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nTransfer points between different loyalty cards which have holders.\n\nProvide the campaign ID and the loyalty card ID you want the points to be transferred to as path parameters. In the request body, provide the loyalty cards you want the points to be transferred from and the number of points to transfer from each card.\n\nTransfer works only for loyalty cards that have holders, meaning the cards were published to customers.\n\nThe transferred points expire according to the target program expiration rules.",
"parameters": [],
"security": [
{
@@ -3264,11 +3284,12 @@
],
"get": {
"operationId": "list-loyalty-campaign-transactions",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Campaign Transactions",
- "description": "Retrieves all transactions for the campaign with the given campaign ID or campaign name.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieves all transactions for the campaign with the given campaign ID or campaign name.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -3417,6 +3438,7 @@
],
"post": {
"operationId": "export-loyalty-campaign-transactions",
+ "deprecated": true,
"tags": [
"Loyalties"
],
@@ -3434,7 +3456,7 @@
}
],
"summary": "Export Loyalty Campaign Transactions",
- "description": "Export transactions is an asynchronous process that generates a CSV file with the data about or point movements on all loyalty cards in a given campaign.\n\nTo export transactions:\n1. In the export request, use parameters to select which fields will be exported, in what order, and which data will be filtered.\n2. Use the returned `id` to track the export status with the [GET Export](/api-reference/exports/get-export) method.\n3. In the GET Export method, when the returned `status` field has the `DONE` value, the export file has been generated.\n4. Use the URL in the `result` property to download the file. You must be logged to your Voucherify account on a given cluster in the browser to be able to download the file.\n\nAn export request will almost always result in a single file being generated by the system. However, when the data volume is large, the system may split the results into multiple files.\n\nAn example export file can look as follows:\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| `id` | Unique transaction ID. | `vtx_0cb7811f1c07765800` |\n| `type` | Transaction type. | - `POINTS_ACCRUAL`
- `POINTS_REDEMPTION`
- `POINTS_REFUND`
- `POINTS_ADDITION`
- `POINTS_REMOVAL`
- `POINTS_EXPIRATION`
- `POINTS_TRANSFER_IN`
- `POINTS_TRANSFER_OUT` |\n| `source_id` | Unique transaction source ID. Optional and only in manual operations: `POINTS_ADDITION`, `POINTS_REMOVAL`, `POINTS_TRANSFER_OUT`. | 8638 |\n| `reason` | Contains the reason for the transaction if one was included originally. Optional and only in the following manual operations: `POINTS_ADDITION`, `POINTS_REMOVAL`, `POINTS_TRANSFER_OUT`, `POINTS_TRANSFER_IN`. | `Apology for sending a broken item` |\n| `balance` | The gift card or loyalty card balance after the transaction. | |\n| `amount` | The amount of gift card or loyalty card credits being allocated during the transaction. This value can either be negative or positive depending on the nature of the transaction. | |\n| `created_at` | Timestamp in ISO 8601 format representing the date and time when the transaction was created. | `2024-10-09T09:16:32.521Z` |\n| `voucher_id` | Unique voucher ID. | `v_dky7ksKfPX50Wb2Bxvcoeb1xT20b6tcp` |\n| `source`| Channel through which the transaction was initiated. | `API` |\n| `details` | More detailed information stored in the form of JSON. | Provides more details related to the transaction in the form of an object. |\n| `related_transaction_id` | Unique transaction ID related to a receiver/donor card in the case of a points transfer from/to another card. | `vtx_0c9afe802593b34b80` |\n\n> 👍 Export Campaign Transactions\n>\n> This method works in the same way the [POST Export Campaign Transactions](/api-reference/campaigns/export-campaign-transactions) does, but it is limited to loyalty campaigns only. The POST Export Campaign Transactions method can also export gift card campaign transactions.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nExport transactions is an asynchronous process that generates a CSV file with the data about or point movements on all loyalty cards in a given campaign.\n\nTo export transactions:\n1. In the export request, use parameters to select which fields will be exported, in what order, and which data will be filtered.\n2. Use the returned `id` to track the export status with the [GET Export](/api-reference/exports/get-export) method.\n3. In the GET Export method, when the returned `status` field has the `DONE` value, the export file has been generated.\n4. Use the URL in the `result` property to download the file. You must be logged to your Voucherify account on a given cluster in the browser to be able to download the file.\n\nAn export request will almost always result in a single file being generated by the system. However, when the data volume is large, the system may split the results into multiple files.\n\nAn example export file can look as follows:\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| `id` | Unique transaction ID. | `vtx_0cb7811f1c07765800` |\n| `type` | Transaction type. | - `POINTS_ACCRUAL`
- `POINTS_REDEMPTION`
- `POINTS_REFUND`
- `POINTS_ADDITION`
- `POINTS_REMOVAL`
- `POINTS_EXPIRATION`
- `POINTS_TRANSFER_IN`
- `POINTS_TRANSFER_OUT` |\n| `source_id` | Unique transaction source ID. Optional and only in manual operations: `POINTS_ADDITION`, `POINTS_REMOVAL`, `POINTS_TRANSFER_OUT`. | 8638 |\n| `reason` | Contains the reason for the transaction if one was included originally. Optional and only in the following manual operations: `POINTS_ADDITION`, `POINTS_REMOVAL`, `POINTS_TRANSFER_OUT`, `POINTS_TRANSFER_IN`. | `Apology for sending a broken item` |\n| `balance` | The gift card or loyalty card balance after the transaction. | |\n| `amount` | The amount of gift card or loyalty card credits being allocated during the transaction. This value can either be negative or positive depending on the nature of the transaction. | |\n| `created_at` | Timestamp in ISO 8601 format representing the date and time when the transaction was created. | `2024-10-09T09:16:32.521Z` |\n| `voucher_id` | Unique voucher ID. | `v_dky7ksKfPX50Wb2Bxvcoeb1xT20b6tcp` |\n| `source`| Channel through which the transaction was initiated. | `API` |\n| `details` | More detailed information stored in the form of JSON. | Provides more details related to the transaction in the form of an object. |\n| `related_transaction_id` | Unique transaction ID related to a receiver/donor card in the case of a points transfer from/to another card. | `vtx_0c9afe802593b34b80` |\n\n\n\nExport Campaign Transactions\n\nThis method works in the same way the [POST Export Campaign Transactions](/api-reference/campaigns/export-campaign-transactions) does, but it is limited to loyalty campaigns only. The POST Export Campaign Transactions method can also export gift card campaign transactions.\n\n",
"requestBody": {
"description": "Specify the parameters for the transaction export.",
"content": {
@@ -3613,11 +3635,12 @@
],
"get": {
"operationId": "list-loyalty-card-transactions-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Card Transactions with campaign ID",
- "description": "Retrieve transaction data related to point movements for a specific loyalty card.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieve transaction data related to point movements for a specific loyalty card.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -3984,11 +4007,12 @@
],
"get": {
"operationId": "list-loyalty-card-transactions",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Card Transactions",
- "description": "Retrieve transaction data related to point movements for a specific loyalty card.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieve transaction data related to point movements for a specific loyalty card.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -4355,11 +4379,12 @@
],
"post": {
"operationId": "export-loyalty-card-transactions",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Export Loyalty Card Transactions",
- "description": "Export transactions that are associated with point movements on a loyalty card.\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique transaction ID assigned by Voucherify. | vtx_0cb7811f1c07765800 |\n| type | Transaction type. | - `POINTS_EXPIRATION`
- `POINTS_ADDITION`
- `POINTS_REMOVAL`
- `POINTS_TRANSFER_OUT`
- `POINTS_ACCRUAL`
- `POINTS_REFUND`
- `POINTS_REDEMPTION` |\n| source_id | Custom source ID of the transaction if one was included originally. | source_id_custom |\n| reason | Contains the reason for the transaction if one was included originally. | |\n| balance | The loyalty card balance after the transaction. | |\n| amount | The amount of loyalty points being allocated during the transaction. This value can either be negative or positive depending on the nature of the transaction. | |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the transaction was created. | 2022-03-09T09:16:32.521Z |\n| voucher_id | Unique Voucher ID. | v_dky7ksKfPX50Wb2Bxvcoeb1xT20b6tcp |\n| campaign_id | Parent campaign ID. | camp_FNYR4jhqZBM9xTptxDGgeNBV |\n| source| Channel through which the transaction was initiated. | - `API`
- `voucherify-web-ui`
- `Automation` |\n| details | More detailed information stored in the form of a JSON. | Provides more details related to the transaction in the form of an object. |\n| related_transaction_id | Unique transaction ID related to a receiver/donor card in the case of a points transfer from/to another card. | vtx_0c9afe802593b34b80 |",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nExport transactions that are associated with point movements on a loyalty card.\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique transaction ID assigned by Voucherify. | vtx_0cb7811f1c07765800 |\n| type | Transaction type. | - `POINTS_EXPIRATION`
- `POINTS_ADDITION`
- `POINTS_REMOVAL`
- `POINTS_TRANSFER_OUT`
- `POINTS_ACCRUAL`
- `POINTS_REFUND`
- `POINTS_REDEMPTION` |\n| source_id | Custom source ID of the transaction if one was included originally. | source_id_custom |\n| reason | Contains the reason for the transaction if one was included originally. | |\n| balance | The loyalty card balance after the transaction. | |\n| amount | The amount of loyalty points being allocated during the transaction. This value can either be negative or positive depending on the nature of the transaction. | |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the transaction was created. | 2022-03-09T09:16:32.521Z |\n| voucher_id | Unique Voucher ID. | v_dky7ksKfPX50Wb2Bxvcoeb1xT20b6tcp |\n| campaign_id | Parent campaign ID. | camp_FNYR4jhqZBM9xTptxDGgeNBV |\n| source| Channel through which the transaction was initiated. | - `API`
- `voucherify-web-ui`
- `Automation` |\n| details | More detailed information stored in the form of a JSON. | Provides more details related to the transaction in the form of an object. |\n| related_transaction_id | Unique transaction ID related to a receiver/donor card in the case of a points transfer from/to another card. | vtx_0c9afe802593b34b80 |",
"parameters": [],
"security": [
{
@@ -4528,11 +4553,12 @@
],
"post": {
"operationId": "export-loyalty-card-transactions-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Export Loyalty Card Transactions with campaign ID",
- "description": "Export transactions that are associated with point movements on a loyalty card.\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique transaction ID assigned by Voucherify. | vtx_0cb7811f1c07765800 |\n| type | Transaction type. | - `POINTS_EXPIRATION`
- `POINTS_ADDITION`
- `POINTS_REMOVAL`
- `POINTS_TRANSFER_OUT`
- `POINTS_ACCRUAL`
- `POINTS_REFUND`
- `POINTS_REDEMPTION` |\n| source_id | Custom source ID of the transaction if one was included originally. | source_id_custom |\n| reason | Contains the reason for the transaction if one was included originally. | |\n| balance | The loyalty card balance after the transaction. | |\n| amount | The amount of loyalty points being allocated during the transaction. This value can either be negative or positive depending on the nature of the transaction. | |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the transaction was created. | 2022-03-09T09:16:32.521Z |\n| voucher_id | Unique Voucher ID. | v_dky7ksKfPX50Wb2Bxvcoeb1xT20b6tcp |\n| campaign_id | Parent campaign ID. | camp_FNYR4jhqZBM9xTptxDGgeNBV |\n| source| Channel through which the transaction was initiated. | - `API`
- `voucherify-web-ui`
- `Automation` |\n| details | More detailed information stored in the form of a JSON. | Provides more details related to the transaction in the form of an object. |\n| related_transaction_id | Unique transaction ID related to a receiver/donor card in the case of a points transfer from/to another card. | vtx_0c9afe802593b34b80 |",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nExport transactions that are associated with point movements on a loyalty card.\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique transaction ID assigned by Voucherify. | vtx_0cb7811f1c07765800 |\n| type | Transaction type. | - `POINTS_EXPIRATION`
- `POINTS_ADDITION`
- `POINTS_REMOVAL`
- `POINTS_TRANSFER_OUT`
- `POINTS_ACCRUAL`
- `POINTS_REFUND`
- `POINTS_REDEMPTION` |\n| source_id | Custom source ID of the transaction if one was included originally. | source_id_custom |\n| reason | Contains the reason for the transaction if one was included originally. | |\n| balance | The loyalty card balance after the transaction. | |\n| amount | The amount of loyalty points being allocated during the transaction. This value can either be negative or positive depending on the nature of the transaction. | |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the transaction was created. | 2022-03-09T09:16:32.521Z |\n| voucher_id | Unique Voucher ID. | v_dky7ksKfPX50Wb2Bxvcoeb1xT20b6tcp |\n| campaign_id | Parent campaign ID. | camp_FNYR4jhqZBM9xTptxDGgeNBV |\n| source| Channel through which the transaction was initiated. | - `API`
- `voucherify-web-ui`
- `Automation` |\n| details | More detailed information stored in the form of a JSON. | Provides more details related to the transaction in the form of an object. |\n| related_transaction_id | Unique transaction ID related to a receiver/donor card in the case of a points transfer from/to another card. | vtx_0c9afe802593b34b80 |",
"parameters": [],
"security": [
{
@@ -4701,11 +4727,12 @@
],
"get": {
"operationId": "list-points-expiration",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Card Point Expiration",
- "description": "Retrieve loyalty point expiration buckets for a given loyalty card. Expired point buckets are not returned in this endpoint. You can use the [Exports API](/api-reference/exports/create-export) to retrieve a list of both `ACTIVE` and `EXPIRED` point buckets.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieve loyalty point expiration buckets for a given loyalty card. Expired point buckets are not returned in this endpoint. You can use the [Exports API](/api-reference/exports/create-export) to retrieve a list of both `ACTIVE` and `EXPIRED` point buckets.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -4814,11 +4841,12 @@
],
"post": {
"operationId": "create-points-expiration-export",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Export Loyalty Campaign Point Expiration",
- "description": "Schedule the generation of a point expiration CSV file for a particular campaign. It can list point buckets, which can have an `ACTIVE` or `EXPIRED` status.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nSchedule the generation of a point expiration CSV file for a particular campaign. It can list point buckets, which can have an `ACTIVE` or `EXPIRED` status.",
"parameters": [],
"security": [
{
@@ -4989,11 +5017,12 @@
],
"get": {
"operationId": "list-earning-rules",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Earning Rules",
- "description": "Returns a list of all earning rules within a given campaign.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nReturns a list of all earning rules within a given campaign.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -5561,11 +5590,12 @@
},
"post": {
"operationId": "create-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Create Earning Rule",
- "description": "Create earning rules for a loyalty campaign.\n\n> 🚧 Maximum number of earning rules\n>\n> You can create up to 100 earning rules per project. The limit can be customized for clients with a single-tenant setup.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nCreate earning rules for a loyalty campaign.\n\n\n\nMaximum number of earning rules\n\nYou can create up to 100 earning rules per project. The limit can be customized for clients with a single-tenant setup.\n\n",
"parameters": [],
"security": [
{
@@ -6782,11 +6812,12 @@
],
"get": {
"operationId": "get-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Earning Rule",
- "description": "Retrieves an earning rule assigned to a campaign.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieves an earning rule assigned to a campaign.",
"parameters": [],
"security": [
{
@@ -7067,11 +7098,12 @@
},
"put": {
"operationId": "update-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Update Earning Rule",
- "description": "Update an earning rule definition.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nUpdate an earning rule definition.",
"parameters": [],
"security": [
{
@@ -7183,11 +7215,12 @@
},
"delete": {
"operationId": "delete-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Delete Earning Rule",
- "description": "This method deletes an earning rule for a specific loyalty campaign.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nThis method deletes an earning rule for a specific loyalty campaign.",
"parameters": [],
"security": [
{
@@ -7265,11 +7298,12 @@
],
"post": {
"operationId": "enable-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Enable Earning Rule",
- "description": "Enable an earning rule.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nEnable an earning rule.",
"parameters": [],
"security": [
{
@@ -7377,11 +7411,12 @@
],
"post": {
"operationId": "disable-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Disable Earning Rule",
- "description": "Disable an earning rule.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nDisable an earning rule.",
"parameters": [],
"security": [
{
@@ -7474,11 +7509,12 @@
],
"get": {
"operationId": "list-member-rewards",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Rewards",
- "description": "Retrieves the list of rewards that the given customer (identified by `member_id`, which is a loyalty card assigned to a particular customer) **can get in exchange for loyalty points**. \n\nYou can use the `affordable_only` parameter to limit the results to rewards that the customer can actually afford (only rewards whose price in points is not higher than the loyalty points balance on a loyalty card). \n\nPlease note that rewards that are disabled (i.e. set to `Not Available` in the Dashboard) for a given loyalty tier reward mapping will not be returned in this endpoint.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieves the list of rewards that the given customer (identified by `member_id`, which is a loyalty card assigned to a particular customer) **can get in exchange for loyalty points**. \n\nYou can use the `affordable_only` parameter to limit the results to rewards that the customer can actually afford (only rewards whose price in points is not higher than the loyalty points balance on a loyalty card). \n\nPlease note that rewards that are disabled (i.e. set to `Not Available` in the Dashboard) for a given loyalty tier reward mapping will not be returned in this endpoint.",
"parameters": [
{
"in": "query",
@@ -7728,11 +7764,12 @@
],
"get": {
"operationId": "get-reward-details",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Reward Details",
- "description": "Get reward details in the context of a loyalty campaign and reward assignment ID.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nGet reward details in the context of a loyalty campaign and reward assignment ID.",
"parameters": [],
"security": [
{
@@ -7838,11 +7875,12 @@
],
"get": {
"operationId": "list-reward-assignments-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Reward Assignments with campaign ID",
- "description": "Returns reward assignments from a given loyalty campaign.\n\n> 📘 Alternative endpoint\n>\n> This endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-campaign-rewards). The URL was re-designed to be more contextual to the type of data returned in the response.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nReturns reward assignments from a given loyalty campaign.\n\n\n\nAlternative endpoint\n\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-campaign-rewards). The URL was re-designed to be more contextual to the type of data returned in the response.\n\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -8040,11 +8078,12 @@
],
"get": {
"operationId": "list-reward-assignments-2",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Campaign Rewards",
- "description": "Returns active rewards from a given loyalty campaign.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nReturns active rewards from a given loyalty campaign.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -8136,11 +8175,12 @@
},
"post": {
"operationId": "create-reward-assignment-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Create Loyalty Campaign Reward Assignment",
- "description": "Add rewards to a loyalty campaign.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nAdd rewards to a loyalty campaign.",
"parameters": [],
"security": [
{
@@ -8281,11 +8321,12 @@
],
"get": {
"operationId": "get-reward-assignment-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Campaign Reward Assignments",
- "description": "Retrieve specific reward assignment.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieve specific reward assignment.",
"parameters": [],
"security": [
{
@@ -8354,11 +8395,12 @@
],
"get": {
"operationId": "get-reward-assignment-2",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Campaign Reward Assignment",
- "description": "Retrieve specific reward assignment.\n\n> 📘 Alternative endpoint\n>\n> This endpoint is an alternative to this [endpoint](/api-reference/loyalties/get-campaign-reward-assignments). ",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieve specific reward assignment.\n\n\n\nAlternative endpoint\n\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/get-campaign-reward-assignments).\n\n",
"parameters": [],
"security": [
{
@@ -8428,11 +8470,12 @@
},
"put": {
"operationId": "update-reward-assignment-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Update Campaign Reward Assignment",
- "description": "Updates rewards parameters, i.e. the points cost for the specific reward.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nUpdates rewards parameters, i.e. the points cost for the specific reward.",
"parameters": [],
"security": [
{
@@ -8501,11 +8544,12 @@
},
"delete": {
"operationId": "delete-reward-assignment-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Delete Campaign Reward Assignment",
- "description": "This method deletes a reward assignment for a particular loyalty campaign.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nThis method deletes a reward assignment for a particular loyalty campaign.",
"parameters": [],
"security": [
{
@@ -8583,11 +8627,12 @@
],
"post": {
"operationId": "redeem-reward-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Redeem Reward with campaign ID",
- "description": "Exchange points from a loyalty card for a specified reward. This API method returns an assigned award in the response. It means that if a requesting customer gets a coupon code with a discount for the next order, that discount code will be visible in response as part of the reward object definition.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nExchange points from a loyalty card for a specified reward. This API method returns an assigned award in the response. It means that if a requesting customer gets a coupon code with a discount for the next order, that discount code will be visible in response as part of the reward object definition.",
"parameters": [],
"security": [
{
@@ -10052,11 +10097,12 @@
],
"post": {
"operationId": "redeem-reward",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Redeem Reward",
- "description": "\n> 📘 Alternative endpoint\n>\n>This endpoint is an alternative to this [endpoint](/api-reference/loyalties/redeem-reward-with-campaign-id). The URL was re-designed to allow you to redeem a reward without having to provide the `campaignId` as a path parameter.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\n\n\n\nAlternative endpoint\n\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/redeem-reward-with-campaign-id). The URL was re-designed to allow you to redeem a reward without having to provide the `campaignId` as a path parameter.\n\n",
"parameters": [],
"security": [
{
@@ -10380,11 +10426,12 @@
],
"get": {
"operationId": "list-loyalty-tiers",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Tiers",
- "description": "Retrieve a list of loyalty tiers which were added to the loyalty program.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieve a list of loyalty tiers which were added to the loyalty program.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -10542,11 +10589,12 @@
},
"post": {
"operationId": "create-in-bulk-loyalty-tiers",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Create loyalty tiers",
- "description": "Creates loyalty tiers for desired campaign.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nCreates loyalty tiers for desired campaign.",
"parameters": [],
"security": [
{
@@ -10608,11 +10656,12 @@
],
"get": {
"operationId": "get-loyalty-tier",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Loyalty Tier",
- "description": "Retrieve a loyalty tier from a loyalty campaign by the loyalty tier ID.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieve a loyalty tier from a loyalty campaign by the loyalty tier ID.",
"parameters": [],
"security": [
{
@@ -10703,11 +10752,12 @@
],
"get": {
"operationId": "list-member-loyalty-tier",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member's Loyalty Tiers",
- "description": "Retrieve member tiers using the loyalty card ID.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieve member tiers using the loyalty card ID.",
"parameters": [],
"security": [
{
@@ -10823,11 +10873,12 @@
],
"get": {
"operationId": "list-loyalty-tier-earning-rules",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Tier Earning Rules",
- "description": "Retrieve available earning rules for a given tier and the calculation method for earning points.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieve available earning rules for a given tier and the calculation method for earning points.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -11441,11 +11492,12 @@
],
"get": {
"operationId": "list-loyalty-tier-rewards",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Tier Rewards",
- "description": "Get available rewards for a given tier.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nGet available rewards for a given tier.",
"parameters": [],
"security": [
{
@@ -11605,11 +11657,12 @@
],
"post": {
"operationId": "estimate-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Estimate loyalty points",
- "description": "Estimates the number of points a customer will receive for a given order in the loyalty campaign under its earning rules. This endpoint also returns point estimation for created transactions (orders with status `PAID`)\n\nThis endpoint returns only an estimation, not a precise point value.\n\nAlso, this estimation works only for the Order paid earning rules. If a campaign includes tiers, mappings, and multiple earning rules, the calculation becomes more complex. During final calculation, a customer may change tiers and earn more or fewer points depending on other factors.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nEstimates the number of points a customer will receive for a given order in the loyalty campaign under its earning rules. This endpoint also returns point estimation for created transactions (orders with status `PAID`)\n\nThis endpoint returns only an estimation, not a precise point value.\n\nAlso, this estimation works only for the Order paid earning rules. If a campaign includes tiers, mappings, and multiple earning rules, the calculation becomes more complex. During final calculation, a customer may change tiers and earn more or fewer points depending on other factors.",
"parameters": [],
"security": [
{
diff --git a/documentation/openapi/management.json b/documentation/openapi/management.json
index 138be17b9..381fb894a 100644
--- a/documentation/openapi/management.json
+++ b/documentation/openapi/management.json
@@ -918,7 +918,7 @@
"Management"
],
"summary": "Delete Project",
- "description": "Deletes an existing project.\n\nThe users currently using the deleted project will be automatically logged out.\n\n> 🚧 Sandbox Project\n>\n>The sandbox project cannot be deleted.",
+ "description": "Deletes an existing project.\n\nThe users currently using the deleted project will be automatically logged out.\n\n\n\nSandbox Project\n\nThe sandbox project cannot be deleted.\n\n",
"parameters": [],
"security": [
{
@@ -990,7 +990,7 @@
"Management"
],
"summary": "Assign User",
- "description": "Assigns a user to a given project. The user must be an existing user in Voucherify.\n\n> 🚧 Correct Use of Data\n>\n>To avoid errors, use the `\"role\"` key with either `\"id\"` or `\"login\"` keys.",
+ "description": "Assigns a user to a given project. The user must be an existing user in Voucherify.\n\n\n\nCorrect Use of Data\n\nTo avoid errors, use the `\"role\"` key with either `\"id\"` or `\"login\"` keys.\n\n",
"parameters": [],
"security": [
{
@@ -1691,7 +1691,7 @@
"Management"
],
"summary": "List Campaign Templates",
- "description": "Lists all campaign templates available in the project.\n\n> 👍 List Campaign Templates\n>\n> This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates).\n\n> 📘 Campaign Templates – Documentation\n>\n>Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Lists all campaign templates available in the project.\n\n\n\nList Campaign Templates\n\nThis endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates).\n\n\n\n\n\nCampaign Templates – Documentation\n\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -1864,7 +1864,7 @@
"Management"
],
"summary": "Copy Campaign Template to a Project",
- "description": "Copies a campaign template to another project.\n\nThe resources, like validation rules or products, will not be copied to the destination project yet. When the template is used to create a new campaign or add a new promotion tier, the resources will be created in the destination project.\n\n> 📘 Campaign Templates – Documentation\n>\n>Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Copies a campaign template to another project.\n\nThe resources, like validation rules or products, will not be copied to the destination project yet. When the template is used to create a new campaign or add a new promotion tier, the resources will be created in the destination project.\n\n\n\nCampaign Templates – Documentation\n\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n\n",
"parameters": [],
"security": [
{
@@ -2004,7 +2004,7 @@
"Management"
],
"summary": "Create Stacking Rules",
- "description": "Overwrites the default stacking rules.\n\nIf new stacking rules have been created for the project earlier (e.g. in the user interface), it returns an error. Use [Update stacking rules](/api-reference/management/update-stacking-rules) endpoint to change the rules.\n\n> 📘 Stacking rules documentation\n>\n> Read [the Stacking rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Overwrites the default stacking rules.\n\nIf new stacking rules have been created for the project earlier (e.g. in the user interface), it returns an error. Use [Update stacking rules](/api-reference/management/update-stacking-rules) endpoint to change the rules.\n\n\n\nStacking rules documentation\n\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n\n",
"parameters": [],
"security": [
{
@@ -2186,7 +2186,7 @@
"Management"
],
"summary": "List Stacking Rules",
- "description": "Lists all stacking rules.\n\nReturns always a list with one item.\n\nThis endpoint can be used to retrieve the default stacking rules. The default stacking rules do not have an ID that could be used with the [Get Stacking Rules](/api-reference/management/get-stacking-rules) or [Update Stacking Rules](/api-reference/management/update-stacking-rules) endpoints.\n\n> 📘 Stacking Rules Documentation\n>\n> Read [the Stacking Rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Lists all stacking rules.\n\nReturns always a list with one item.\n\nThis endpoint can be used to retrieve the default stacking rules. The default stacking rules do not have an ID that could be used with the [Get Stacking Rules](/api-reference/management/get-stacking-rules) or [Update Stacking Rules](/api-reference/management/update-stacking-rules) endpoints.\n\n\n\nStacking Rules Documentation\n\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n\n",
"parameters": [],
"security": [
{
@@ -2341,7 +2341,7 @@
"Management"
],
"summary": "Get Stacking Rules",
- "description": "Retrieves the stacking rules for the project.\n\n> 📘 Stacking Rules Documentation\n>\n> Read [the Stacking Rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Retrieves the stacking rules for the project.\n\n\n\nStacking Rules Documentation\n\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n\n",
"parameters": [],
"security": [
{
@@ -2471,7 +2471,7 @@
"Management"
],
"summary": "Update Stacking Rules",
- "description": "Updates the stacking rules.\n\nOnly the provided fields will be updated. However, if you update an array, the content of the array is overwritten. This means that if you want to add new values to an array and retain existing ones, you need to provide both the existing and new values in the request.\n\n> 📘 Stacking Rules Documentation\n>\n> Read [the Stacking Rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Updates the stacking rules.\n\nOnly the provided fields will be updated. However, if you update an array, the content of the array is overwritten. This means that if you want to add new values to an array and retain existing ones, you need to provide both the existing and new values in the request.\n\n\n\nStacking Rules Documentation\n\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n\n",
"parameters": [],
"security": [
{
@@ -2633,7 +2633,7 @@
"Management"
],
"summary": "Delete Stacking Rules",
- "description": "Deletes permanently the current settings for the stacking rules.\n\nThe stacking rules are restored to default values.\n\n> 📘 Stacking Rules Documentation\n>\n> Read [the Stacking Rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Deletes permanently the current settings for the stacking rules.\n\nThe stacking rules are restored to default values.\n\n\n\nStacking Rules Documentation\n\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n\n",
"parameters": [],
"security": [
{
@@ -2724,7 +2724,7 @@
"Management"
],
"summary": "Create Metadata Schema",
- "description": "Creates a new metadata (custom attribute) schema for a given resource.\n\nThe schema consists of a set of key-value pairs to customize Voucherify resources. \n\nYou can nest your object within a standard metadata schema, e.g. within a campaign or customer schema. However, your nested object can't include another nested object. The standard metadata schemas are:\n- Campaign\n- Voucher\n- Publication\n- Redemption\n- Product\n- Customer\n- Order\n- Order line item\n- Loyalty Tier\n- Promotion Tier\n- Earning rule\n- Reward\n\nUse this endpoint to define a metadata schema of a given resource for the first time. Once you configure a metadata schema for a given `related_object`, use the PUT [Update metadata schema](/api-reference/management/update-metadata-schema) endpoint to either update or add new metadata key-value pairs. For example, use this endpoint to define a metadata schema for `related_object: campaign` for the first time. If you want define a new metadata property for `campaign`, use the [PUT Update metadata schema](/api-reference/management/update-metadata-schema) endpoint.\n\n> 📘 Metadata Documentation\n>\n> Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Creates a new metadata (custom attribute) schema for a given resource.\n\nThe schema consists of a set of key-value pairs to customize Voucherify resources. \n\nYou can nest your object within a standard metadata schema, e.g. within a campaign or customer schema. However, your nested object can't include another nested object. The standard metadata schemas are:\n- Campaign\n- Voucher\n- Publication\n- Redemption\n- Product\n- Customer\n- Order\n- Order line item\n- Loyalty Tier\n- Promotion Tier\n- Earning rule\n- Reward\n\nUse this endpoint to define a metadata schema of a given resource for the first time. Once you configure a metadata schema for a given `related_object`, use the PUT [Update metadata schema](/api-reference/management/update-metadata-schema) endpoint to either update or add new metadata key-value pairs. For example, use this endpoint to define a metadata schema for `related_object: campaign` for the first time. If you want define a new metadata property for `campaign`, use the [PUT Update metadata schema](/api-reference/management/update-metadata-schema) endpoint.\n\n\n\nMetadata Documentation\n\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n\n",
"parameters": [],
"security": [
{
@@ -2888,7 +2888,7 @@
"Management"
],
"summary": "List Metadata Schemas",
- "description": "Lists all metadata schemas available in the project.\n\n> 📘 Metadata Documentation\n>\n> Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Lists all metadata schemas available in the project.\n\n\n\nMetadata Documentation\n\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n\n",
"parameters": [],
"security": [
{
@@ -3258,7 +3258,7 @@
"Management"
],
"summary": "Get Metadata Schema",
- "description": "Retrieves a metadata schema.\n\n> 📘 Metadata Documentation\n>\n> Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Retrieves a metadata schema.\n\n\n\nMetadata Documentation\n\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n\n",
"parameters": [],
"security": [
{
@@ -3403,7 +3403,7 @@
"Management"
],
"summary": "Update Metadata Schema",
- "description": "Updates a metadata schema.\n\nWith this request, you can:\n- Add a nonexistent attribute definition to the metadata schema.\n- Update an existing attribute definition by overwriting its current values.\n\nIn the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged.\n\nHowever, if you want to update a definition, you will have to add all its current key-value pairs as well. Only the pairs sent in the request are saved for this definition. This means that the key-value pairs that are not sent in a request are restored to default values. For example, if your definition has an array with values and it is not sent in an update request, the array values will be deleted.\n\n> 👍 Additional Notes\n>\n>- You cannot change the type of an existing schema, e.g. from `\"string\"` to `\"number\"`.\n>\n>- You can remove a definition with this endpoint by providing `\"deleted\": true` in the request. It will be moved to the Removed definitions section in the user interface. However, you cannot permanently remove a definition with this endpoint.\n\n> 📘 Metadata Documentation\n>\n> Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Updates a metadata schema.\n\nWith this request, you can:\n- Add a nonexistent attribute definition to the metadata schema.\n- Update an existing attribute definition by overwriting its current values.\n\nIn the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged.\n\nHowever, if you want to update a definition, you will have to add all its current key-value pairs as well. Only the pairs sent in the request are saved for this definition. This means that the key-value pairs that are not sent in a request are restored to default values. For example, if your definition has an array with values and it is not sent in an update request, the array values will be deleted.\n\n\n\nAdditional Notes\n\n- You cannot change the type of an existing schema, e.g. from `\"string\"` to `\"number\"`.\n\n- You can remove a definition with this endpoint by providing `\"deleted\": true` in the request. It will be moved to the Removed definitions section in the user interface. However, you cannot permanently remove a definition with this endpoint.\n\n\n\n\n\nMetadata Documentation\n\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n\n",
"parameters": [],
"security": [
{
@@ -3546,7 +3546,7 @@
"Management"
],
"summary": "Delete Metadata Schema",
- "description": "Deletes permanently the metadata schema.\n\nIn standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are:\n- Campaign\n- Voucher\n- Publication\n- Redemption\n- Product\n- Customer\n- Order\n- Order line item\n- Loyalty Tier\n- Promotion Tier\n- Earning rule\n- Reward\n\nIf you want to delete only one definition, use the [Update Metadata Schema](/api-reference/management/update-metadata-schema) endpoint. In the request, provide the `\"deleted\": true` pair in the definition object. This definition will be moved to Removed definitions.\n\nIf you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint.\n\n> 🚧 Metadata Purging\n>\n>This endpoint deletes permanently the metadata schemas only. However, it does not purge the metadata from associated entities, so the metadata added to those entities will remain.\n>\n>If you want to purge metadata from the entities:\n>1. Remove all the definitions you want to purge. You can do this either in Voucherify Project Settings > Metadata Schema tab or with the [Update Metadata Schema](/api-reference/management/update-metadata-schema) endpoint.\n>2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema.\n>3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities.\n>Note:\n>- This is an asynchronous action. You will be notified when it has been completed.\n>- You cannot purge metadata for the Redemption and Publication schemas.\n>4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify.\n\n> 📘 Metadata Documentation\n>\n> Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Deletes permanently the metadata schema.\n\nIn standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are:\n- Campaign\n- Voucher\n- Publication\n- Redemption\n- Product\n- Customer\n- Order\n- Order line item\n- Loyalty Tier\n- Promotion Tier\n- Earning rule\n- Reward\n\nIf you want to delete only one definition, use the [Update Metadata Schema](/api-reference/management/update-metadata-schema) endpoint. In the request, provide the `\"deleted\": true` pair in the definition object. This definition will be moved to Removed definitions.\n\nIf you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint.\n\n\n\nMetadata Purging\n\nThis endpoint deletes permanently the metadata schemas only. However, it does not purge the metadata from associated entities, so the metadata added to those entities will remain.\n\nIf you want to purge metadata from the entities:\n\n1. Remove all the definitions you want to purge. You can do this either in Voucherify Project Settings > Metadata Schema tab or with the [Update Metadata Schema](/api-reference/management/update-metadata-schema) endpoint.\n2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema.\n3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities.\n\nNote:\n\n- This is an asynchronous action. You will be notified when it has been completed.\n- You cannot purge metadata for the Redemption and Publication schemas.\n\n4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify.\n\n\n\n\n\nMetadata Documentation\n\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n\n",
"parameters": [],
"security": [
{
@@ -3637,7 +3637,7 @@
"Management"
],
"summary": "Create Custom Event Schema",
- "description": "Creates a custom event schema.\n\nThe `\"properties\"` object is required, but it can be empty, however. This object is for optional custom properties (metadata).\n\n> 📘 Custom Event Documentation\n>\n> Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\n>\n>Read also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Creates a custom event schema.\n\nThe `\"properties\"` object is required, but it can be empty, however. This object is for optional custom properties (metadata).\n\n\n\nCustom Event Documentation\n\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\n\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n\n",
"parameters": [],
"security": [
{
@@ -3793,7 +3793,7 @@
"Management"
],
"summary": "List Custom Event Schemas",
- "description": "Lists all custom event schemas available in the project.\n\n> 📘 Custom Event Documentation\n>\n> Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\n>\n>Read also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Lists all custom event schemas available in the project.\n\n\n\nCustom Event Documentation\n\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\n\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n\n",
"parameters": [],
"security": [
{
@@ -3939,7 +3939,7 @@
"Management"
],
"summary": "Get Custom Event Schema",
- "description": "Retrieves a custom event schema.\n\n> 📘 Custom Event Documentation\n>\n> Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\n>\n>Read also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Retrieves a custom event schema.\n\n\n\nCustom Event Documentation\n\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\n\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n\n",
"parameters": [],
"security": [
{
@@ -4040,7 +4040,7 @@
"Management"
],
"summary": "Update Custom Event Schema",
- "description": "Updates a custom event schema.\n\nWith this request, you can:\n- Add a nonexistent property to a custom event schema.\n- Update an existing property.\n\nIn the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged.\n\n> 👍 Additional Notes\n>\n>- You can change the type of an existing property, e.g. from `\"string\"` to `\"number\"`.\n>\n>- You can remove a custom property with this endpoint by providing `\"deleted\": true` in the request. However, you cannot permanently remove an event definition or its property with this endpoint.\n\n> 📘 Custom Event Documentation\n>\n> Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\n>\n>Read also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Updates a custom event schema.\n\nWith this request, you can:\n- Add a nonexistent property to a custom event schema.\n- Update an existing property.\n\nIn the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged.\n\n\n\nAdditional Notes\n\n- You can change the type of an existing property, e.g. from `\"string\"` to `\"number\"`.\n\n- You can remove a custom property with this endpoint by providing `\"deleted\": true` in the request. However, you cannot permanently remove an event definition or its property with this endpoint.\n\n\n\n\n\nCustom Event Documentation\n\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\n\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n\n",
"parameters": [],
"security": [
{
@@ -4184,7 +4184,7 @@
"Management"
],
"summary": "Delete Custom Event Schema",
- "description": "Deletes permanently the custom event schema with its custom properties (metadata).\n\n> 📘 Custom Event Documentation\n>\n> Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\n>\n>Read also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Deletes permanently the custom event schema with its custom properties (metadata).\n\n\n\nCustom Event Documentation\n\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\n\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n\n",
"parameters": [],
"security": [
{
@@ -4275,7 +4275,7 @@
"Management"
],
"summary": "Create Webhook",
- "description": "Creates a new webhook configuration.\n\n> 📘 Webhook Documentation\n>\n> Read [Webhooks v2024-01-01](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Creates a new webhook configuration.\n\n\n\nWebhook Documentation\n\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n\n",
"parameters": [],
"security": [
{
@@ -4404,7 +4404,7 @@
"Management"
],
"summary": "List Webhooks",
- "description": "Lists all webhook configurations for the project.\n\n> 📘 Webhook Documentation\n>\n> Read [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Lists all webhook configurations for the project.\n\n\n\nWebhook Documentation\n\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n\n",
"parameters": [],
"security": [
{
@@ -4578,7 +4578,7 @@
"Management"
],
"summary": "Get Webhook",
- "description": "Retrieves a webhook configuration.\n\n> 📘 Webhook Documentation\n>\n> Read [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Retrieves a webhook configuration.\n\n\n\nWebhook Documentation\n\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n\n",
"parameters": [],
"security": [
{
@@ -4681,7 +4681,7 @@
"Management"
],
"summary": "Update Webhook",
- "description": "Updates a webhook configuration.\n\nThe `\"events\"` listed in the request are overwritten. If you want to add more events, provide also the events that are already in the webhook configuration.\n\n> 📘 Webhook Documentation\n>\n> Read [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Updates a webhook configuration.\n\nThe `\"events\"` listed in the request are overwritten. If you want to add more events, provide also the events that are already in the webhook configuration.\n\n\n\nWebhook Documentation\n\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n\n",
"parameters": [],
"security": [
{
@@ -4816,7 +4816,7 @@
"Management"
],
"summary": "Delete Webhook",
- "description": "Deletes a webhook configuration.\n\n> 📘 Webhook Documentation\n>\n> Read [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Deletes a webhook configuration.\n\n\n\nWebhook Documentation\n\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n\n",
"parameters": [],
"security": [
{
@@ -4911,7 +4911,7 @@
"Management"
],
"summary": "Create Brand",
- "description": "Creates a new brand configuration.\n\nYou can have only one brand configured for a project.\n\n> 📘 White Labelling\n>\n> The white labelling settings which can be found in Project Settings > Brand Details and which are available only for Enterprise clients as a separate service can be configured only in the user interface.",
+ "description": "Creates a new brand configuration.\n\nYou can have only one brand configured for a project.\n\n\n\nWhite Labelling\n\nThe white labelling settings which can be found in Project Settings > Brand Details and which are available only for Enterprise clients as a separate service can be configured only in the user interface.\n\n",
"parameters": [],
"security": [
{
@@ -5349,7 +5349,7 @@
"Management"
],
"summary": "Update Brand",
- "description": "Updates a brand configuration.\n\nOnly the fields sent in the request will be updated. The fields omitted in the request will remain unchanged.\n\n> 📘 White Labelling\n>\n> The white labelling settings which can be found in Project Settings > Brand Details and which are available only for Enterprise clients as a separate service can be configured only in the user interface.",
+ "description": "Updates a brand configuration.\n\nOnly the fields sent in the request will be updated. The fields omitted in the request will remain unchanged.\n\n\n\nWhite Labelling\n\nThe white labelling settings which can be found in Project Settings > Brand Details and which are available only for Enterprise clients as a separate service can be configured only in the user interface.\n\n",
"parameters": [],
"security": [
{
diff --git a/documentation/openapi/metadata-schemas.json b/documentation/openapi/metadata-schemas.json
index 7cc950126..f36b940a2 100644
--- a/documentation/openapi/metadata-schemas.json
+++ b/documentation/openapi/metadata-schemas.json
@@ -42,7 +42,7 @@
"Metadata Schemas"
],
"summary": "List Metadata Schema Definitions",
- "description": "Retrieve metadata schema definitions.\n\n>📘 Management API\n>\n>If you have Management API enabled, you can also use the [List Metadata Schemas](/api-reference/management/list-metadata-schemas) endpoint to list all metadata schemas.",
+ "description": "Retrieve metadata schema definitions.\n\n\n\nManagement API\n\nIf you have Management API enabled, you can also use the [List Metadata Schemas](/api-reference/management/list-metadata-schemas) endpoint to list all metadata schemas.\n\n",
"parameters": [],
"security": [
{
@@ -553,7 +553,7 @@
"Metadata Schemas"
],
"summary": "Get Metadata Schema",
- "description": "Retrieves a metadata schema per resource type.\n\n## Resource types\n\n### Standard\n\nYou can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter.\n\n- `campaign`\n- `customer`\n- `earning_rule`\n- `loyalty_tier`\n- `order`\n- `order_item`\n- `product`\n- `promotion_tier`\n- `publication`\n- `redemption`\n- `reward`\n- `voucher`\n\n### Custom\n\nIf you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the `\"resource\"` field to retrieve its details.\n\n>📘 Management API\n>\n>If you have Management API enabled, you can also use the [Get Metadata Schemas](/api-reference/management/get-metadata-schema) endpoint to retrieve a metadata schema using its ID.",
+ "description": "Retrieves a metadata schema per resource type.\n\n## Resource types\n\n### Standard\n\nYou can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter.\n\n- `campaign`\n- `customer`\n- `earning_rule`\n- `loyalty_tier`\n- `order`\n- `order_item`\n- `product`\n- `promotion_tier`\n- `publication`\n- `redemption`\n- `reward`\n- `voucher`\n\n### Custom\n\nIf you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the `\"resource\"` field to retrieve its details.\n\n\n\nManagement API\n\nIf you have Management API enabled, you can also use the [Get Metadata Schemas](/api-reference/management/get-metadata-schema) endpoint to retrieve a metadata schema using its ID.\n\n",
"parameters": [],
"security": [
{
diff --git a/documentation/openapi/oauth.json b/documentation/openapi/oauth.json
index 57d5f37a3..c2351d751 100644
--- a/documentation/openapi/oauth.json
+++ b/documentation/openapi/oauth.json
@@ -42,7 +42,7 @@
"OAuth"
],
"summary": "Generate OAuth 2.0 Token",
- "description": "Generate an OAuth 2.0 token for an API client. The token can be used to authorize access to the Voucherify API. The token inherits the permissions and IP whitelists of the API key that is used to generate the OAuth token. You can define the scope that limits its usage. You can generate up to 1000 OAuth tokens per project. The token expires in 900 seconds (15 minutes).\n\nIf the API key that is used to generate the OAuth token is deleted or blocked, you cannot generate new OAuth tokens and the existing ones will stop working within one minute.\n\nIf the API key used to generate an OAuth token is regenerated, the OAuth token can still be used.\n\n>🚧 Format of scope values\n>\n>Separate the values of the `scope` property with spaces.",
+ "description": "Generate an OAuth 2.0 token for an API client. The token can be used to authorize access to the Voucherify API. The token inherits the permissions and IP whitelists of the API key that is used to generate the OAuth token. You can define the scope that limits its usage. You can generate up to 1000 OAuth tokens per project. The token expires in 900 seconds (15 minutes).\n\nIf the API key that is used to generate the OAuth token is deleted or blocked, you cannot generate new OAuth tokens and the existing ones will stop working within one minute.\n\nIf the API key used to generate an OAuth token is regenerated, the OAuth token can still be used.\n\n\n\nFormat of scope values\n\nSeparate the values of the `scope` property with spaces.\n\n",
"parameters": [],
"security": [
{
diff --git a/documentation/openapi/orders.json b/documentation/openapi/orders.json
index af2bff627..dfd016e79 100644
--- a/documentation/openapi/orders.json
+++ b/documentation/openapi/orders.json
@@ -736,7 +736,7 @@
"Orders"
],
"summary": "Create Order",
- "description": "Creates an order object and triggers an order creation event.\n\n\n\n> 📘 Upsert Mode\n>\n> If you pass an `id` or a `source_id` that already exists in the order database, Voucherify will return a related order object with updated fields.",
+ "description": "Creates an order object and triggers an order creation event.\n\n\n\n\n\nUpsert Mode\n\nIf you pass an `id` or a `source_id` that already exists in the order database, Voucherify will return a related order object with updated fields.\n\n",
"parameters": [],
"security": [
{
@@ -1211,7 +1211,7 @@
"Orders"
],
"summary": "Import Orders",
- "description": "\n\n> 🚧 Historical orders\n>\n> This endpoint should only be used to import historical orders into Voucherify. For on-going synchronization, the [update order](/api-reference/orders/update-order) endpoint should be used. This is critical because this endpoint does not store events or launch distributions.\nThe orders will also have a `created_at` date that's assigned when they've been imported to Voucherify. To keep track of the actual order creation date, add an order metadata in ISO 8601 date or date time format to each imported order.\n\n## Limitations\n\n### Import volume\n\nThere can be only a single on-going order import per tenant per project at a given time. The user can schedule more imports but those extra imports will be scheduled to run in sequence one by one. \n\n### Maximum count of orders in single import\n\nThere is a `2000` limit of orders per one request.\n\n## Notifications\n\nThere are no notifications on the Dashboard because this import is launched via the API.\n\n## Triggered actions\n \nIf you import orders with customers, then a logic will be scheduled responsible for placing these customers into segments and refreshing the segment's summary. Consequently, this update will trigger \n- Customers entering into segments\n- Distributions based on any rules tied to customer entering segment(s)\n- Earning rules based on the customer entering segment(s)\n\n## What is not triggered\n\n1. No webhooks are triggered during the import of orders - for both orders and upserted products / SKUs. \n\n2. Distributions based on Order Update, Order Paid, Order Created and Order Cancelled. In other words if you have a distribution based on Order Paid and you import an order with a `PAID` status, the distribution is not going to be triggered. \n\n3. No events are created during the import of orders - for both orders and upserted products / SKUs. In other words you won't see any events in the Activity tab in the Dashboard such as Order created or Order paid. If you are additionally upserting products / SKUs, then you won't see the Product created events listed, etc. \n\n4. Earning rules based on Order Paid won't be triggered.\n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request with [GET Async Action](/api-reference/async-actions/get-async-action) endpoint.",
+ "description": "\n\n\n\nHistorical orders\n\nThis endpoint should only be used to import historical orders into Voucherify. For on-going synchronization, the [update order](/api-reference/orders/update-order) endpoint should be used. This is critical because this endpoint does not store events or launch distributions.\n\n\nThe orders will also have a `created_at` date that's assigned when they've been imported to Voucherify. To keep track of the actual order creation date, add an order metadata in ISO 8601 date or date time format to each imported order.\n\n## Limitations\n\n### Import volume\n\nThere can be only a single on-going order import per tenant per project at a given time. The user can schedule more imports but those extra imports will be scheduled to run in sequence one by one. \n\n### Maximum count of orders in single import\n\nThere is a `2000` limit of orders per one request.\n\n## Notifications\n\nThere are no notifications on the Dashboard because this import is launched via the API.\n\n## Triggered actions\n \nIf you import orders with customers, then a logic will be scheduled responsible for placing these customers into segments and refreshing the segment's summary. Consequently, this update will trigger \n- Customers entering into segments\n- Distributions based on any rules tied to customer entering segment(s)\n- Earning rules based on the customer entering segment(s)\n\n## What is not triggered\n\n1. No webhooks are triggered during the import of orders - for both orders and upserted products / SKUs. \n\n2. Distributions based on Order Update, Order Paid, Order Created and Order Cancelled. In other words if you have a distribution based on Order Paid and you import an order with a `PAID` status, the distribution is not going to be triggered. \n\n3. No events are created during the import of orders - for both orders and upserted products / SKUs. In other words you won't see any events in the Activity tab in the Dashboard such as Order created or Order paid. If you are additionally upserting products / SKUs, then you won't see the Product created events listed, etc. \n\n4. Earning rules based on Order Paid won't be triggered.\n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request with [GET Async Action](/api-reference/async-actions/get-async-action) endpoint.",
"parameters": [],
"security": [
{
diff --git a/documentation/openapi/products.json b/documentation/openapi/products.json
index 0a71b7cfc..98490f48d 100644
--- a/documentation/openapi/products.json
+++ b/documentation/openapi/products.json
@@ -218,7 +218,7 @@
"Products"
],
"summary": "Create Product",
- "description": "Creates a product object.\n\n\n\n> 📘 Upsert Mode\n>\n> If you pass an `id` or a `source_id` that already exists in the product database, Voucherify will return a related product object with updated fields.",
+ "description": "Creates a product object.\n\n\n\n\n\nUpsert Mode\n\nIf you pass an `id` or a `source_id` that already exists in the product database, Voucherify will return a related product object with updated fields.\n\n",
"parameters": [],
"security": [
{
@@ -1024,7 +1024,7 @@
"Products"
],
"summary": "Create SKU",
- "description": "This method adds product variants to a [created product](/api-reference/products/create-product). \n\n> 📘 Upsert Mode\n>\n> If you pass an `id` or a `source_id` that already exists in the sku database, Voucherify will return a related sku object with updated fields.",
+ "description": "This method adds product variants to a [created product](/api-reference/products/create-product). \n\n\n\nUpsert Mode\n\nIf you pass an `id` or a `source_id` that already exists in the sku database, Voucherify will return a related sku object with updated fields.\n\n",
"parameters": [],
"security": [
{
@@ -1280,7 +1280,7 @@
"Products"
],
"summary": "Import Products using CSV",
- "description": "Import products into the repository using a CSV file.\n\nThe CSV file has to include headers in the first line.\n\n\n\n> 📘 Standard product fields mapping\n>\n> - Create a **comma separated value (CSV) file** or download our CSV import template. You can find an example template [here](https://s3.amazonaws.com/helpscout.net/docs/assets/5902f1c12c7d3a057f88a36d/attachments/627b82ed68d51e779443f550/Import_products_template.csv).\n> - Supported CSV file headers: `name,source_id,price,attributes,image_url,Metadata_property_name`\n> - **Name** is a **required** field. The remaining fields in the CSV template are optional.\n> - Override/Update products' **names** in Voucherify using this method. Data will be updated for each product included in the CSV file whose **source_id** matches a source ID in Voucherify. No other data can be updated other than the product name.\n> - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 standard**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11\n> - `YYYY-MM-DD`\n> - `YYYY-MM-DDTHH`\n> - `YYYY-MM-DDTHH:mm`\n> - `YYYY-MM-DDTHH:mm:ss`\n> - `YYYY-MM-DDTHH:mm:ssZ`\n> - `YYYY-MM-DDTHH:mm:ssZ`\n> - `YYYY-MM-DDTHH:mm:ss.SSSZ`\n> - Columns that cannot be mapped to standard fields, will be mapped to **Custom attributes** and added as **products' metadata**. There is no limit on the number of custom attributes that you can import as metadata. \n> - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](/prepare/metadata#add-metadata).\n> - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e \"attribute1,attribute2\".\n> - Headers with metadata names **can't contain white-space characters**.\n> - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: \n> - array of strings: \"subscribed,premium\" \n> - array of numbers: \"123,234\". \n> - array of dates: \"2000-01-01,2000-01-02\"\n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
+ "description": "Import products into the repository using a CSV file.\n\nThe CSV file has to include headers in the first line.\n\n\n\n\n\nStandard product fields mapping\n\n- Create a **comma separated value (CSV) file** or download our CSV import template. You can find an example template [here](https://s3.amazonaws.com/helpscout.net/docs/assets/5902f1c12c7d3a057f88a36d/attachments/627b82ed68d51e779443f550/Import_products_template.csv).\n- Supported CSV file headers: `name,source_id,price,attributes,image_url,Metadata_property_name`\n- **Name** is a **required** field. The remaining fields in the CSV template are optional.\n- Override/Update products' **names** in Voucherify using this method. Data will be updated for each product included in the CSV file whose **source_id** matches a source ID in Voucherify. No other data can be updated other than the product name.\n- Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 standard**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11\n - `YYYY-MM-DD`\n - `YYYY-MM-DDTHH`\n - `YYYY-MM-DDTHH:mm`\n - `YYYY-MM-DDTHH:mm:ss`\n - `YYYY-MM-DDTHH:mm:ssZ`\n - `YYYY-MM-DDTHH:mm:ssZ`\n - `YYYY-MM-DDTHH:mm:ss.SSSZ`\n- Columns that cannot be mapped to standard fields, will be mapped to **Custom attributes** and added as **products' metadata**. There is no limit on the number of custom attributes that you can import as metadata.\n- To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](/prepare/metadata#add-metadata).\n- **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e \"attribute1,attribute2\".\n- Headers with metadata names **can't contain white-space characters**.\n- If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example:\n - array of strings: \"subscribed,premium\"\n - array of numbers: \"123,234\".\n - array of dates: \"2000-01-01,2000-01-02\"\n\n\n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
"parameters": [],
"security": [
{
@@ -1354,7 +1354,7 @@
"Products"
],
"summary": "Import SKUs using CSV",
- "description": "Import SKUs into the repository using a CSV file.\n\nThe CSV file has to include headers in the first line. All properties which cannot be mapped to standard SKU fields will be added to the metadata object. You can find an example template [here](https://s3.amazonaws.com/helpscout.net/docs/assets/5902f1c12c7d3a057f88a36d/attachments/627b98d08c9b585083488a4c/Import_SKUS_template.csv). \n\n> 🚧 Import sequence\n>\n> First import products using the [dedicated endpoint](/api-reference/products/import-products-using-csv), then import SKUs using this endpoint to properly match SKUs to products.\n\n\n\n> 📘 Standard SKU fields mapping\n>\n> - **Required** fields are `source_id` and `product_id`.\n> - Supported CSV file headers: `product_id,sku,source_id,price,image_url,attributes`\n> - SKU **source_id** must be unique in the entire product catalog, no duplicates are allowed.\n> - SKU attributes need to be in the form of a stringy-fied json, i.e.`\"{'color':'blue'}\"`. These attributes must be defined in the **product** beforehand so you can import them to the SKU.\n> - You can use this method to update the following parameters in bulk: **sku** and the sku **price**.\n> - Columns that cannot be mapped to standard fields will be mapped to Custom attributes and added as product metadata. There is no limit on the number of custom attributes that you can import as metadata.\n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
+ "description": "Import SKUs into the repository using a CSV file.\n\nThe CSV file has to include headers in the first line. All properties which cannot be mapped to standard SKU fields will be added to the metadata object. You can find an example template [here](https://s3.amazonaws.com/helpscout.net/docs/assets/5902f1c12c7d3a057f88a36d/attachments/627b98d08c9b585083488a4c/Import_SKUS_template.csv). \n\n\n\nImport sequence\n\nFirst import products using the [dedicated endpoint](/api-reference/products/import-products-using-csv), then import SKUs using this endpoint to properly match SKUs to products.\n\n\n\n\n\n\n\nStandard SKU fields mapping\n\n- **Required** fields are `source_id` and `product_id`.\n- Supported CSV file headers: `product_id,sku,source_id,price,image_url,attributes`\n- SKU **source_id** must be unique in the entire product catalog, no duplicates are allowed.\n- SKU attributes need to be in the form of a stringy-fied json, i.e.`\"{'color':'blue'}\"`. These attributes must be defined in the **product** beforehand so you can import them to the SKU.\n- You can use this method to update the following parameters in bulk: **sku** and the sku **price**.\n- Columns that cannot be mapped to standard fields will be mapped to Custom attributes and added as product metadata. There is no limit on the number of custom attributes that you can import as metadata.\n\n\n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
"parameters": [],
"security": [
{
diff --git a/documentation/openapi/publications.json b/documentation/openapi/publications.json
index 4e4a2a3fd..9df479f04 100644
--- a/documentation/openapi/publications.json
+++ b/documentation/openapi/publications.json
@@ -42,7 +42,7 @@
"Publications"
],
"summary": "Create Publication with GET",
- "description": "This method selects vouchers that are suitable for publication, adds a publish entry and returns the publication.\n\nA voucher is suitable for publication when it's active and hasn't been published yet.\n> ❗️ Limited access\n>\n> Access to this endpoint is limited. This endpoint is designed for specific integrations and the API keys need to be configured to access this endpoint. Navigate to the **Dashboard** → **Project Settings** → **General** → **Integration Keys** to set up a pair of API keys and use them to send the request. \n\n\n> 🚧 Clearly define the source of the voucher\n>\n> You must clearly define which source you want to publish the voucher code from. It can either be a code from a campaign or a specific voucher identified by a code. \n\n> 🚧 Publish multiple vouchers\n>\n> This endpoint does not support the publishing of multiple vouchers from a single campaign. In case you want to publish multiple vouchers within a single publication, you need to use a [dedicated endpoint](/api-reference/publications/create-publication). \n\n\n\n> 📘 Auto-update campaign\n>\n> In case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use an **auto-update** campaign. \n\n## Example Request \n```markdown Publication Query \n/publications/create?campaign[name]=BlackFriday&customer[source_id]=Customer_Source_ID \n``` \n\n\n> ❗️ Required \n>\n> Query param `voucher` OR `campaign` MUST be filled out. If you provide both, `campaign` param will be skipped.",
+ "description": "This method selects vouchers that are suitable for publication, adds a publish entry and returns the publication.\n\nA voucher is suitable for publication when it's active and hasn't been published yet.\n\n\nLimited access\n\nAccess to this endpoint is limited. This endpoint is designed for specific integrations and the API keys need to be configured to access this endpoint. Navigate to the **Dashboard** → **Project Settings** → **General** → **Integration Keys** to set up a pair of API keys and use them to send the request.\n\n\n\n\n\n\nClearly define the source of the voucher\n\nYou must clearly define which source you want to publish the voucher code from. It can either be a code from a campaign or a specific voucher identified by a code.\n\n\n\n\n\nPublish multiple vouchers\n\nThis endpoint does not support the publishing of multiple vouchers from a single campaign. In case you want to publish multiple vouchers within a single publication, you need to use a [dedicated endpoint](/api-reference/publications/create-publication).\n\n\n\n\n\n\n\nAuto-update campaign\n\nIn case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use an **auto-update** campaign.\n\n\n\n## Example Request \n```markdown Publication Query \n/publications/create?campaign[name]=BlackFriday&customer[source_id]=Customer_Source_ID \n``` \n\n\n\n\nRequired\n\nQuery param `voucher` OR `campaign` MUST be filled out. If you provide both, `campaign` param will be skipped.\n\n",
"parameters": [
{
"schema": {
@@ -329,7 +329,7 @@
"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.\n\n## Pagination\n\n\n> 🚧 Important!\n>\n> 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.\n\n## Filter Query\n\nThe `filters` query parameter allows for joining multiple parameters with logical operators. The syntax looks as follows:\n\n\n```\n \"$in\"\n \"$not_in\"\n \"$is\"\n \"$is_not\"\n \"$has_value\"\n \"$is_unknown\"\n \"$contains\"\n \"$starts_with\"\n \"$ends_with\"\n \"$more_than\"\n \"$less_than\"\n \"$more_than_equal\"\n \"$less_than_equal\"\n```\n\n### Examples\n\n\n```url\nGET /v1/publications?filters[customer_id][conditions][$is][0]=cust_lUET6gRpO5Wxlg5p2j2gRCgL\n```\n\n```url\nGET /v1/publications?filters[customer_id][conditions][$in][0]=cust_lUET6gRpO5Wxlg5p2j2gRCgL&filters[customer_id][conditions][$in][1]=cust_aR7NfHusxT7PdTMAKMfWDXnc\n```\n\n```url\nGET /v1/publications?filters[customer_id][conditions][$is][0]=cust_lUET6gRpO5Wxlg5p2j2gRCgL&filters[customer_id][conditions][$is][1]=cust_aR7NfHusxT7PdTMAKMfWDXnc&filters[junction]=OR\n```",
+ "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.\n\n## Pagination\n\n\n\n\nImportant!\n\nIf 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.\n\n\n\n## Filter Query\n\nThe `filters` query parameter allows for joining multiple parameters with logical operators. The syntax looks as follows:\n\n\n```\n \"$in\"\n \"$not_in\"\n \"$is\"\n \"$is_not\"\n \"$has_value\"\n \"$is_unknown\"\n \"$contains\"\n \"$starts_with\"\n \"$ends_with\"\n \"$more_than\"\n \"$less_than\"\n \"$more_than_equal\"\n \"$less_than_equal\"\n```\n\n### Examples\n\n\n```url\nGET /v1/publications?filters[customer_id][conditions][$is][0]=cust_lUET6gRpO5Wxlg5p2j2gRCgL\n```\n\n```url\nGET /v1/publications?filters[customer_id][conditions][$in][0]=cust_lUET6gRpO5Wxlg5p2j2gRCgL&filters[customer_id][conditions][$in][1]=cust_aR7NfHusxT7PdTMAKMfWDXnc\n```\n\n```url\nGET /v1/publications?filters[customer_id][conditions][$is][0]=cust_lUET6gRpO5Wxlg5p2j2gRCgL&filters[customer_id][conditions][$is][1]=cust_aR7NfHusxT7PdTMAKMfWDXnc&filters[junction]=OR\n```",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -583,7 +583,7 @@
"Publications"
],
"summary": "Create Publication",
- "description": "This method selects vouchers that are suitable for publication, adds a publish entry and returns the publication.\n\nA voucher is suitable for publication when it's active and hasn't been published yet. \n\n\n> 🚧 Clearly define the source of the voucher\n>\n> You must clearly define which source you want to publish the voucher code from. It can either be a code from a campaign or a specific voucher identified by a code. \n\n> 🚧 Publish multiple vouchers\n> In case you want to publish multiple vouchers within a single publication, you need to specify the campaign name and number of vouchers you want to publish. \n\n\n> 📘 Auto-update campaign\n>\n> In case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use an **auto-update** campaign.",
+ "description": "This method selects vouchers that are suitable for publication, adds a publish entry and returns the publication.\n\nA voucher is suitable for publication when it's active and hasn't been published yet. \n\n\n\n\nClearly define the source of the voucher\n\nYou must clearly define which source you want to publish the voucher code from. It can either be a code from a campaign or a specific voucher identified by a code.\n\n\n\n\n\nPublish multiple vouchers\n\nIn case you want to publish multiple vouchers within a single publication, you need to specify the campaign name and number of vouchers you want to publish.\n\n\n\n\n\n\nAuto-update campaign\n\nIn case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use an **auto-update** campaign.\n\n",
"parameters": [
{
"schema": {
diff --git a/documentation/openapi/qualifications.json b/documentation/openapi/qualifications.json
index b0c822bfb..12a4cce64 100644
--- a/documentation/openapi/qualifications.json
+++ b/documentation/openapi/qualifications.json
@@ -42,7 +42,7 @@
"Qualifications"
],
"summary": "Check Eligibility",
- "description": "\n> 🚧 The Qualifications endpoint ignores the rules checking:\n> \n> - Limit of total redeemed discount amount per campaign\n> - Limit of total redemptions count per campaign\n> - Redemptions per customer\n> - Redemptions per customer in a campaign\n>- Total amount before discount \n\nGenerate a list of redeemables that are applicable in the context of the customer and order.\n\nThe new qualifications method is an improved version of [Campaign Qualifications](/api-reference/campaigns/examine-campaign-qualification), [Voucher Qualifications](/api-reference/vouchers/examine-voucher-qualification) API requests. The new qualification method introduces the following improvements:\n\n- Qualification results are returned faster\n- No limit on the number of returned redeemables\n- Introduces new qualification scenarios, not available in the previous version\n\n> 👍 Scenario Guide\n>\n> Read [the dedicated guide](/guides/checking-eligibility) to learn about some use cases this endpoint can cover.\n\n## Paging \n\nThe Voucherify Qualifications API request will return to you all of the redeemables available for the customer in batches of up to 50 redeemables per page. To get the next batch of redeemables, you need to use the `starting_after` cursor.\n\nTo process of paging the redeemables works in the following manner:\n\n- You send the first API request for Qualifications without the `starting_after` parameter.\n- The response will contain a parameter named `has_more`. If the parameter's value is set to `true`, then more redeemables are available.\n- Get the value of the `created_at` parameter of the last returned redeemable. The value of this parameter will be used as a cursor to retrieve the next page of redeemables.\n- Send another API request for Qualification with the `starting_after` parameter set to the value taken from the `created_at` parameter from the last returned redeemable.\n- Voucherify will return the next page of redeemables.\n- If the `has_more` parameter is set to `true`, apply steps 3-5 to get the next page of redeemables.\n\n## Caching\n\nQualification has a 5-minute cache for the returned results. If you change your campaign settings or validation rules, the changes will apply to qualification results after the cache refreshes.",
+ "description": "\n\n\nThe Qualifications endpoint ignores the rules checking:\n\n- Limit of total redeemed discount amount per campaign\n- Limit of total redemptions count per campaign\n- Redemptions per customer\n- Redemptions per customer in a campaign\n- Total amount before discount\n\n\n\nGenerate a list of redeemables that are applicable in the context of the customer and order.\n\nThe new qualifications method is an improved version of [Campaign Qualifications](/api-reference/campaigns/examine-campaign-qualification), [Voucher Qualifications](/api-reference/vouchers/examine-voucher-qualification) API requests. The new qualification method introduces the following improvements:\n\n- Qualification results are returned faster\n- No limit on the number of returned redeemables\n- Introduces new qualification scenarios, not available in the previous version\n\n\n\nScenario Guide\n\nRead [the dedicated guide](/guides/checking-eligibility) to learn about some use cases this endpoint can cover.\n\n\n\n## Paging \n\nThe Voucherify Qualifications API request will return to you all of the redeemables available for the customer in batches of up to 50 redeemables per page. To get the next batch of redeemables, you need to use the `starting_after` cursor.\n\nTo process of paging the redeemables works in the following manner:\n\n- You send the first API request for Qualifications without the `starting_after` parameter.\n- The response will contain a parameter named `has_more`. If the parameter's value is set to `true`, then more redeemables are available.\n- Get the value of the `created_at` parameter of the last returned redeemable. The value of this parameter will be used as a cursor to retrieve the next page of redeemables.\n- Send another API request for Qualification with the `starting_after` parameter set to the value taken from the `created_at` parameter from the last returned redeemable.\n- Voucherify will return the next page of redeemables.\n- If the `has_more` parameter is set to `true`, apply steps 3-5 to get the next page of redeemables.\n\n## Caching\n\nQualification has a 5-minute cache for the returned results. If you change your campaign settings or validation rules, the changes will apply to qualification results after the cache refreshes.",
"parameters": [],
"security": [
{
diff --git a/documentation/openapi/redemptions.json b/documentation/openapi/redemptions.json
index 32092dada..ca519575d 100644
--- a/documentation/openapi/redemptions.json
+++ b/documentation/openapi/redemptions.json
@@ -549,7 +549,7 @@
"Redemptions"
],
"summary": "Redeem Stackable Discounts",
- "description": "In the table below, you can see the logic the API follows to calculate discounts and amounts:\n\n| **Field** | **Calculation** | **Description** |\n|:---|:---|:---|\n| amount | N/A | This field shows the order amount before applying any discount |\n| total_amount | `total_amount` = `amount` - `total_discount_amount` | This field shows the order amount after applying all the discounts |\n| discount_amount | `discount_amount` = `previous_discount_amount` + `applied_discount_amount` | This field sums up all order-level discounts up to and including the specific discount being calculated for the stacked redemption. |\n| items_discount_amount | sum(items, i => i.discount_amount) | This field sums up all product-specific discounts |\n| total_discount_amount | `total_discount_amount` = `discount_amount` + `items_discount_amount` | This field sums up all order-level and all product-specific discounts |\n| applied_discount_amount | N/A | This field shows the order-level discount applied in a particular request |\n| items_applied_discount_amount | sum(items, i => i.applied_discount_amount) | This field sums up all product-specific discounts applied in a particular request |\n| total_applied_discount_amount | `total_applied_discount_amount` = `applied_discount_amount` + `items_applied_discount_amount` | This field sums up all order-level and all product-specific discounts applied in a particular request |\n\n\n\nAPI keys with a Merchant role can't use this endpoint.\n\n\n> 📘 Rollbacks\n>\n> You can't roll back a child redemption. When you call rollback on a stacked redemption, all child redemptions will be rolled back. You need to refer to a parent redemption ID in your [rollback request](/api-reference/redemptions/rollback-stackable-redemptions). \n\n\n> 📘 Also available on client-side\n>\n> This method is also accessible through public keys which you can use in client-side apps: mobile and web browser apps. Go to the dedicated [endpoint](/api-reference/client-side/redeem-stackable-discounts-client-side) to learn more.",
+ "description": "In the table below, you can see the logic the API follows to calculate discounts and amounts:\n\n| **Field** | **Calculation** | **Description** |\n|:---|:---|:---|\n| amount | N/A | This field shows the order amount before applying any discount |\n| total_amount | `total_amount` = `amount` - `total_discount_amount` | This field shows the order amount after applying all the discounts |\n| discount_amount | `discount_amount` = `previous_discount_amount` + `applied_discount_amount` | This field sums up all order-level discounts up to and including the specific discount being calculated for the stacked redemption. |\n| items_discount_amount | sum(items, i => i.discount_amount) | This field sums up all product-specific discounts |\n| total_discount_amount | `total_discount_amount` = `discount_amount` + `items_discount_amount` | This field sums up all order-level and all product-specific discounts |\n| applied_discount_amount | N/A | This field shows the order-level discount applied in a particular request |\n| items_applied_discount_amount | sum(items, i => i.applied_discount_amount) | This field sums up all product-specific discounts applied in a particular request |\n| total_applied_discount_amount | `total_applied_discount_amount` = `applied_discount_amount` + `items_applied_discount_amount` | This field sums up all order-level and all product-specific discounts applied in a particular request |\n\n\n\nAPI keys with a Merchant role can't use this endpoint.\n\n\n\n\nRollbacks\n\nYou can't roll back a child redemption. When you call rollback on a stacked redemption, all child redemptions will be rolled back. You need to refer to a parent redemption ID in your [rollback request](/api-reference/redemptions/rollback-stackable-redemptions).\n\n\n\n\n\n\nAlso available on client-side\n\nThis method is also accessible through public keys which you can use in client-side apps: mobile and web browser apps. Go to the dedicated [endpoint](/api-reference/client-side/redeem-stackable-discounts-client-side) to learn more.\n\n",
"parameters": [],
"security": [
{
@@ -2616,7 +2616,7 @@
"Redemptions"
],
"summary": "Redeem Voucher",
- "description": "\n> ❗️ Deprecated \n>\n> This endpoint represents the deprecated version of the API responsible for voucher redemption, and we do not recommend using it. The new [Stackable Discounts API](/api-reference/redemptions/redeem-stackable-discounts) introduces additional features and improvements while maintaining backward compatibility, including applying a combination of coupon codes and promotion tiers. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint. \n\nTo redeem a voucher, you create a redemption object. It increments the redemption counter and updates the history of the voucher. \n\n## How discounts and order amounts are calculated in the API response?\n\nIn the table below, you can see the logic the API follows to calculate discounts and amounts:\n\n| **Field** | **Calculation** | **Description** |\n|:---|:---|:---|\n| amount | N/A | This field shows the order amount before applying any discount |\n| total_amount | total_amount = amount - total_discount_amount | This field shows the order amount after applying all the discounts |\n| discount_amount | discount_amount = previous_discount_amount + applied_discount_amount | This field sums up all order-level discounts applied to a patricular order |\n| items_discount_amount | sum(items, i => i.discount_amount) | This field sums up all product-specific discounts applied to this order |\n| total_discount_amount | total_discount_amount = discount_amount + items_discount_amount | This field sums up all order-level and all product-specific discounts applied to this order |\n| applied_discount_amount | N/A | This field shows order-level discount applied in a particular request |\n| items_applied_discount_amount | sum(items, i => i.applied_discount_amount) | This field sums up all product-specific discounts applied in a particular request |\n| total_applied_discount_amount | total_applied_discount_amount = applied_discount_amount + items_applied_discount_amount | This field sums up all order-level and all product-specific discounts applied in a particular request |",
+ "description": "\n\n\nDeprecated\n\nThis endpoint represents the deprecated version of the API responsible for voucher redemption, and we do not recommend using it. The new [Stackable Discounts API](/api-reference/redemptions/redeem-stackable-discounts) introduces additional features and improvements while maintaining backward compatibility, including applying a combination of coupon codes and promotion tiers. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint.\n\n\n\nTo redeem a voucher, you create a redemption object. It increments the redemption counter and updates the history of the voucher. \n\n## How discounts and order amounts are calculated in the API response?\n\nIn the table below, you can see the logic the API follows to calculate discounts and amounts:\n\n| **Field** | **Calculation** | **Description** |\n|:---|:---|:---|\n| amount | N/A | This field shows the order amount before applying any discount |\n| total_amount | total_amount = amount - total_discount_amount | This field shows the order amount after applying all the discounts |\n| discount_amount | discount_amount = previous_discount_amount + applied_discount_amount | This field sums up all order-level discounts applied to a patricular order |\n| items_discount_amount | sum(items, i => i.discount_amount) | This field sums up all product-specific discounts applied to this order |\n| total_discount_amount | total_discount_amount = discount_amount + items_discount_amount | This field sums up all order-level and all product-specific discounts applied to this order |\n| applied_discount_amount | N/A | This field shows order-level discount applied in a particular request |\n| items_applied_discount_amount | sum(items, i => i.applied_discount_amount) | This field sums up all product-specific discounts applied in a particular request |\n| total_applied_discount_amount | total_applied_discount_amount = applied_discount_amount + items_applied_discount_amount | This field sums up all order-level and all product-specific discounts applied in a particular request |",
"parameters": [
{
"schema": {
@@ -3254,7 +3254,7 @@
"Redemptions"
],
"summary": "Rollback Redemption",
- "description": "Your business logic may include a case when you need to undo a redemption. You can revert a redemption by calling this API endpoint. This endpoint rolls back only single redemptions, meaning those that are not stacked. Stacked redemptions belong to a parent redemption. To roll back a parent redemption, including all of its individual redemptions, use the [POST Rollback Stackable Redemptions](/api-reference/redemptions/rollback-stackable-redemptions) \n>🚧 \n>You can roll back a redemption up to 3 months back. \n\n ## Effect \nThe operation \n- creates a rollback entry in voucher's redemption history (`redemption.redemption_entries`) and \n- gives 1 redemption back to the pool (decreases `redeemed_quantity` by 1). \n## Returned funds \nIn case of *gift card vouchers*, this method returns funds back according to the source redemption. In case of *loyalty card vouchers*, this method returns points back according to the source redemption.",
+ "description": "Your business logic may include a case when you need to undo a redemption. You can revert a redemption by calling this API endpoint. This endpoint rolls back only single redemptions, meaning those that are not stacked. Stacked redemptions belong to a parent redemption. To roll back a parent redemption, including all of its individual redemptions, use the [POST Rollback Stackable Redemptions](/api-reference/redemptions/rollback-stackable-redemptions) \n\n\nYou can roll back a redemption up to 3 months back.\n\n\n\n ## Effect \nThe operation \n- creates a rollback entry in voucher's redemption history (`redemption.redemption_entries`) and \n- gives 1 redemption back to the pool (decreases `redeemed_quantity` by 1). \n## Returned funds \nIn case of *gift card vouchers*, this method returns funds back according to the source redemption. In case of *loyalty card vouchers*, this method returns points back according to the source redemption.",
"parameters": [
{
"schema": {
@@ -4031,7 +4031,7 @@
"Redemptions"
],
"summary": "Redeem Promotion",
- "description": "\n> ❗️ Deprecated \n>\n> This endpoint represents the deprecated version of the API responsible for promotion tier redemption, and we do not recommend using it. The new [Stackable Discounts API](/api-reference/redemptions/redeem-stackable-discounts) introduces additional features and improvements while maintaining backward compatibility, including applying a combination of coupon codes and promotion tiers. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint. \n\nTo redeem a promotion, you create a redemption object passing a context.\n\nYou can retrieve a list of active promotions through the [Validate Promotions](/api-reference/validations/validate-promotion-tier) endpoint. That validation method will return a list of active promotion tiers identified by thier IDs. \n\n> 📘 Redemption rollback\n>\n> Do you need to undo a redemption? You can do it with [redemption rollback](/api-reference/redemptions/rollback-redemption).",
+ "description": "\n\n\nDeprecated\n\nThis endpoint represents the deprecated version of the API responsible for promotion tier redemption, and we do not recommend using it. The new [Stackable Discounts API](/api-reference/redemptions/redeem-stackable-discounts) introduces additional features and improvements while maintaining backward compatibility, including applying a combination of coupon codes and promotion tiers. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint.\n\n\n\nTo redeem a promotion, you create a redemption object passing a context.\n\nYou can retrieve a list of active promotions through the [Validate Promotions](/api-reference/validations/validate-promotion-tier) endpoint. That validation method will return a list of active promotion tiers identified by thier IDs. \n\n\n\nRedemption rollback\n\nDo you need to undo a redemption? You can do it with [redemption rollback](/api-reference/redemptions/rollback-redemption).\n\n",
"parameters": [],
"security": [
{
@@ -4470,7 +4470,7 @@
"Redemptions"
],
"summary": "Rollback Stackable Redemptions",
- "description": "Rollback a stackable redemption. When you roll back a stacked redemption, all child redemptions will be rolled back. Provide the parent redemption ID as the path parameter. However, you can use this endpoint to roll back a single redemption that does not have a parent, similarly to [POST Rollback redemption](/api-reference/redemptions/rollback-redemption).\n>🚧 \n> You can roll back a redemption up to 3 months back.",
+ "description": "Rollback a stackable redemption. When you roll back a stacked redemption, all child redemptions will be rolled back. Provide the parent redemption ID as the path parameter. However, you can use this endpoint to roll back a single redemption that does not have a parent, similarly to [POST Rollback redemption](/api-reference/redemptions/rollback-redemption).\n\n\nYou can roll back a redemption up to 3 months back.\n\n",
"parameters": [
{
"schema": {
diff --git a/documentation/openapi/referrals.json b/documentation/openapi/referrals.json
index b9de60538..5c9014ce5 100644
--- a/documentation/openapi/referrals.json
+++ b/documentation/openapi/referrals.json
@@ -62,7 +62,7 @@
"Referrals"
],
"summary": "Add Referral Code Holders with Campaign ID",
- "description": "Adds new holders to a referral code as **referees**. The data sent in the request is upserted into the customer data.\n\nIf the request returns an error even for one customer, you have to resend the whole request. Customer data is upserted if the data for all customers is correct.\n\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (`customers.modify`)\n- Publish Voucher (`vouchers.publish`)\n\n> 👍\n>To add a holder as a referrer, use the [Create Publication](/api-reference/publications/create-publication) endpoint.",
+ "description": "Adds new holders to a referral code as **referees**. The data sent in the request is upserted into the customer data.\n\nIf the request returns an error even for one customer, you have to resend the whole request. Customer data is upserted if the data for all customers is correct.\n\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (`customers.modify`)\n- Publish Voucher (`vouchers.publish`)\n\n\n\nTo add a holder as a referrer, use the [Create Publication](/api-reference/publications/create-publication) endpoint.\n\n",
"parameters": [],
"security": [
{
@@ -548,7 +548,7 @@
"Referrals"
],
"summary": "Add Referral Code Holders",
- "description": "Adds new holders to a referral code as **referees**. The data sent in the request is upserted into the customer data.\n\nIf the request returns an error even for one customer, you have to resend the whole request. Customer data is upserted if the data for all customers is correct.\n\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (`customers.modify`)\n- Publish Voucher (`vouchers.publish`)\n\n> 👍\n>To add a holder as a referrer, use the [Create Publication](/api-reference/publications/create-publication) endpoint.\n\n> 📘 Alternative endpoint\n>\n>This endpoint is an alternative to the [Add Referral Code Holders endpoint](/api-reference/referrals/add-referral-code-holders-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the `campaignId` as a path paremeter.",
+ "description": "Adds new holders to a referral code as **referees**. The data sent in the request is upserted into the customer data.\n\nIf the request returns an error even for one customer, you have to resend the whole request. Customer data is upserted if the data for all customers is correct.\n\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (`customers.modify`)\n- Publish Voucher (`vouchers.publish`)\n\n\n\nTo add a holder as a referrer, use the [Create Publication](/api-reference/publications/create-publication) endpoint.\n\n\n\n\n\nAlternative endpoint\n\nThis endpoint is an alternative to the [Add Referral Code Holders endpoint](/api-reference/referrals/add-referral-code-holders-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the `campaignId` as a path paremeter.\n\n",
"parameters": [],
"security": [
{
@@ -757,7 +757,7 @@
"Referrals"
],
"summary": "List Referral Code Holders",
- "description": "Retrieves the holders of the referral code from a referral campaign.\n\nTo use this endpoint, you must have the following permissions:\n\n- Read Customers (`customers.details.read`)\n\n> 📘 Alternative endpoint\n>\n>This endpoint is an alternative to the [List Member Holders endpoint](/api-reference/referrals/list-referral-code-holders-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the `campaignId` as a path paremeter.",
+ "description": "Retrieves the holders of the referral code from a referral campaign.\n\nTo use this endpoint, you must have the following permissions:\n\n- Read Customers (`customers.details.read`)\n\n\n\nAlternative endpoint\n\nThis endpoint is an alternative to the [List Member Holders endpoint](/api-reference/referrals/list-referral-code-holders-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the `campaignId` as a path paremeter.\n\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -901,7 +901,7 @@
"Referrals"
],
"summary": "Remove Referral Card Holder",
- "description": "Removes the holder from a referral card. You can remove a referee only.\n\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (`customers.modify`)\n- Publish Voucher (`vouchers.publish`)\n\n> 📘 Alternative endpoint\n>\n>This endpoint is an alternative to the [Remove Referral Card Holder endpoint](/api-reference/referrals/remove-referral-card-holder-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the `campaignId` as a path paremeter.",
+ "description": "Removes the holder from a referral card. You can remove a referee only.\n\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (`customers.modify`)\n- Publish Voucher (`vouchers.publish`)\n\n\n\nAlternative endpoint\n\nThis endpoint is an alternative to the [Remove Referral Card Holder endpoint](/api-reference/referrals/remove-referral-card-holder-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the `campaignId` as a path paremeter.\n\n",
"parameters": [],
"security": [
{
diff --git a/documentation/openapi/segments.json b/documentation/openapi/segments.json
index 7f4683aa6..7dffefdf8 100644
--- a/documentation/openapi/segments.json
+++ b/documentation/openapi/segments.json
@@ -328,7 +328,7 @@
"Segments"
],
"summary": "Create Segment",
- "description": "Create a customer segment.\n\n> 🚧 Limit on static segments\n>\n> There is a cap on the number of customers that you can assign to a static segment: **20,000**. If you would like to create a bigger segment, then you can use the unlimited `auto-update` or `passive` segment instead and use some customer metadata to build this segment.\n\n> 🚧 Limit on Active and Passive segments\n>\n> You can create a maximum of 100 passive and active segments.",
+ "description": "Create a customer segment.\n\n\n\nLimit on static segments\n\nThere is a cap on the number of customers that you can assign to a static segment: **20,000**. If you would like to create a bigger segment, then you can use the unlimited `auto-update` or `passive` segment instead and use some customer metadata to build this segment.\n\n\n\n\n\nLimit on Active and Passive segments\n\nYou can create a maximum of 100 passive and active segments.\n\n",
"parameters": [],
"security": [
{
diff --git a/documentation/openapi/templates.json b/documentation/openapi/templates.json
index f12685250..b21861aaf 100644
--- a/documentation/openapi/templates.json
+++ b/documentation/openapi/templates.json
@@ -42,7 +42,7 @@
"Templates"
],
"summary": "List Campaign Templates",
- "description": "Lists all campaign templates available in the project.\n\n> 📘 Campaign Templates – Documentation\n>\n>Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Lists all campaign templates available in the project.\n\n\n\nCampaign Templates – Documentation\n\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -141,7 +141,7 @@
"Templates"
],
"summary": "Create Campaign Template",
- "description": "Creates a template for a discount or gift campaign, or a promotion tier.\n\nA template stores campaign configuration **without** the following details:\n- Campaign name\n- Category\n- Code count\n\nThe following elements are not supported by campaign templates:\n- Redeeming API keys\n- Redeeming users\n- Customer loyalty tier\n- Static segments\n\n> 👍 Promotion Tiers and Campaign Templates\n>\n>You can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the `DISCOUNT_COUPON` type. You can use this template to create:\n>- [Discount campaign](/api-reference/templates/create-campaign-from-template),\n>- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template).\n\n> 📘 Campaign Templates – Documentation\n>\n>Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Creates a template for a discount or gift campaign, or a promotion tier.\n\nA template stores campaign configuration **without** the following details:\n- Campaign name\n- Category\n- Code count\n\nThe following elements are not supported by campaign templates:\n- Redeeming API keys\n- Redeeming users\n- Customer loyalty tier\n- Static segments\n\n\n\nPromotion Tiers and Campaign Templates\n\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the `DISCOUNT_COUPON` type. You can use this template to create:\n\n- [Discount campaign](/api-reference/templates/create-campaign-from-template),\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template).\n\n\n\n\n\nCampaign Templates – Documentation\n\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n\n",
"parameters": [],
"security": [
{
@@ -262,7 +262,7 @@
"Templates"
],
"summary": "Get Campaign Template",
- "description": "Retrieves a campaign template available in the project.\n\n> 📘 Campaign Templates – Documentation\n>\n>Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Retrieves a campaign template available in the project.\n\n\n\nCampaign Templates – Documentation\n\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n\n",
"parameters": [
{
"schema": {
@@ -342,7 +342,7 @@
"Templates"
],
"summary": "Update Campaign Template",
- "description": "Updates the name or description of the campaign template.\n\n> 📘 Campaign Templates – Documentation\n>\n>Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Updates the name or description of the campaign template.\n\n\n\nCampaign Templates – Documentation\n\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n\n",
"parameters": [],
"security": [
{
@@ -466,7 +466,7 @@
"Templates"
],
"summary": "Delete Campaign Template",
- "description": "Deletes the campaign template permanently.\n\n> 📘 Campaign Templates – Documentation\n>\n>Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Deletes the campaign template permanently.\n\n\n\nCampaign Templates – Documentation\n\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n\n",
"parameters": [],
"security": [
{
@@ -528,7 +528,7 @@
"Templates"
],
"summary": "Create Campaign From Template",
- "description": "Creates a campaign out of a campaign template.\n\nTo create a campaign, you need to provide the name in the request, while other fields are optional. If no other fields are sent, the configuration from the template will be used.\n\nYou can send new values of the fields listed below to replace the settings saved in the template. However, you cannot assign an existing validation rule or create a new one in the request. If the template has a validation rule, a new validation rule is always created for the campaign. When the campaign has been created, then you can:\n- [Update the validation rule](/api-reference/validation-rules/update-validation-rule),\n- [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment),\n- [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments).\n\n> 👍 Promotion Tiers and Campaign Templates\n>\n>You can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the `DISCOUNT_COUPON` type. You can use this template to create:\n>- [Discount campaign](/api-reference/templates/create-campaign-from-template)\n>- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template)\n\n> 📘 Campaign Templates – Documentation\n>\n>Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Creates a campaign out of a campaign template.\n\nTo create a campaign, you need to provide the name in the request, while other fields are optional. If no other fields are sent, the configuration from the template will be used.\n\nYou can send new values of the fields listed below to replace the settings saved in the template. However, you cannot assign an existing validation rule or create a new one in the request. If the template has a validation rule, a new validation rule is always created for the campaign. When the campaign has been created, then you can:\n- [Update the validation rule](/api-reference/validation-rules/update-validation-rule),\n- [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment),\n- [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments).\n\n\n\nPromotion Tiers and Campaign Templates\n\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the `DISCOUNT_COUPON` type. You can use this template to create:\n\n- [Discount campaign](/api-reference/templates/create-campaign-from-template)\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template)\n\n\n\n\n\nCampaign Templates – Documentation\n\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n\n",
"parameters": [],
"security": [
{
@@ -740,7 +740,7 @@
"Templates"
],
"summary": "Add Promotion Tier From Template",
- "description": "Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign.\n\nTo add a promotion tier to a campaign, you need to provide the name in the request and the campaign ID. Other fields are optional. If no other fields are sent, the configuration from the template will be used.\n\nYou can send new values of the fields listed below to replace the settings saved in the template. However, you cannot assign an action or an existing validation rule or create a new one in the request. If the template has a validation rule, a new validation rule is always created for the promotion tier. When the promotion tier has been created, then you can:\n- [Update the validation rule](/api-reference/validation-rules/update-validation-rule),\n- [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment),\n- [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment).\n\n> 👍 Promotion Tiers and Campaign Templates\n>\n>You can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the `DISCOUNT_COUPON` type. You can use this template to create:\n>- [Discount campaign](/api-reference/templates/create-campaign-from-template)\n>- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template)\n\n> 📘 Campaign Templates – Documentation\n>\n>Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign.\n\nTo add a promotion tier to a campaign, you need to provide the name in the request and the campaign ID. Other fields are optional. If no other fields are sent, the configuration from the template will be used.\n\nYou can send new values of the fields listed below to replace the settings saved in the template. However, you cannot assign an action or an existing validation rule or create a new one in the request. If the template has a validation rule, a new validation rule is always created for the promotion tier. When the promotion tier has been created, then you can:\n- [Update the validation rule](/api-reference/validation-rules/update-validation-rule),\n- [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment),\n- [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment).\n\n\n\nPromotion Tiers and Campaign Templates\n\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the `DISCOUNT_COUPON` type. You can use this template to create:\n\n- [Discount campaign](/api-reference/templates/create-campaign-from-template)\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template)\n\n\n\n\n\nCampaign Templates – Documentation\n\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n\n",
"parameters": [],
"security": [
{
diff --git a/documentation/openapi/validation-rules.json b/documentation/openapi/validation-rules.json
index c18cd7442..5ee16b43b 100644
--- a/documentation/openapi/validation-rules.json
+++ b/documentation/openapi/validation-rules.json
@@ -274,7 +274,7 @@
"Validation Rules"
],
"summary": "Create Validation Rules",
- "description": "Create a validation rule.\n> 🚧 Managing validation rules\n>\n> It is recommended to [create or update validation rules](/personalize/create-validation-rules) in the Voucherify dashboard. The rule builder in the dashboard helps configuring the desired conditions in a convenient way. The API should not be used as a preferable way to create and manage validation rules.",
+ "description": "Create a validation rule.\n\n\nManaging validation rules\n\nIt is recommended to [create or update validation rules](/personalize/create-validation-rules) in the Voucherify dashboard. The rule builder in the dashboard helps configuring the desired conditions in a convenient way. The API should not be used as a preferable way to create and manage validation rules.\n\n",
"parameters": [],
"security": [
{
@@ -562,7 +562,7 @@
"Validation Rules"
],
"summary": "Update Validation Rule",
- "description": "Update validation rule parameters.\n> 🚧 Managing validation rules\n>\n> It is recommended to [create or update validation rules](/personalize/create-validation-rules) in the Voucherify dashboard. The rule builder in the dashboard helps configuring the desired conditions in a convenient way. The API should not be used as a preferable way to create and manage validation rules.",
+ "description": "Update validation rule parameters.\n\n\nManaging validation rules\n\nIt is recommended to [create or update validation rules](/personalize/create-validation-rules) in the Voucherify dashboard. The rule builder in the dashboard helps configuring the desired conditions in a convenient way. The API should not be used as a preferable way to create and manage validation rules.\n\n",
"parameters": [],
"security": [
{
diff --git a/documentation/openapi/validations.json b/documentation/openapi/validations.json
index ea2898aa6..cdca908ab 100644
--- a/documentation/openapi/validations.json
+++ b/documentation/openapi/validations.json
@@ -864,7 +864,7 @@
"Validations"
],
"summary": "Validate Voucher",
- "description": "\n> ❗️ Deprecated \n>\n> This endpoint represents the deprecated version of the API responsible for voucher validation, and we do not recommend using it. The new [Stackable Discounts API](/api-reference/validations/validate-stackable-discounts) introduces additional features and improvements while maintaining backward compatibility, including applying a combination of coupon codes and promotion tiers. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint. \n\nTo verify a voucher code given by a customer, you can use this method. It is designed for a server side integration, which means that is accessible only through private keys. \n\n\n> ❗️ Important \n>\n> This endpoint supports the validation of a single promo code. If you need to validate more than one incentive, you can use the [Stackable discounts API](/api-reference/validations/validate-stackable-discounts). The stacking discounts API lets you validate up to 30 incentives per call. Before integrating Voucherify, choose which validation endpoint you prefer to use.\n\n#### Gift Vouchers - validate Gift Card and control amount to redeem\nVoucherify also gives the possibility to create a gift card, which allows using credits to fulfill the order. A user can specify how many credits he wants to use from the gift card. The available balance of credits is counted based on policy rules attached to the Gift Voucher definition. \n\nThis operation returns information about the validity of the code. Moreover, it returns a hashed source identifier which can be used as a tracking ID in future calls.\n\nIf a validation session is established, then the session details will be returned as well. Read more about sessions [here](/guides/locking-validation-session).\n\nVoucher validation might fail because of one of these reasons:\n* `voucher not found` - voucher doesn't exist or was [deleted](/api-reference/vouchers/delete-voucher)\n* `voucher expired` - voucher is out of start date - expiration date time frame\n* `voucher is disabled` - learn more about a [disabled voucher](/api-reference/vouchers/disable-voucher)\n* `customer does not match segment rules` - learn more [customer tracking](/api-reference/customers/customer-object) \n* `order does not match validation rules` - learn more about [validation rules](/api-reference/validation-rules/validation-rule-object)",
+ "description": "\n\n\nDeprecated\n\nThis endpoint represents the deprecated version of the API responsible for voucher validation, and we do not recommend using it. The new [Stackable Discounts API](/api-reference/validations/validate-stackable-discounts) introduces additional features and improvements while maintaining backward compatibility, including applying a combination of coupon codes and promotion tiers. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint.\n\n\n\nTo verify a voucher code given by a customer, you can use this method. It is designed for a server side integration, which means that is accessible only through private keys. \n\n\n\n\nImportant\n\nThis endpoint supports the validation of a single promo code. If you need to validate more than one incentive, you can use the [Stackable discounts API](/api-reference/validations/validate-stackable-discounts). The stacking discounts API lets you validate up to 30 incentives per call. Before integrating Voucherify, choose which validation endpoint you prefer to use.\n\n\n\n#### Gift Vouchers - validate Gift Card and control amount to redeem\nVoucherify also gives the possibility to create a gift card, which allows using credits to fulfill the order. A user can specify how many credits he wants to use from the gift card. The available balance of credits is counted based on policy rules attached to the Gift Voucher definition. \n\nThis operation returns information about the validity of the code. Moreover, it returns a hashed source identifier which can be used as a tracking ID in future calls.\n\nIf a validation session is established, then the session details will be returned as well. Read more about sessions [here](/guides/locking-validation-session).\n\nVoucher validation might fail because of one of these reasons:\n* `voucher not found` - voucher doesn't exist or was [deleted](/api-reference/vouchers/delete-voucher)\n* `voucher expired` - voucher is out of start date - expiration date time frame\n* `voucher is disabled` - learn more about a [disabled voucher](/api-reference/vouchers/disable-voucher)\n* `customer does not match segment rules` - learn more [customer tracking](/api-reference/customers/customer-object) \n* `order does not match validation rules` - learn more about [validation rules](/api-reference/validation-rules/validation-rule-object)",
"parameters": [],
"security": [
{
@@ -2341,7 +2341,7 @@
"Validations"
],
"summary": "Validate Promotions",
- "description": "\n> ❗️ Deprecated \n>\n> This endpoint represents the deprecated version of the API responsible for qualification, and we do not recommend using it. The new [Qualifications API](/api-reference/qualifications/check-eligibility) introduces additional features and improvements while maintaining backward compatibility. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint. \n\n \n> ❗️ Limitation \n>\n> Only the first 150 most recent promotion tiers are checked for eligibility. Older promotion tiers are ignored and not returned. \n\n Use this method to get valid promotions for a given customer and order.\n\n### Advanced validation filters\n\nYou can narrow down a validation to a specific promotion ID or tier metadata.",
+ "description": "\n\n\nDeprecated\n\nThis endpoint represents the deprecated version of the API responsible for qualification, and we do not recommend using it. The new [Qualifications API](/api-reference/qualifications/check-eligibility) introduces additional features and improvements while maintaining backward compatibility. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint.\n\n\n\n \n\n\nLimitation\n\nOnly the first 150 most recent promotion tiers are checked for eligibility. Older promotion tiers are ignored and not returned.\n\n\n\n Use this method to get valid promotions for a given customer and order.\n\n### Advanced validation filters\n\nYou can narrow down a validation to a specific promotion ID or tier metadata.",
"parameters": [
{
"schema": {
@@ -4378,7 +4378,7 @@
"Validations"
],
"summary": "Validate Promotion Tier",
- "description": "\n> ❗️ Deprecated \n>\n> This endpoint represents the deprecated version of the API responsible for promotion tier redemption, and we do not recommend using it. The new [Stackable Discounts API](/api-reference/validations/validate-stackable-discounts) introduces additional features and improvements while maintaining backward compatibility, including applying a combination of coupon codes and promotion tiers. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint. \n\nTo verify whether the promotion tier discount can be applied to an order. This method is designed for server side integration which means that it is accessible only through private keys.",
+ "description": "\n\n\nDeprecated\n\nThis endpoint represents the deprecated version of the API responsible for promotion tier redemption, and we do not recommend using it. The new [Stackable Discounts API](/api-reference/validations/validate-stackable-discounts) introduces additional features and improvements while maintaining backward compatibility, including applying a combination of coupon codes and promotion tiers. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint.\n\n\n\nTo verify whether the promotion tier discount can be applied to an order. This method is designed for server side integration which means that it is accessible only through private keys.",
"parameters": [],
"security": [
{
@@ -4751,7 +4751,7 @@
},
"redeemables": {
"type": "array",
- "description": "Lists validation results of each redeemable. If `redeemables_application_mode` is `PARTIAL` in the `stacking_rules` object, all redeemables here will be `APPLICABLE`. Read more in [the Stacking rules article]/orchestrate/stacking-rules.",
+ "description": "Lists validation results of each redeemable. If `redeemables_application_mode` is `PARTIAL` in the `stacking_rules` object, all redeemables here will be `APPLICABLE`. Read more in [the Stacking rules article](/orchestrate/stacking-rules).",
"items": {
"title": "Validations Validate All Response Body Redeemables Item",
"oneOf": [
diff --git a/documentation/openapi/vouchers.json b/documentation/openapi/vouchers.json
index a768a78fd..61cec09a6 100644
--- a/documentation/openapi/vouchers.json
+++ b/documentation/openapi/vouchers.json
@@ -276,7 +276,7 @@
"Vouchers"
],
"summary": "Generate Random Code",
- "description": "Create a generic (standalone) vouchers. You can choose to create a `GIFT_VOUCHER`, a `DISCOUNT_VOUCHER`, or a `LOYALTY_CARD`. \n\nWhen you create a new voucher, you can specify a type to create it.\nCreating a new voucher will create a new generic (standalone) vouchers if no `campaign` name or `campaign_id` is provided. However, if an ID or name of a campaign with the `type` set to `STANDALONE` is provided, the voucher will be added to such campaign. In case of the loyalty card, a campaign name is required.\n\nYou can optionally use the `code` parameter to define a specific code or the `code_config` parameter to design rules for Voucherify API to create a random code. If neither of the two parameters are passed, then a random code is generated by the Voucherify API.\n\nThis method will return an error when trying to create a voucher that already exists.\n\n>🚧 Standalone Vouchers and Campaigns\n>\n>Generic (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. The vouchers created with POST Create voucher and POST Generate random code endpoints do not have a campaign attached, so the values for `campaign` and `campaign_id` are `null`.\n>\n>To create a generic (standalone) voucher with a `\"type\": \"STANDALONE\"`, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.",
+ "description": "Create a generic (standalone) vouchers. You can choose to create a `GIFT_VOUCHER`, a `DISCOUNT_VOUCHER`, or a `LOYALTY_CARD`. \n\nWhen you create a new voucher, you can specify a type to create it.\nCreating a new voucher will create a new generic (standalone) vouchers if no `campaign` name or `campaign_id` is provided. However, if an ID or name of a campaign with the `type` set to `STANDALONE` is provided, the voucher will be added to such campaign. In case of the loyalty card, a campaign name is required.\n\nYou can optionally use the `code` parameter to define a specific code or the `code_config` parameter to design rules for Voucherify API to create a random code. If neither of the two parameters are passed, then a random code is generated by the Voucherify API.\n\nThis method will return an error when trying to create a voucher that already exists.\n\n\n\nStandalone Vouchers and Campaigns\n\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. The vouchers created with POST Create voucher and POST Generate random code endpoints do not have a campaign attached, so the values for `campaign` and `campaign_id` are `null`.\n\nTo create a generic (standalone) voucher with a `\"type\": \"STANDALONE\"`, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.\n\n",
"parameters": [],
"security": [
{
@@ -2011,7 +2011,7 @@
"Vouchers"
],
"summary": "Create Voucher",
- "description": "Create a generic (standalone) voucher or a voucher in a campaign. You can choose to create a `GIFT_VOUCHER`, a `DISCOUNT_VOUCHER`, or a `LOYALTY_CARD`. The code path parameter can use all letters of the English alphabet, Arabic numerals and special characters.\n\nWhen you create a new voucher, you can specify a type to create it.\nIf no `campaign` name or `campaign_id` is provided, the new voucher will be a generic (standalone) one. However, if an ID or name of a campaign with the `type` set to `STANDALONE` is provided, the voucher will be added to this campaign. For a loyalty card, a campaign name or ID is required.\n\n>🚧 Standalone Vouchers and Campaigns\n>\n>Generic (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers created through The vouchers created with POST Create voucher and POST Generate random code endpoints do not have a campaign attached, so the values for `campaign` and `campaign_id` are `null`.\n>\n>To create a generic (standalone) voucher with a `\"type\": \"STANDALONE\"`, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.",
+ "description": "Create a generic (standalone) voucher or a voucher in a campaign. You can choose to create a `GIFT_VOUCHER`, a `DISCOUNT_VOUCHER`, or a `LOYALTY_CARD`. The code path parameter can use all letters of the English alphabet, Arabic numerals and special characters.\n\nWhen you create a new voucher, you can specify a type to create it.\nIf no `campaign` name or `campaign_id` is provided, the new voucher will be a generic (standalone) one. However, if an ID or name of a campaign with the `type` set to `STANDALONE` is provided, the voucher will be added to this campaign. For a loyalty card, a campaign name or ID is required.\n\n\n\nStandalone Vouchers and Campaigns\n\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers created through The vouchers created with POST Create voucher and POST Generate random code endpoints do not have a campaign attached, so the values for `campaign` and `campaign_id` are `null`.\n\nTo create a generic (standalone) voucher with a `\"type\": \"STANDALONE\"`, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.\n\n",
"parameters": [],
"security": [
{
@@ -2548,7 +2548,7 @@
"Vouchers"
],
"summary": "Enable Voucher",
- "description": "There are various times when you'll want to manage a voucher's accessibility. This can be done by two API methods for managing the voucher state - *enable* and *disable*. \n___\nThe method sets the voucher state to **active**. The voucher can be redeemed - only if the redemption occurs after the start date and the voucher is not expired.",
+ "description": "The method sets the voucher state to **active**. The voucher can be redeemed - only if the redemption occurs after the start date and the voucher is not expired.",
"parameters": [],
"security": [
{
@@ -2684,7 +2684,7 @@
"Vouchers"
],
"summary": "Disable Voucher",
- "description": "There are various times when you'll want to manage a voucher's accessibility. This can be done by two API methods for managing the voucher state - *enable* and *disable*. \n___\nThis method sets the voucher state to **inactive**. The voucher cannot be redeemed.",
+ "description": "This method sets the voucher state to **inactive**. The voucher cannot be redeemed.",
"parameters": [],
"security": [
{
@@ -3394,7 +3394,7 @@
"Vouchers"
],
"summary": "Import Vouchers",
- "description": "Import generic (standalone) vouchers and gift cards into the repository.\nYou can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. \n Also, the request can include up to **10 MB** of data.\n\n\n> 📘 Important notes\n>\n> - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z.\n> - Custom code attributes (not supported by-default) need to be added as code **metadata**.\n> - You **cannot import the same codes** to a single Voucherify Project.\n\nAny parameters not provided in the payload will be left blank or null.\n\nFor both **standalone discount vouchers and gift cards**, you can import the following fields: \n\n- code\n- category\n- active\n- type\n- start_date\n- expiration_date\n- redemption.quantity\n- additional_info\n- metadata\n\nFor **gift cards**, you can also import the following field:\n\n- gift.amount\n\nFor **discount vouchers**, you can import the `discount` object. The object will slightly vary depending on the type of discount. Each discount type **requires** the `type` to be defined in the import.\n\n| **Discount Type** | **Required fields** |\n|:---|:---|\n| Amount | amount_off, effect |\n| Percent | percent_off, effect |\n| Fixed | fixed_amount, effect |\n| Unit - One item | unit_off, unit_type, effect |\n| Unit - Multiple items | unit_off, unit_type, effect |\n| Shipping | unit_off, unit_type, effect |\n\nFields other than the ones listed above won't be imported. Even if provided, they will be silently skipped.\n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).\n\n>🚧 Standalone Vouchers and Campaigns\n>\n>Generic (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers imported through the dashboard in the Vouchers section or through the API do not have a campaign attached, so the values for `campaign` and `campaign_id` are `null`.\n>\n>To create a generic (standalone) voucher with a `\"type\": \"STANDALONE\"`, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.",
+ "description": "Import generic (standalone) vouchers and gift cards into the repository.\nYou can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. \n Also, the request can include up to **10 MB** of data.\n\n\n\n\nImportant notes\n\n- **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z.\n- Custom code attributes (not supported by-default) need to be added as code **metadata**.\n- You **cannot import the same codes** to a single Voucherify Project.\n\n\n\nAny parameters not provided in the payload will be left blank or null.\n\nFor both **standalone discount vouchers and gift cards**, you can import the following fields: \n\n- code\n- category\n- active\n- type\n- start_date\n- expiration_date\n- redemption.quantity\n- additional_info\n- metadata\n\nFor **gift cards**, you can also import the following field:\n\n- gift.amount\n\nFor **discount vouchers**, you can import the `discount` object. The object will slightly vary depending on the type of discount. Each discount type **requires** the `type` to be defined in the import.\n\n| **Discount Type** | **Required fields** |\n|:---|:---|\n| Amount | amount_off, effect |\n| Percent | percent_off, effect |\n| Fixed | fixed_amount, effect |\n| Unit - One item | unit_off, unit_type, effect |\n| Unit - Multiple items | unit_off, unit_type, effect |\n| Shipping | unit_off, unit_type, effect |\n\nFields other than the ones listed above won't be imported. Even if provided, they will be silently skipped.\n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).\n\n\n\nStandalone Vouchers and Campaigns\n\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers imported through the dashboard in the Vouchers section or through the API do not have a campaign attached, so the values for `campaign` and `campaign_id` are `null`.\n\nTo create a generic (standalone) voucher with a `\"type\": \"STANDALONE\"`, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.\n\n",
"parameters": [],
"security": [
{
@@ -3673,7 +3673,7 @@
"Vouchers"
],
"summary": "Import Vouchers using CSV",
- "description": "Import generic (standalone) vouchers into the repository using a CSV file.\n\nThe CSV file has to include headers in the first line. All properties listed in the file headers that cannot be mapped to standard voucher fields will be added to the metadata object.\nYou can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. \n Also, the request can include a max. **10 MB** CSV file.\n\nYou can find an example CSV file [here](/build/discount-code-import).\n___\n\n```cURL cURL example\ncurl -X **POST** \\\n https://api.voucherify.io/v1/vouchers/importCSV \\\n -F file=@/path/to/vouchers.csv \\\n -F webhooks_enable=true\\\n -H \"X-App-Id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\" \\\n -H \"X-App-Token: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"\n```\n\n\n\n> 📘 Standard voucher fields mapping\n>\n> - Go to the [import vouchers](/api-reference/vouchers/import-vouchers) endpoint to see all standard CSV fields description (body params section).\n> - Supported CSV file headers: Code,Voucher Type,Value,Discount Type,Category,Start Date,Expiration Date,Redemption Limit,Redeemed Quantity, Redeemed Amount,Active,Additional Info,Custom Metadata Property Name\n>- **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. \n> - `YYYY-MM-DD`\n> - `YYYY-MM-DDTHH`\n> - `YYYY-MM-DDTHH:mm`\n> - `YYYY-MM-DDTHH:mm:ss`\n> - `YYYY-MM-DDTHH:mm:ssZ`\n> - `YYYY-MM-DDTHH:mm:ssZ`\n> - `YYYY-MM-DDTHH:mm:ss.SSSZ`\n> - Custom code attributes (not supported by-default) need to be added as code **metadata**.\n> - You **cannot import the same codes** to a single Voucherify project.\n> - You can, however, upload the same codes to update them.\n\n\n\n> 📘 Categories\n>\n> In the structure representing your data, you can define a category that the voucher belongs to. You can later use the category of a voucher to group and search by specific criteria in the Dashboard and using the [List Vouchers](/api-reference/vouchers/list-vouchers) endpoint.\n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).\n\nYou can pass the `webhooks_enable=true` parameter to trigger a webhook sendout for created or updated vouchers. Configure the [respective webhooks](/api-reference/introduction-to-webhooks) in Project settings. For updated webhooks, a webhook is sent even if the voucher hasn't been changed in the CSV file.\n\n>🚧 Generic (standalone) vouchers and campaigns\n>\n>Generic (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers imported through the dashboard in the Vouchers section or through the API do not have a campaign attached, so the values for `campaign` and `campaign_id` are `null`.",
+ "description": "Import generic (standalone) vouchers into the repository using a CSV file.\n\nThe CSV file has to include headers in the first line. All properties listed in the file headers that cannot be mapped to standard voucher fields will be added to the metadata object.\nYou can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. \n Also, the request can include a max. **10 MB** CSV file.\n\nYou can find an example CSV file [here](/build/discount-code-import).\n___\n\n```cURL cURL example\ncurl -X **POST** \\\n https://api.voucherify.io/v1/vouchers/importCSV \\\n -F file=@/path/to/vouchers.csv \\\n -F webhooks_enable=true\\\n -H \"X-App-Id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\" \\\n -H \"X-App-Token: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"\n```\n\n\n\n\n\nStandard voucher fields mapping\n\n- Go to the [import vouchers](/api-reference/vouchers/import-vouchers) endpoint to see all standard CSV fields description (body params section).\n- Supported CSV file headers: Code,Voucher Type,Value,Discount Type,Category,Start Date,Expiration Date,Redemption Limit,Redeemed Quantity, Redeemed Amount,Active,Additional Info,Custom Metadata Property Name\n- **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z.\n - `YYYY-MM-DD`\n - `YYYY-MM-DDTHH`\n - `YYYY-MM-DDTHH:mm`\n - `YYYY-MM-DDTHH:mm:ss`\n - `YYYY-MM-DDTHH:mm:ssZ`\n - `YYYY-MM-DDTHH:mm:ssZ`\n - `YYYY-MM-DDTHH:mm:ss.SSSZ`\n- Custom code attributes (not supported by-default) need to be added as code **metadata**.\n- You **cannot import the same codes** to a single Voucherify project.\n- You can, however, upload the same codes to update them.\n\n\n\n\n\n\n\nCategories\n\nIn the structure representing your data, you can define a category that the voucher belongs to. You can later use the category of a voucher to group and search by specific criteria in the Dashboard and using the [List Vouchers](/api-reference/vouchers/list-vouchers) endpoint.\n\n\n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).\n\nYou can pass the `webhooks_enable=true` parameter to trigger a webhook sendout for created or updated vouchers. Configure the [respective webhooks](/api-reference/introduction-to-webhooks) in Project settings. For updated webhooks, a webhook is sent even if the voucher hasn't been changed in the CSV file.\n\n\n\nGeneric (standalone) vouchers and campaigns\n\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers imported through the dashboard in the Vouchers section or through the API do not have a campaign attached, so the values for `campaign` and `campaign_id` are `null`.\n\n",
"parameters": [],
"security": [
{
@@ -3747,7 +3747,7 @@
"Vouchers"
],
"summary": "Update Vouchers in Bulk",
- "description": "Updates specific metadata parameters for each code, respectively, in one asynchronous operation.\n\nThe request can include up to **10 MB** of data.\n\nUpserts are not supported.\n\n> 🚧 Currently, only **metadata** updates are supported.\n\nThe response returns a unique asynchronous action ID. Use this ID in the query paramater of the [GET Async Action](/api-reference/async-actions/get-async-action) endpoint to check, e.g.:\n\n- The status of your request (in queue, in progress, done, or failed)\n\n- Resources that failed to be updated\n\n- The report file with details about the update\n\n\n\nThis API request starts a process that affects Voucherify data in bulk. In the case of small jobs (like bulk update), the request is put into a queue and processed when every other bulk request placed in the queue prior to this request is finished.",
+ "description": "Updates specific metadata parameters for each code, respectively, in one asynchronous operation.\n\nThe request can include up to **10 MB** of data.\n\nUpserts are not supported.\n\n\n\nCurrently, only **metadata** updates are supported.\n\n\n\nThe response returns a unique asynchronous action ID. Use this ID in the query paramater of the [GET Async Action](/api-reference/async-actions/get-async-action) endpoint to check, e.g.:\n\n- The status of your request (in queue, in progress, done, or failed)\n\n- Resources that failed to be updated\n\n- The report file with details about the update\n\n\n\nThis API request starts a process that affects Voucherify data in bulk. In the case of small jobs (like bulk update), the request is put into a queue and processed when every other bulk request placed in the queue prior to this request is finished.",
"parameters": [],
"security": [
{
@@ -3947,7 +3947,7 @@
"Vouchers"
],
"summary": "Release Validation Session",
- "description": "Manually release a validation session that has been set up for the voucher. This method undoes the actions that are explained in the [Locking validation session](/guides/locking-validation-session) guide. \n\n> 📘 Release session in the Dashboard\n>\n> You can also use the [Validations Manager](/optimize/validations-and-redemptions#sessions) in the Dashboard to unlock sessions.",
+ "description": "Manually release a validation session that has been set up for the voucher. This method undoes the actions that are explained in the [Locking validation session](/guides/locking-validation-session) guide. \n\n\n\nRelease session in the Dashboard\n\nYou can also use the [Validations Manager](/optimize/validations-and-redemptions#sessions) in the Dashboard to unlock sessions.\n\n",
"parameters": [],
"security": [
{
@@ -4010,7 +4010,7 @@
"Vouchers"
],
"summary": "Examine Voucher Qualification",
- "description": "\n> ❗️ Deprecated \n>\n> This endpoint represents the deprecated version of the API responsible for qualification, and we do not recommend using it. The new [Qualifications API](/api-reference/qualifications/check-eligibility) introduces additional features and improvements while maintaining backward compatibility. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint. \n\nDisplay vouchers qualified to the given customer and context (e.g., order, loyalty reward). Checks up to 50 **generic (standalone) vouchers**. \n\n> 👍 Prevailing assumption\n> You data is synced with Voucherify.\n\n ## How does this endpoint work? \n\n A property's value that does not meet a validation rule requirement will disqualify that particular voucher and it will not be listed in the results.\n\nAs a sample use case, you can imagine a requirement of displaying coupons available for the customer below the shopping cart. The customer can choose and apply the proposed voucher.\n\n ## What's excluded? \n\n The verification logic won't run against _coupons from bulk unique code campaigns_. For campaigns with multiple unique codes, you should run a [dedicated function](/api-reference/campaigns/examine-campaign-qualification) for searching and identifying qualified campaigns.\n\n ## Customizing the response\n\n> 📘 Query parameters let you sort and filter the returned vouchers\n>\n> Customize your response:\n> - If you only care about verifying a customer, use `audienceRulesOnly` set to `true`. \n>- If you want to limit the number of vouchers to be returned from the entire pool of eligible vouchers, set a `limit`. This will return vouchers sorted by `-created_at`, by default beginning with the most recent vouchers listed at the top.\n> - If you have a preference on the sorting order of the returned vouchers, you can use `order` to customize your response.\n\n ## Sending the request body payload\n\n\n ## Customer\n\nYou have the option of sending customer data via the dedicated `customer` object in the request body or a nested `customer` object within the `order` object.\n ### Available options:\n\n - You can either pass a customer `id` (Voucherify system generated),\n\n - a `source_id` (your own unique internal customer identifier e.g., email, database ID, CRM id), \n\n - a combination of the remaining parameters in the customer object, \n\n - a combination of customer `id` and remaining parameters excluding `source_id`, or\n\n - a combination of `source_id` and remaining parameters excluding `id`\n\n #### Note:\n\n For the latter two options, if you pass the `source_id` or the `id` with the other parameters, the logic will run independently for parameters explicitly passed in the request body versus those not explicitly passed in the request body. For _parameters not explicitly listed in the payload_, the verification will be against the data stored for that customer in the system. On the other hand, for any _parameter values explicitly passed in the payload_, the logic will ignore those stored in the system and will use the new values provided in the qualification request body. \n\n The qualification runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard. [Read more](/personalize/create-validation-rules). \n\n## Order\n\n ### Available options:\n\n - You can either pass an order `id` (Voucherify system generated),\n\n - a `source_id` (your own unique internal order identifier), \n\n - a combination of the remaining parameters in the order object, \n\n - a combination of order `id` and remaining parameters excluding `source_id`, or\n\n - a combination of `source_id` and remaining parameters excluding `id`\n\n #### Note:\n\n For the latter two options, if you pass the `source_id` or the `id` with the other parameters, the logic will run independently for parameters explicitly passed in the request body versus those not explicitly passed in the request body. For _parameters not explicitly listed in the payload_, the verification will be against the data stored for that order in the system. On the other hand, for any _parameter values explicitly passed in the payload_, the logic will ignore those stored in the system and will use the new values provided in the qualification request body. \n\n The qualification runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard. [Read more](/personalize/create-validation-rules).\n\n## Guidelines:\n\nTo validate against vouchers with total order `amount` requirements, make sure to include the total order `amount` in the order object or alternatively the `amount` for _every_ order item (the application will then add each amount to get the total and perform the qualification checks). If the total order `amount` is provided along with the individual items' amounts, the total order `amount` will take precedence.\n\n\n| **Case** | **Order-Level Parameter Included** | **Item-Level Parameter Included** | **Precedence** | **Calculation Result** | **Parameter included in payload accounts for checks against requirements in these validation rules** |\n|:---:|:---:|:---:|:---:|---|---|\n| **1** | `amount` | `amount` | Order-level | Uses order-level `amount` | - Total order amount |\n| **2** | | `amount` | Item-level | Sums each item-level `amount` | - Total order amount
- subtotal of matched items |\n| **3** | | `price`
`quantity` | Item-level | Multiplies each item's (`price` x `quantity`) to get item `amount` and then adds each item's `amount` to get total order `amount` | - Total order amount
- Subtotal of matched items
- Unit price of any matching order line
- Price of each item/Price of any item |\n| **4** | | `amount`
`price`
`quantity` | Item-level `amount` | Uses item-level `amount` for total order `amount` calculation, ignores (`price` x `quantity`) calculation | - Total order amount (uses item `amount` if provided or `price` x `quantity` for items without `amount` property; `amount` takes precedence in case all 3 properties are provided for an item)
- Subtotal of matched items (uses item `amount`, takes precedence if all 3 properties are provided)
- Unit price of any matching order line
- Price of each item/Price of any item |\n| **5** | `amount` | `amount`
`price`
`quantity` | Order-level | Uses order-level `amount` for total order `amount` | - Total order amount (uses order-level `amount`).
- Subtotal of matched items (see case **4** for details).
- Unit price of any matching order line
- Price of each item/Price of any item |",
+ "description": "\n\n\nDeprecated\n\nThis endpoint represents the deprecated version of the API responsible for qualification, and we do not recommend using it. The new [Qualifications API](/api-reference/qualifications/check-eligibility) introduces additional features and improvements while maintaining backward compatibility. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint.\n\n\n\nDisplay vouchers qualified to the given customer and context (e.g., order, loyalty reward). Checks up to 50 **generic (standalone) vouchers**. \n\n\n\nPrevailing assumption\n\nYou data is synced with Voucherify.\n\n\n\n ## How does this endpoint work? \n\n A property's value that does not meet a validation rule requirement will disqualify that particular voucher and it will not be listed in the results.\n\nAs a sample use case, you can imagine a requirement of displaying coupons available for the customer below the shopping cart. The customer can choose and apply the proposed voucher.\n\n ## What's excluded? \n\n The verification logic won't run against _coupons from bulk unique code campaigns_. For campaigns with multiple unique codes, you should run a [dedicated function](/api-reference/campaigns/examine-campaign-qualification) for searching and identifying qualified campaigns.\n\n ## Customizing the response\n\n\n\nQuery parameters let you sort and filter the returned vouchers\n\nCustomize your response:\n\n- If you only care about verifying a customer, use `audienceRulesOnly` set to `true`.\n- If you want to limit the number of vouchers to be returned from the entire pool of eligible vouchers, set a `limit`. This will return vouchers sorted by `-created_at`, by default beginning with the most recent vouchers listed at the top.\n- If you have a preference on the sorting order of the returned vouchers, you can use `order` to customize your response.\n\n\n\n ## Sending the request body payload\n\n\n ## Customer\n\nYou have the option of sending customer data via the dedicated `customer` object in the request body or a nested `customer` object within the `order` object.\n ### Available options:\n\n - You can either pass a customer `id` (Voucherify system generated),\n\n - a `source_id` (your own unique internal customer identifier e.g., email, database ID, CRM id), \n\n - a combination of the remaining parameters in the customer object, \n\n - a combination of customer `id` and remaining parameters excluding `source_id`, or\n\n - a combination of `source_id` and remaining parameters excluding `id`\n\n #### Note:\n\n For the latter two options, if you pass the `source_id` or the `id` with the other parameters, the logic will run independently for parameters explicitly passed in the request body versus those not explicitly passed in the request body. For _parameters not explicitly listed in the payload_, the verification will be against the data stored for that customer in the system. On the other hand, for any _parameter values explicitly passed in the payload_, the logic will ignore those stored in the system and will use the new values provided in the qualification request body. \n\n The qualification runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard. [Read more](/personalize/create-validation-rules). \n\n## Order\n\n ### Available options:\n\n - You can either pass an order `id` (Voucherify system generated),\n\n - a `source_id` (your own unique internal order identifier), \n\n - a combination of the remaining parameters in the order object, \n\n - a combination of order `id` and remaining parameters excluding `source_id`, or\n\n - a combination of `source_id` and remaining parameters excluding `id`\n\n #### Note:\n\n For the latter two options, if you pass the `source_id` or the `id` with the other parameters, the logic will run independently for parameters explicitly passed in the request body versus those not explicitly passed in the request body. For _parameters not explicitly listed in the payload_, the verification will be against the data stored for that order in the system. On the other hand, for any _parameter values explicitly passed in the payload_, the logic will ignore those stored in the system and will use the new values provided in the qualification request body. \n\n The qualification runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard. [Read more](/personalize/create-validation-rules).\n\n## Guidelines:\n\nTo validate against vouchers with total order `amount` requirements, make sure to include the total order `amount` in the order object or alternatively the `amount` for _every_ order item (the application will then add each amount to get the total and perform the qualification checks). If the total order `amount` is provided along with the individual items' amounts, the total order `amount` will take precedence.\n\n\n| **Case** | **Order-Level Parameter Included** | **Item-Level Parameter Included** | **Precedence** | **Calculation Result** | **Parameter included in payload accounts for checks against requirements in these validation rules** |\n|:---:|:---:|:---:|:---:|---|---|\n| **1** | `amount` | `amount` | Order-level | Uses order-level `amount` | - Total order amount |\n| **2** | | `amount` | Item-level | Sums each item-level `amount` | - Total order amount
- subtotal of matched items |\n| **3** | | `price`
`quantity` | Item-level | Multiplies each item's (`price` x `quantity`) to get item `amount` and then adds each item's `amount` to get total order `amount` | - Total order amount
- Subtotal of matched items
- Unit price of any matching order line
- Price of each item/Price of any item |\n| **4** | | `amount`
`price`
`quantity` | Item-level `amount` | Uses item-level `amount` for total order `amount` calculation, ignores (`price` x `quantity`) calculation | - Total order amount (uses item `amount` if provided or `price` x `quantity` for items without `amount` property; `amount` takes precedence in case all 3 properties are provided for an item)
- Subtotal of matched items (uses item `amount`, takes precedence if all 3 properties are provided)
- Unit price of any matching order line
- Price of each item/Price of any item |\n| **5** | `amount` | `amount`
`price`
`quantity` | Order-level | Uses order-level `amount` for total order `amount` | - Total order amount (uses order-level `amount`).
- Subtotal of matched items (see case **4** for details).
- Unit price of any matching order line
- Price of each item/Price of any item |",
"parameters": [
{
"$ref": "#/components/parameters/audienceRulesOnly"
diff --git a/documentation/optimize/create-validation-rules.mdx b/documentation/optimize/create-validation-rules.mdx
index 5f9c4c862..1968da279 100644
--- a/documentation/optimize/create-validation-rules.mdx
+++ b/documentation/optimize/create-validation-rules.mdx
@@ -5,6 +5,7 @@ keywords: ['create', 'validation', 'rule', 'manager']
---
import ValRule from '/snippets/accordions/accordion-related-features-val-rules.mdx'
+import Brackets from '/snippets/accordions/accordion-group-rules-and-brackets.mdx'
Validation rules define the conditions customers must meet to redeem incentives, earn loyalty points, or trigger distributions in Voucherify. All validation logic is configured in the **validation rule builder**.
@@ -96,6 +97,8 @@ The builder looks slightly different when it's opened in different places.
Use **brackets** to group conditions into complex logic. You can nest rules by dragging them into bracket groups.
+
+
diff --git a/documentation/snippets/accordions/accordion-group-rules-and-brackets.mdx b/documentation/snippets/accordions/accordion-group-rules-and-brackets.mdx
new file mode 100644
index 000000000..587413c4c
--- /dev/null
+++ b/documentation/snippets/accordions/accordion-group-rules-and-brackets.mdx
@@ -0,0 +1,33 @@
+The following actions are available when configuring rules and brackets.
+
+
+
+
+
+ After adding a rule, use the three-dot menu next to the rule name to manage rule actions.
+
+ Available rule actions:
+ - **Error message**: Defines a custom validation message for the selected rule.
+ - **Edit rule**: Updates the selected rule configuration.
+ - **Duplicate rule**: Creates a copy of the selected rule.
+ - **Add next rule**: Adds another rule after the selected rule.
+ - **Add next brackets**: Adds a new bracket group after the selected rule.
+ - **Remove rule**: Removes the selected rule from the spending configuration.
+ - **Surround with brackets**: Groups the selected rule inside brackets.
+
+
+
+
+
+ Use the three-dot menu on the right side of the bracket group to manage bracket actions.
+
+ Available bracket actions:
+ - **Add rule**: Adds a new rule inside the selected bracket group.
+ - **Add next rule**: Adds a new rule after the selected bracket group.
+ - **Add brackets**: Adds a nested bracket group inside the selected bracket group.
+ - **Add next brackets**: Adds a new bracket group after the selected bracket group.
+ - **Remove brackets and rules inside**: Removes the selected bracket group together with all rules inside it.
+
+
+
+
\ No newline at end of file
diff --git a/documentation/snippets/callouts/warning-legacy-loyalty.mdx b/documentation/snippets/callouts/warning-legacy-loyalty.mdx
new file mode 100644
index 000000000..df39951e8
--- /dev/null
+++ b/documentation/snippets/callouts/warning-legacy-loyalty.mdx
@@ -0,0 +1,11 @@
+
+
+Legacy loyalty
+
+This page describes the legacy loyalty program model.
+
+Legacy loyalty is in maintenance mode. Voucherify is not actively developing new features for this model, but your existing programs remain supported and critical issues will continue to receive fixes.
+
+The legacy loyalty program will be eventually sunset. If you have questions about what this means for your program, migration, or timelines, contact [Voucherify support](https://www.voucherify.io/contact-support "Contact Voucherify support form") or your Technical Account Manager.
+
+
diff --git a/documentation/snippets/metadata-configuration.mdx b/documentation/snippets/metadata-configuration.mdx
index 5bb843579..d2ba4db60 100644
--- a/documentation/snippets/metadata-configuration.mdx
+++ b/documentation/snippets/metadata-configuration.mdx
@@ -4,7 +4,7 @@ Add custom attributes for tracking, optimizing, or experimenting.
You can either:
- **Use an existing metadata schema**.
-- **Add unknown property**: metadata that isn't defined and won't be added to the schema.
-- **Add to schema**: define new metadata schema. Once saved, reload the schema to use the new metadata.
+- **Add unknown property**: Metadata that isn't defined and won't be added to the schema.
+- **Add to schema**: Define new metadata schema. Once saved, reload the schema to use the new metadata.
\ No newline at end of file
diff --git a/production/ENDPOINTS-COVERAGE.md b/production/ENDPOINTS-COVERAGE.md
index 4950fcbfc..09f755501 100644
--- a/production/ENDPOINTS-COVERAGE.md
+++ b/production/ENDPOINTS-COVERAGE.md
@@ -128,61 +128,61 @@
| /v1/rewards/{rewardId}/assignments/{assignmentId} | delete | Delete Reward Assignment | supported | |
| /v1/rewards/{rewardId}/assignments/{assignmentId} | get | Get Reward Assignment | supported | |
## Loyalties
-| endpoint | method | summary | is supported | is deprecated |
-| -------------------------------------------------------------------------- | ------ | ------------------------------------------------- | ------------------------------------ | ------------- |
-| /v1/loyalties | get | List Loyalty Campaigns | supported | |
-| /v1/loyalties | post | Create Loyalty Campaign | supported | |
-| /v1/loyalties/{campaignId} | get | Get Loyalty Campaign | supported | |
-| /v1/loyalties/{campaignId} | put | Update Loyalty Campaign | supported | |
-| /v1/loyalties/{campaignId} | delete | Delete Loyalty Campaign | supported | |
-| /v1/loyalties/{campaignId}/members | get | List Members | supported | |
-| /v1/loyalties/{campaignId}/members | post | Add Member | supported | |
-| /v1/loyalties/{campaignId}/members/{memberId} | get | Get Member with campaign ID | supported | |
-| /v1/loyalties/members/{memberId} | get | Get Member | supported | |
-| /v1/loyalties/{campaignId}/pending-points | get | List Campaign Pending Points | supported | |
-| /v1/loyalties/{campaignId}/members/{memberId}/pending-points | get | List Member Pending Points with campaign ID | supported | |
-| /v1/loyalties/members/{memberId}/pending-points | get | List Member Pending Points | supported | |
-| /v1/loyalties/members/{memberId}/pending-points/{pendingPointsId}/activate | post | Activate Member Pending Points | supported | |
-| /v1/loyalties/members/{memberId}/pending-points/{pendingPointsId}/balance | post | Adjust Member Pending Points | supported | |
-| /v1/loyalties/members/{memberId}/pending-points/{pendingPointsId}/cancel | post | Cancel Member Pending Points | supported | |
-| /v1/loyalties/{campaignId}/members/{memberId}/activity | get | List Member Activity with campaign ID | supported | |
-| /v1/loyalties/members/{memberId}/activity | get | List Member Activity | supported | |
-| /v1/loyalties/{campaignId}/members/{memberId}/balance | post | Adjust Loyalty Card Balance with campaign ID | supported | |
-| /v1/loyalties/members/{memberId}/balance | post | Adjust Loyalty Card Balance | supported | |
-| /v1/loyalties/{campaignId}/members/{memberId}/transfers | post | Transfer Loyalty Points | supported | |
-| /v1/loyalties/{campaignId}/transactions | get | List Loyalty Campaign Transactions | supported | |
-| /v1/loyalties/{campaignId}/transactions/export | post | Export Loyalty Campaign Transactions | supported | |
-| /v1/loyalties/{campaignId}/members/{memberId}/transactions | get | List Loyalty Card Transactions with campaign ID | supported | |
-| /v1/loyalties/members/{memberId}/transactions | get | List Loyalty Card Transactions | supported | |
-| /v1/loyalties/members/{memberId}/transactions/export | post | Export Loyalty Card Transactions | supported | |
-| /v1/loyalties/{campaignId}/members/{memberId}/transactions/export | post | Export Loyalty Card Transactions with campaign ID | supported | |
-| /v1/loyalties/{campaignId}/members/{memberId}/points-expiration | get | List Loyalty Card Point Expiration | supported | |
-| /v1/loyalties/{campaignId}/points-expiration/export | post | Export Loyalty Campaign Point Expiration | supported | |
-| /v1/loyalties/{campaignId}/earning-rules | get | List Earning Rules | supported | |
-| /v1/loyalties/{campaignId}/earning-rules | post | Create Earning Rule | supported | |
-| /v1/loyalties/{campaignId}/earning-rules/{earningRuleId} | get | Get Earning Rule | supported | |
-| /v1/loyalties/{campaignId}/earning-rules/{earningRuleId} | put | Update Earning Rule | supported | |
-| /v1/loyalties/{campaignId}/earning-rules/{earningRuleId} | delete | Delete Earning Rule | supported | |
-| /v1/loyalties/{campaignId}/earning-rules/{earningRuleId}/enable | post | Enable Earning Rule | supported | |
-| /v1/loyalties/{campaignId}/earning-rules/{earningRuleId}/disable | post | Disable Earning Rule | supported | |
-| /v1/loyalties/members/{memberId}/rewards | get | List Member Rewards | supported | |
-| /v1/loyalties/{campaignId}/reward-assignments/{assignmentId}/reward | get | Get Reward Details | supported | |
-| /v1/loyalties/{campaignId}/reward-assignments | get | List Reward Assignments with campaign ID | supported | |
-| /v1/loyalties/{campaignId}/rewards | get | List Campaign Rewards | supported | |
-| /v1/loyalties/{campaignId}/rewards | post | Create Loyalty Campaign Reward Assignment | supported | |
-| /v1/loyalties/{campaignId}/reward-assignments/{assignmentId} | get | Get Campaign Reward Assignments | supported | |
-| /v1/loyalties/{campaignId}/rewards/{assignmentId} | get | Get Campaign Reward Assignment | supported | |
-| /v1/loyalties/{campaignId}/rewards/{assignmentId} | put | Update Campaign Reward Assignment | supported | |
-| /v1/loyalties/{campaignId}/rewards/{assignmentId} | delete | Delete Campaign Reward Assignment | supported | |
-| /v1/loyalties/{campaignId}/members/{memberId}/redemption | post | Redeem Reward with campaign ID | supported | |
-| /v1/loyalties/members/{memberId}/redemption | post | Redeem Reward | supported | |
-| /v1/loyalties/{campaignId}/tiers | get | List Loyalty Tiers | supported | |
-| /v1/loyalties/{campaignId}/tiers | post | Create loyalty tiers | supported | |
-| /v1/loyalties/{campaignId}/tiers/{loyaltyTierId} | get | Get Loyalty Tier | supported | |
-| /v1/loyalties/members/{memberId}/tiers | get | List Member's Loyalty Tiers | supported | |
-| /v1/loyalties/{campaignId}/tiers/{loyaltyTierId}/earning-rules | get | List Loyalty Tier Earning Rules | supported | |
-| /v1/loyalties/{campaignId}/tiers/{loyaltyTierId}/rewards | get | List Loyalty Tier Rewards | supported | |
-| /v1/loyalties/{campaignId}/qualifications | post | Estimate loyalty points | | |
+| endpoint | method | summary | is supported | is deprecated |
+| -------------------------------------------------------------------------- | ------ | ------------------------------------------------- | ------------------------------------ | ------------------------------------ |
+| /v1/loyalties | get | List Loyalty Campaigns | supported | deprecated |
+| /v1/loyalties | post | Create Loyalty Campaign | supported | deprecated |
+| /v1/loyalties/{campaignId} | get | Get Loyalty Campaign | supported | deprecated |
+| /v1/loyalties/{campaignId} | put | Update Loyalty Campaign | supported | deprecated |
+| /v1/loyalties/{campaignId} | delete | Delete Loyalty Campaign | supported | deprecated |
+| /v1/loyalties/{campaignId}/members | get | List Members | supported | deprecated |
+| /v1/loyalties/{campaignId}/members | post | Add Member | supported | deprecated |
+| /v1/loyalties/{campaignId}/members/{memberId} | get | Get Member with campaign ID | supported | deprecated |
+| /v1/loyalties/members/{memberId} | get | Get Member | supported | deprecated |
+| /v1/loyalties/{campaignId}/pending-points | get | List Campaign Pending Points | supported | deprecated |
+| /v1/loyalties/{campaignId}/members/{memberId}/pending-points | get | List Member Pending Points with campaign ID | supported | deprecated |
+| /v1/loyalties/members/{memberId}/pending-points | get | List Member Pending Points | supported | deprecated |
+| /v1/loyalties/members/{memberId}/pending-points/{pendingPointsId}/activate | post | Activate Member Pending Points | supported | deprecated |
+| /v1/loyalties/members/{memberId}/pending-points/{pendingPointsId}/balance | post | Adjust Member Pending Points | supported | deprecated |
+| /v1/loyalties/members/{memberId}/pending-points/{pendingPointsId}/cancel | post | Cancel Member Pending Points | supported | deprecated |
+| /v1/loyalties/{campaignId}/members/{memberId}/activity | get | List Member Activity with campaign ID | supported | deprecated |
+| /v1/loyalties/members/{memberId}/activity | get | List Member Activity | supported | deprecated |
+| /v1/loyalties/{campaignId}/members/{memberId}/balance | post | Adjust Loyalty Card Balance with campaign ID | supported | deprecated |
+| /v1/loyalties/members/{memberId}/balance | post | Adjust Loyalty Card Balance | supported | deprecated |
+| /v1/loyalties/{campaignId}/members/{memberId}/transfers | post | Transfer Loyalty Points | supported | deprecated |
+| /v1/loyalties/{campaignId}/transactions | get | List Loyalty Campaign Transactions | supported | deprecated |
+| /v1/loyalties/{campaignId}/transactions/export | post | Export Loyalty Campaign Transactions | supported | deprecated |
+| /v1/loyalties/{campaignId}/members/{memberId}/transactions | get | List Loyalty Card Transactions with campaign ID | supported | deprecated |
+| /v1/loyalties/members/{memberId}/transactions | get | List Loyalty Card Transactions | supported | deprecated |
+| /v1/loyalties/members/{memberId}/transactions/export | post | Export Loyalty Card Transactions | supported | deprecated |
+| /v1/loyalties/{campaignId}/members/{memberId}/transactions/export | post | Export Loyalty Card Transactions with campaign ID | supported | deprecated |
+| /v1/loyalties/{campaignId}/members/{memberId}/points-expiration | get | List Loyalty Card Point Expiration | supported | deprecated |
+| /v1/loyalties/{campaignId}/points-expiration/export | post | Export Loyalty Campaign Point Expiration | supported | deprecated |
+| /v1/loyalties/{campaignId}/earning-rules | get | List Earning Rules | supported | deprecated |
+| /v1/loyalties/{campaignId}/earning-rules | post | Create Earning Rule | supported | deprecated |
+| /v1/loyalties/{campaignId}/earning-rules/{earningRuleId} | get | Get Earning Rule | supported | deprecated |
+| /v1/loyalties/{campaignId}/earning-rules/{earningRuleId} | put | Update Earning Rule | supported | deprecated |
+| /v1/loyalties/{campaignId}/earning-rules/{earningRuleId} | delete | Delete Earning Rule | supported | deprecated |
+| /v1/loyalties/{campaignId}/earning-rules/{earningRuleId}/enable | post | Enable Earning Rule | supported | deprecated |
+| /v1/loyalties/{campaignId}/earning-rules/{earningRuleId}/disable | post | Disable Earning Rule | supported | deprecated |
+| /v1/loyalties/members/{memberId}/rewards | get | List Member Rewards | supported | deprecated |
+| /v1/loyalties/{campaignId}/reward-assignments/{assignmentId}/reward | get | Get Reward Details | supported | deprecated |
+| /v1/loyalties/{campaignId}/reward-assignments | get | List Reward Assignments with campaign ID | supported | deprecated |
+| /v1/loyalties/{campaignId}/rewards | get | List Campaign Rewards | supported | deprecated |
+| /v1/loyalties/{campaignId}/rewards | post | Create Loyalty Campaign Reward Assignment | supported | deprecated |
+| /v1/loyalties/{campaignId}/reward-assignments/{assignmentId} | get | Get Campaign Reward Assignments | supported | deprecated |
+| /v1/loyalties/{campaignId}/rewards/{assignmentId} | get | Get Campaign Reward Assignment | supported | deprecated |
+| /v1/loyalties/{campaignId}/rewards/{assignmentId} | put | Update Campaign Reward Assignment | supported | deprecated |
+| /v1/loyalties/{campaignId}/rewards/{assignmentId} | delete | Delete Campaign Reward Assignment | supported | deprecated |
+| /v1/loyalties/{campaignId}/members/{memberId}/redemption | post | Redeem Reward with campaign ID | supported | deprecated |
+| /v1/loyalties/members/{memberId}/redemption | post | Redeem Reward | supported | deprecated |
+| /v1/loyalties/{campaignId}/tiers | get | List Loyalty Tiers | supported | deprecated |
+| /v1/loyalties/{campaignId}/tiers | post | Create loyalty tiers | supported | deprecated |
+| /v1/loyalties/{campaignId}/tiers/{loyaltyTierId} | get | Get Loyalty Tier | supported | deprecated |
+| /v1/loyalties/members/{memberId}/tiers | get | List Member's Loyalty Tiers | supported | deprecated |
+| /v1/loyalties/{campaignId}/tiers/{loyaltyTierId}/earning-rules | get | List Loyalty Tier Earning Rules | supported | deprecated |
+| /v1/loyalties/{campaignId}/tiers/{loyaltyTierId}/rewards | get | List Loyalty Tier Rewards | supported | deprecated |
+| /v1/loyalties/{campaignId}/qualifications | post | Estimate loyalty points | | deprecated |
## Customers
| endpoint | method | summary | is supported | is deprecated |
| --------------------------------------------- | ------ | ------------------------------------- | ------------------------------------ | ------------------------------------ |
diff --git a/production/readOnly-openAPI.json b/production/readOnly-openAPI.json
index e36fb876a..67a1cb8c5 100644
--- a/production/readOnly-openAPI.json
+++ b/production/readOnly-openAPI.json
@@ -30297,7 +30297,7 @@
},
"redeemables": {
"type": "array",
- "description": "Lists validation results of each redeemable. If `redeemables_application_mode` is `PARTIAL` in the `stacking_rules` object, all redeemables here will be `APPLICABLE`. Read more in [the Stacking rules article]/orchestrate/stacking-rules.",
+ "description": "Lists validation results of each redeemable. If `redeemables_application_mode` is `PARTIAL` in the `stacking_rules` object, all redeemables here will be `APPLICABLE`. Read more in [the Stacking rules article](/orchestrate/stacking-rules).",
"items": {
"title": "Validations Validate All Response Body Redeemables Item",
"oneOf": [
@@ -32550,7 +32550,7 @@
"Publications"
],
"summary": "Create Publication with GET",
- "description": "This method selects vouchers that are suitable for publication, adds a publish entry and returns the publication.\n\nA voucher is suitable for publication when it's active and hasn't been published yet.\n> ❗️ Limited access\n>\n> Access to this endpoint is limited. This endpoint is designed for specific integrations and the API keys need to be configured to access this endpoint. Navigate to the **Dashboard** → **Project Settings** → **General** → **Integration Keys** to set up a pair of API keys and use them to send the request. \n\n\n> 🚧 Clearly define the source of the voucher\n>\n> You must clearly define which source you want to publish the voucher code from. It can either be a code from a campaign or a specific voucher identified by a code. \n\n> 🚧 Publish multiple vouchers\n>\n> This endpoint does not support the publishing of multiple vouchers from a single campaign. In case you want to publish multiple vouchers within a single publication, you need to use a [dedicated endpoint](/api-reference/publications/create-publication). \n\n\n\n> 📘 Auto-update campaign\n>\n> In case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use an **auto-update** campaign. \n\n## Example Request \n```markdown Publication Query \n/publications/create?campaign[name]=BlackFriday&customer[source_id]=Customer_Source_ID \n``` \n\n\n> ❗️ Required \n>\n> Query param `voucher` OR `campaign` MUST be filled out. If you provide both, `campaign` param will be skipped.",
+ "description": "This method selects vouchers that are suitable for publication, adds a publish entry and returns the publication.\n\nA voucher is suitable for publication when it's active and hasn't been published yet.\n\n\nLimited access\n\nAccess to this endpoint is limited. This endpoint is designed for specific integrations and the API keys need to be configured to access this endpoint. Navigate to the **Dashboard** → **Project Settings** → **General** → **Integration Keys** to set up a pair of API keys and use them to send the request.\n\n\n\n\n\n\nClearly define the source of the voucher\n\nYou must clearly define which source you want to publish the voucher code from. It can either be a code from a campaign or a specific voucher identified by a code.\n\n\n\n\n\nPublish multiple vouchers\n\nThis endpoint does not support the publishing of multiple vouchers from a single campaign. In case you want to publish multiple vouchers within a single publication, you need to use a [dedicated endpoint](/api-reference/publications/create-publication).\n\n\n\n\n\n\n\nAuto-update campaign\n\nIn case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use an **auto-update** campaign.\n\n\n\n## Example Request \n```markdown Publication Query \n/publications/create?campaign[name]=BlackFriday&customer[source_id]=Customer_Source_ID \n``` \n\n\n\n\nRequired\n\nQuery param `voucher` OR `campaign` MUST be filled out. If you provide both, `campaign` param will be skipped.\n\n",
"parameters": [
{
"schema": {
@@ -32719,7 +32719,7 @@
"Qualifications"
],
"summary": "Check Eligibility",
- "description": "\n> 🚧 The Qualifications endpoint ignores the rules checking:\n> \n> - Limit of total redeemed discount amount per campaign\n> - Limit of total redemptions count per campaign\n> - Redemptions per customer\n> - Redemptions per customer in a campaign\n>- Total amount before discount \n\nGenerate a list of redeemables that are applicable in the context of the customer and order.\n\nThe new qualifications method is an improved version of [Campaign Qualifications](/api-reference/campaigns/examine-campaign-qualification), [Voucher Qualifications](/api-reference/vouchers/examine-voucher-qualification) API requests. The new qualification method introduces the following improvements:\n\n- Qualification results are returned faster\n- No limit on the number of returned redeemables\n- Introduces new qualification scenarios, not available in the previous version\n\n> 👍 Scenario Guide\n>\n> Read [the dedicated guide](/guides/checking-eligibility) to learn about some use cases this endpoint can cover.\n\n## Paging \n\nThe Voucherify Qualifications API request will return to you all of the redeemables available for the customer in batches of up to 50 redeemables per page. To get the next batch of redeemables, you need to use the `starting_after` cursor.\n\nTo process of paging the redeemables works in the following manner:\n\n- You send the first API request for Qualifications without the `starting_after` parameter.\n- The response will contain a parameter named `has_more`. If the parameter's value is set to `true`, then more redeemables are available.\n- Get the value of the `created_at` parameter of the last returned redeemable. The value of this parameter will be used as a cursor to retrieve the next page of redeemables.\n- Send another API request for Qualification with the `starting_after` parameter set to the value taken from the `created_at` parameter from the last returned redeemable.\n- Voucherify will return the next page of redeemables.\n- If the `has_more` parameter is set to `true`, apply steps 3-5 to get the next page of redeemables.\n\n## Caching\n\nQualification has a 5-minute cache for the returned results. If you change your campaign settings or validation rules, the changes will apply to qualification results after the cache refreshes.",
+ "description": "\n\n\nThe Qualifications endpoint ignores the rules checking:\n\n- Limit of total redeemed discount amount per campaign\n- Limit of total redemptions count per campaign\n- Redemptions per customer\n- Redemptions per customer in a campaign\n- Total amount before discount\n\n\n\nGenerate a list of redeemables that are applicable in the context of the customer and order.\n\nThe new qualifications method is an improved version of [Campaign Qualifications](/api-reference/campaigns/examine-campaign-qualification), [Voucher Qualifications](/api-reference/vouchers/examine-voucher-qualification) API requests. The new qualification method introduces the following improvements:\n\n- Qualification results are returned faster\n- No limit on the number of returned redeemables\n- Introduces new qualification scenarios, not available in the previous version\n\n\n\nScenario Guide\n\nRead [the dedicated guide](/guides/checking-eligibility) to learn about some use cases this endpoint can cover.\n\n\n\n## Paging \n\nThe Voucherify Qualifications API request will return to you all of the redeemables available for the customer in batches of up to 50 redeemables per page. To get the next batch of redeemables, you need to use the `starting_after` cursor.\n\nTo process of paging the redeemables works in the following manner:\n\n- You send the first API request for Qualifications without the `starting_after` parameter.\n- The response will contain a parameter named `has_more`. If the parameter's value is set to `true`, then more redeemables are available.\n- Get the value of the `created_at` parameter of the last returned redeemable. The value of this parameter will be used as a cursor to retrieve the next page of redeemables.\n- Send another API request for Qualification with the `starting_after` parameter set to the value taken from the `created_at` parameter from the last returned redeemable.\n- Voucherify will return the next page of redeemables.\n- If the `has_more` parameter is set to `true`, apply steps 3-5 to get the next page of redeemables.\n\n## Caching\n\nQualification has a 5-minute cache for the returned results. If you change your campaign settings or validation rules, the changes will apply to qualification results after the cache refreshes.",
"parameters": [],
"security": [
{
@@ -34282,7 +34282,7 @@
"Redemptions"
],
"summary": "Redeem Stackable Discounts",
- "description": "In the table below, you can see the logic the API follows to calculate discounts and amounts:\n\n| **Field** | **Calculation** | **Description** |\n|:---|:---|:---|\n| amount | N/A | This field shows the order amount before applying any discount |\n| total_amount | `total_amount` = `amount` - `total_discount_amount` | This field shows the order amount after applying all the discounts |\n| discount_amount | `discount_amount` = `previous_discount_amount` + `applied_discount_amount` | This field sums up all order-level discounts up to and including the specific discount being calculated for the stacked redemption. |\n| items_discount_amount | sum(items, i => i.discount_amount) | This field sums up all product-specific discounts |\n| total_discount_amount | `total_discount_amount` = `discount_amount` + `items_discount_amount` | This field sums up all order-level and all product-specific discounts |\n| applied_discount_amount | N/A | This field shows the order-level discount applied in a particular request |\n| items_applied_discount_amount | sum(items, i => i.applied_discount_amount) | This field sums up all product-specific discounts applied in a particular request |\n| total_applied_discount_amount | `total_applied_discount_amount` = `applied_discount_amount` + `items_applied_discount_amount` | This field sums up all order-level and all product-specific discounts applied in a particular request |\n\n\n\nAPI keys with a Merchant role can't use this endpoint.\n\n\n> 📘 Rollbacks\n>\n> You can't roll back a child redemption. When you call rollback on a stacked redemption, all child redemptions will be rolled back. You need to refer to a parent redemption ID in your [rollback request](/api-reference/redemptions/rollback-stackable-redemptions). \n\n\n> 📘 Also available on client-side\n>\n> This method is also accessible through public keys which you can use in client-side apps: mobile and web browser apps. Go to the dedicated [endpoint](/api-reference/client-side/redeem-stackable-discounts-client-side) to learn more.",
+ "description": "In the table below, you can see the logic the API follows to calculate discounts and amounts:\n\n| **Field** | **Calculation** | **Description** |\n|:---|:---|:---|\n| amount | N/A | This field shows the order amount before applying any discount |\n| total_amount | `total_amount` = `amount` - `total_discount_amount` | This field shows the order amount after applying all the discounts |\n| discount_amount | `discount_amount` = `previous_discount_amount` + `applied_discount_amount` | This field sums up all order-level discounts up to and including the specific discount being calculated for the stacked redemption. |\n| items_discount_amount | sum(items, i => i.discount_amount) | This field sums up all product-specific discounts |\n| total_discount_amount | `total_discount_amount` = `discount_amount` + `items_discount_amount` | This field sums up all order-level and all product-specific discounts |\n| applied_discount_amount | N/A | This field shows the order-level discount applied in a particular request |\n| items_applied_discount_amount | sum(items, i => i.applied_discount_amount) | This field sums up all product-specific discounts applied in a particular request |\n| total_applied_discount_amount | `total_applied_discount_amount` = `applied_discount_amount` + `items_applied_discount_amount` | This field sums up all order-level and all product-specific discounts applied in a particular request |\n\n\n\nAPI keys with a Merchant role can't use this endpoint.\n\n\n\n\nRollbacks\n\nYou can't roll back a child redemption. When you call rollback on a stacked redemption, all child redemptions will be rolled back. You need to refer to a parent redemption ID in your [rollback request](/api-reference/redemptions/rollback-stackable-redemptions).\n\n\n\n\n\n\nAlso available on client-side\n\nThis method is also accessible through public keys which you can use in client-side apps: mobile and web browser apps. Go to the dedicated [endpoint](/api-reference/client-side/redeem-stackable-discounts-client-side) to learn more.\n\n",
"parameters": [],
"security": [
{
@@ -34630,7 +34630,7 @@
"Vouchers"
],
"summary": "Generate Random Code",
- "description": "Create a generic (standalone) vouchers. You can choose to create a `GIFT_VOUCHER`, a `DISCOUNT_VOUCHER`, or a `LOYALTY_CARD`. \n\nWhen you create a new voucher, you can specify a type to create it.\nCreating a new voucher will create a new generic (standalone) vouchers if no `campaign` name or `campaign_id` is provided. However, if an ID or name of a campaign with the `type` set to `STANDALONE` is provided, the voucher will be added to such campaign. In case of the loyalty card, a campaign name is required.\n\nYou can optionally use the `code` parameter to define a specific code or the `code_config` parameter to design rules for Voucherify API to create a random code. If neither of the two parameters are passed, then a random code is generated by the Voucherify API.\n\nThis method will return an error when trying to create a voucher that already exists.\n\n>🚧 Standalone Vouchers and Campaigns\n>\n>Generic (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. The vouchers created with POST Create voucher and POST Generate random code endpoints do not have a campaign attached, so the values for `campaign` and `campaign_id` are `null`.\n>\n>To create a generic (standalone) voucher with a `\"type\": \"STANDALONE\"`, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.",
+ "description": "Create a generic (standalone) vouchers. You can choose to create a `GIFT_VOUCHER`, a `DISCOUNT_VOUCHER`, or a `LOYALTY_CARD`. \n\nWhen you create a new voucher, you can specify a type to create it.\nCreating a new voucher will create a new generic (standalone) vouchers if no `campaign` name or `campaign_id` is provided. However, if an ID or name of a campaign with the `type` set to `STANDALONE` is provided, the voucher will be added to such campaign. In case of the loyalty card, a campaign name is required.\n\nYou can optionally use the `code` parameter to define a specific code or the `code_config` parameter to design rules for Voucherify API to create a random code. If neither of the two parameters are passed, then a random code is generated by the Voucherify API.\n\nThis method will return an error when trying to create a voucher that already exists.\n\n\n\nStandalone Vouchers and Campaigns\n\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. The vouchers created with POST Create voucher and POST Generate random code endpoints do not have a campaign attached, so the values for `campaign` and `campaign_id` are `null`.\n\nTo create a generic (standalone) voucher with a `\"type\": \"STANDALONE\"`, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.\n\n",
"parameters": [],
"security": [
{
@@ -36269,7 +36269,7 @@
"Vouchers"
],
"summary": "Create Voucher",
- "description": "Create a generic (standalone) voucher or a voucher in a campaign. You can choose to create a `GIFT_VOUCHER`, a `DISCOUNT_VOUCHER`, or a `LOYALTY_CARD`. The code path parameter can use all letters of the English alphabet, Arabic numerals and special characters.\n\nWhen you create a new voucher, you can specify a type to create it.\nIf no `campaign` name or `campaign_id` is provided, the new voucher will be a generic (standalone) one. However, if an ID or name of a campaign with the `type` set to `STANDALONE` is provided, the voucher will be added to this campaign. For a loyalty card, a campaign name or ID is required.\n\n>🚧 Standalone Vouchers and Campaigns\n>\n>Generic (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers created through The vouchers created with POST Create voucher and POST Generate random code endpoints do not have a campaign attached, so the values for `campaign` and `campaign_id` are `null`.\n>\n>To create a generic (standalone) voucher with a `\"type\": \"STANDALONE\"`, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.",
+ "description": "Create a generic (standalone) voucher or a voucher in a campaign. You can choose to create a `GIFT_VOUCHER`, a `DISCOUNT_VOUCHER`, or a `LOYALTY_CARD`. The code path parameter can use all letters of the English alphabet, Arabic numerals and special characters.\n\nWhen you create a new voucher, you can specify a type to create it.\nIf no `campaign` name or `campaign_id` is provided, the new voucher will be a generic (standalone) one. However, if an ID or name of a campaign with the `type` set to `STANDALONE` is provided, the voucher will be added to this campaign. For a loyalty card, a campaign name or ID is required.\n\n\n\nStandalone Vouchers and Campaigns\n\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers created through The vouchers created with POST Create voucher and POST Generate random code endpoints do not have a campaign attached, so the values for `campaign` and `campaign_id` are `null`.\n\nTo create a generic (standalone) voucher with a `\"type\": \"STANDALONE\"`, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.\n\n",
"parameters": [],
"security": [
{
@@ -36781,7 +36781,7 @@
"Vouchers"
],
"summary": "Enable Voucher",
- "description": "There are various times when you'll want to manage a voucher's accessibility. This can be done by two API methods for managing the voucher state - *enable* and *disable*. \n___\nThe method sets the voucher state to **active**. The voucher can be redeemed - only if the redemption occurs after the start date and the voucher is not expired.",
+ "description": "The method sets the voucher state to **active**. The voucher can be redeemed - only if the redemption occurs after the start date and the voucher is not expired.",
"parameters": [],
"security": [
{
@@ -36892,7 +36892,7 @@
"Vouchers"
],
"summary": "Disable Voucher",
- "description": "There are various times when you'll want to manage a voucher's accessibility. This can be done by two API methods for managing the voucher state - *enable* and *disable*. \n___\nThis method sets the voucher state to **inactive**. The voucher cannot be redeemed.",
+ "description": "This method sets the voucher state to **inactive**. The voucher cannot be redeemed.",
"parameters": [],
"security": [
{
@@ -37502,7 +37502,7 @@
"Vouchers"
],
"summary": "Import Vouchers",
- "description": "Import generic (standalone) vouchers and gift cards into the repository.\nYou can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. \n Also, the request can include up to **10 MB** of data.\n\n\n> 📘 Important notes\n>\n> - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z.\n> - Custom code attributes (not supported by-default) need to be added as code **metadata**.\n> - You **cannot import the same codes** to a single Voucherify Project.\n\nAny parameters not provided in the payload will be left blank or null.\n\nFor both **standalone discount vouchers and gift cards**, you can import the following fields: \n\n- code\n- category\n- active\n- type\n- start_date\n- expiration_date\n- redemption.quantity\n- additional_info\n- metadata\n\nFor **gift cards**, you can also import the following field:\n\n- gift.amount\n\nFor **discount vouchers**, you can import the `discount` object. The object will slightly vary depending on the type of discount. Each discount type **requires** the `type` to be defined in the import.\n\n| **Discount Type** | **Required fields** |\n|:---|:---|\n| Amount | amount_off, effect |\n| Percent | percent_off, effect |\n| Fixed | fixed_amount, effect |\n| Unit - One item | unit_off, unit_type, effect |\n| Unit - Multiple items | unit_off, unit_type, effect |\n| Shipping | unit_off, unit_type, effect |\n\nFields other than the ones listed above won't be imported. Even if provided, they will be silently skipped.\n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).\n\n>🚧 Standalone Vouchers and Campaigns\n>\n>Generic (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers imported through the dashboard in the Vouchers section or through the API do not have a campaign attached, so the values for `campaign` and `campaign_id` are `null`.\n>\n>To create a generic (standalone) voucher with a `\"type\": \"STANDALONE\"`, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.",
+ "description": "Import generic (standalone) vouchers and gift cards into the repository.\nYou can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. \n Also, the request can include up to **10 MB** of data.\n\n\n\n\nImportant notes\n\n- **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z.\n- Custom code attributes (not supported by-default) need to be added as code **metadata**.\n- You **cannot import the same codes** to a single Voucherify Project.\n\n\n\nAny parameters not provided in the payload will be left blank or null.\n\nFor both **standalone discount vouchers and gift cards**, you can import the following fields: \n\n- code\n- category\n- active\n- type\n- start_date\n- expiration_date\n- redemption.quantity\n- additional_info\n- metadata\n\nFor **gift cards**, you can also import the following field:\n\n- gift.amount\n\nFor **discount vouchers**, you can import the `discount` object. The object will slightly vary depending on the type of discount. Each discount type **requires** the `type` to be defined in the import.\n\n| **Discount Type** | **Required fields** |\n|:---|:---|\n| Amount | amount_off, effect |\n| Percent | percent_off, effect |\n| Fixed | fixed_amount, effect |\n| Unit - One item | unit_off, unit_type, effect |\n| Unit - Multiple items | unit_off, unit_type, effect |\n| Shipping | unit_off, unit_type, effect |\n\nFields other than the ones listed above won't be imported. Even if provided, they will be silently skipped.\n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).\n\n\n\nStandalone Vouchers and Campaigns\n\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers imported through the dashboard in the Vouchers section or through the API do not have a campaign attached, so the values for `campaign` and `campaign_id` are `null`.\n\nTo create a generic (standalone) voucher with a `\"type\": \"STANDALONE\"`, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.\n\n",
"parameters": [],
"security": [
{
@@ -37779,7 +37779,7 @@
"Vouchers"
],
"summary": "Import Vouchers using CSV",
- "description": "Import generic (standalone) vouchers into the repository using a CSV file.\n\nThe CSV file has to include headers in the first line. All properties listed in the file headers that cannot be mapped to standard voucher fields will be added to the metadata object.\nYou can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. \n Also, the request can include a max. **10 MB** CSV file.\n\nYou can find an example CSV file [here](/build/discount-code-import).\n___\n\n```cURL cURL example\ncurl -X **POST** \\\n https://api.voucherify.io/v1/vouchers/importCSV \\\n -F file=@/path/to/vouchers.csv \\\n -F webhooks_enable=true\\\n -H \"X-App-Id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\" \\\n -H \"X-App-Token: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"\n```\n\n\n\n> 📘 Standard voucher fields mapping\n>\n> - Go to the [import vouchers](/api-reference/vouchers/import-vouchers) endpoint to see all standard CSV fields description (body params section).\n> - Supported CSV file headers: Code,Voucher Type,Value,Discount Type,Category,Start Date,Expiration Date,Redemption Limit,Redeemed Quantity, Redeemed Amount,Active,Additional Info,Custom Metadata Property Name\n>- **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. \n> - `YYYY-MM-DD`\n> - `YYYY-MM-DDTHH`\n> - `YYYY-MM-DDTHH:mm`\n> - `YYYY-MM-DDTHH:mm:ss`\n> - `YYYY-MM-DDTHH:mm:ssZ`\n> - `YYYY-MM-DDTHH:mm:ssZ`\n> - `YYYY-MM-DDTHH:mm:ss.SSSZ`\n> - Custom code attributes (not supported by-default) need to be added as code **metadata**.\n> - You **cannot import the same codes** to a single Voucherify project.\n> - You can, however, upload the same codes to update them.\n\n\n\n> 📘 Categories\n>\n> In the structure representing your data, you can define a category that the voucher belongs to. You can later use the category of a voucher to group and search by specific criteria in the Dashboard and using the [List Vouchers](/api-reference/vouchers/list-vouchers) endpoint.\n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).\n\nYou can pass the `webhooks_enable=true` parameter to trigger a webhook sendout for created or updated vouchers. Configure the [respective webhooks](/api-reference/introduction-to-webhooks) in Project settings. For updated webhooks, a webhook is sent even if the voucher hasn't been changed in the CSV file.\n\n>🚧 Generic (standalone) vouchers and campaigns\n>\n>Generic (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers imported through the dashboard in the Vouchers section or through the API do not have a campaign attached, so the values for `campaign` and `campaign_id` are `null`.",
+ "description": "Import generic (standalone) vouchers into the repository using a CSV file.\n\nThe CSV file has to include headers in the first line. All properties listed in the file headers that cannot be mapped to standard voucher fields will be added to the metadata object.\nYou can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. \n Also, the request can include a max. **10 MB** CSV file.\n\nYou can find an example CSV file [here](/build/discount-code-import).\n___\n\n```cURL cURL example\ncurl -X **POST** \\\n https://api.voucherify.io/v1/vouchers/importCSV \\\n -F file=@/path/to/vouchers.csv \\\n -F webhooks_enable=true\\\n -H \"X-App-Id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\" \\\n -H \"X-App-Token: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"\n```\n\n\n\n\n\nStandard voucher fields mapping\n\n- Go to the [import vouchers](/api-reference/vouchers/import-vouchers) endpoint to see all standard CSV fields description (body params section).\n- Supported CSV file headers: Code,Voucher Type,Value,Discount Type,Category,Start Date,Expiration Date,Redemption Limit,Redeemed Quantity, Redeemed Amount,Active,Additional Info,Custom Metadata Property Name\n- **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z.\n - `YYYY-MM-DD`\n - `YYYY-MM-DDTHH`\n - `YYYY-MM-DDTHH:mm`\n - `YYYY-MM-DDTHH:mm:ss`\n - `YYYY-MM-DDTHH:mm:ssZ`\n - `YYYY-MM-DDTHH:mm:ssZ`\n - `YYYY-MM-DDTHH:mm:ss.SSSZ`\n- Custom code attributes (not supported by-default) need to be added as code **metadata**.\n- You **cannot import the same codes** to a single Voucherify project.\n- You can, however, upload the same codes to update them.\n\n\n\n\n\n\n\nCategories\n\nIn the structure representing your data, you can define a category that the voucher belongs to. You can later use the category of a voucher to group and search by specific criteria in the Dashboard and using the [List Vouchers](/api-reference/vouchers/list-vouchers) endpoint.\n\n\n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).\n\nYou can pass the `webhooks_enable=true` parameter to trigger a webhook sendout for created or updated vouchers. Configure the [respective webhooks](/api-reference/introduction-to-webhooks) in Project settings. For updated webhooks, a webhook is sent even if the voucher hasn't been changed in the CSV file.\n\n\n\nGeneric (standalone) vouchers and campaigns\n\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers imported through the dashboard in the Vouchers section or through the API do not have a campaign attached, so the values for `campaign` and `campaign_id` are `null`.\n\n",
"parameters": [],
"security": [
{
@@ -37830,7 +37830,7 @@
"Vouchers"
],
"summary": "Update Vouchers in Bulk",
- "description": "Updates specific metadata parameters for each code, respectively, in one asynchronous operation.\n\nThe request can include up to **10 MB** of data.\n\nUpserts are not supported.\n\n> 🚧 Currently, only **metadata** updates are supported.\n\nThe response returns a unique asynchronous action ID. Use this ID in the query paramater of the [GET Async Action](/api-reference/async-actions/get-async-action) endpoint to check, e.g.:\n\n- The status of your request (in queue, in progress, done, or failed)\n\n- Resources that failed to be updated\n\n- The report file with details about the update\n\n\n\nThis API request starts a process that affects Voucherify data in bulk. In the case of small jobs (like bulk update), the request is put into a queue and processed when every other bulk request placed in the queue prior to this request is finished.",
+ "description": "Updates specific metadata parameters for each code, respectively, in one asynchronous operation.\n\nThe request can include up to **10 MB** of data.\n\nUpserts are not supported.\n\n\n\nCurrently, only **metadata** updates are supported.\n\n\n\nThe response returns a unique asynchronous action ID. Use this ID in the query paramater of the [GET Async Action](/api-reference/async-actions/get-async-action) endpoint to check, e.g.:\n\n- The status of your request (in queue, in progress, done, or failed)\n\n- Resources that failed to be updated\n\n- The report file with details about the update\n\n\n\nThis API request starts a process that affects Voucherify data in bulk. In the case of small jobs (like bulk update), the request is put into a queue and processed when every other bulk request placed in the queue prior to this request is finished.",
"parameters": [],
"security": [
{
@@ -37988,7 +37988,7 @@
"Vouchers"
],
"summary": "Release Validation Session",
- "description": "Manually release a validation session that has been set up for the voucher. This method undoes the actions that are explained in the [Locking validation session](/guides/locking-validation-session) guide. \n\n> 📘 Release session in the Dashboard\n>\n> You can also use the [Validations Manager](/optimize/validations-and-redemptions#sessions) in the Dashboard to unlock sessions.",
+ "description": "Manually release a validation session that has been set up for the voucher. This method undoes the actions that are explained in the [Locking validation session](/guides/locking-validation-session) guide. \n\n\n\nRelease session in the Dashboard\n\nYou can also use the [Validations Manager](/optimize/validations-and-redemptions#sessions) in the Dashboard to unlock sessions.\n\n",
"parameters": [],
"security": [
{
@@ -38014,7 +38014,7 @@
"Campaigns"
],
"summary": "Create Campaign",
- "description": "Method to create a batch of vouchers aggregated in one campaign. You can choose a variety of voucher types and define a unique pattern for generating codes. \n\n\n> 📘 Global uniqueness\n>\n> All campaign codes are unique across the whole project. Voucherify will not allow you to generate 2 campaigns with the same coupon code. \n\n> 🚧 Code generation status\n>\n> This is an asynchronous action; you can't read or modify a newly created campaign until the code generation is completed. See the `creation_status` field in the [campaign object](/api-reference/campaigns/campaign-object) description.",
+ "description": "Method to create a batch of vouchers aggregated in one campaign. You can choose a variety of voucher types and define a unique pattern for generating codes. \n\n\n\n\nGlobal uniqueness\n\nAll campaign codes are unique across the whole project. Voucherify will not allow you to generate 2 campaigns with the same coupon code.\n\n\n\n\n\nCode generation status\n\nThis is an asynchronous action; you can't read or modify a newly created campaign until the code generation is completed. See the `creation_status` field in the [campaign object](/api-reference/campaigns/campaign-object) description.\n\n",
"parameters": [],
"security": [
{
@@ -39248,7 +39248,7 @@
"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. \n\nFields other than the ones listed in the request body won't be modified. Even if provided, they will be silently skipped. \n\n> 🚧 Vouchers will be affected\n>\n> This method will update vouchers aggregated in the campaign. It will affect all vouchers that are not published or redeemed yet.",
+ "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. \n\nFields other than the ones listed in the request body won't be modified. Even if provided, they will be silently skipped. \n\n\n\nVouchers will be affected\n\nThis method will update vouchers aggregated in the campaign. It will affect all vouchers that are not published or redeemed yet.\n\n",
"parameters": [],
"security": [
{
@@ -39838,7 +39838,7 @@
"Campaigns"
],
"summary": "Import Vouchers to Campaign by CSV",
- "description": "Imports vouchers to an **existing** campaign. \n\n\nThe CSV file has to include headers in the first line. \n\nCurl Example\n\n```cURL\ncurl -X **POST** \\\n https://api.voucherify.io/v1/campaigns/TEST-CAMPAIGN/importCSV \\\n -F file=@/path/to/campaigns.csv \\\n -H \"X-App-Id: c70a6f00-cf91-4756-9df5-47628850002b\" \\\n -H \"X-App-Token: 3266b9f8-e246-4f79-bdf0-833929b1380c\"\n```\n\nYou can import values for the following fields: `Code` (**required**), `Category`, `Active`. In a gift cards import, you can also include the current card balance using the `Gift Amount` header and the amount that was redeemed using the `Redeemed Amount` header. In a loyalty cards import, you can also include the current loyalty card score in points using the `Loyalty Points` header. Remaining CSV columns will be mapped to metadata properties. \n\nDiscount type, time limits, and validation rules will be taken from the [campaign object](/api-reference/campaigns/campaign-object) settings. \n\n\n| **Active** | **Code** | **Loyalty Points** | **Gift Amount** | **Redeemed Amount** | **Redeemed Quantity** | **Category** | **Custom_metadata_property** |\n|---|---|---|---|---|---|---|---|\n| Use `true` or `false` to enable or disable the voucher; this flag can be used to turn off the ability to redeem a voucher even though it is within the campaign's start/end validity timeframe. | The unique voucher code. | The number of points to be added to the loyalty card. If you leave this undefined, then the initial number of points will be set according to the campaign settings.
Context: `LOYALTY_PROGRAM` | The initial gift card balance.
Context: `GIFT_VOUCHERS` | The amount that was redeemed from the available balance on a gift card. | The number of times the voucher has been redeemed. | A custom tag for the voucher to help you filter codes; you can either import the category name or a unique Voucherify-assigned category ID. | Any additional data that you would like to store for the given loyalty card as a Custom attribute. Remember to define the metadata schema in the Dashboard prior to importing codes. |\n|\n\n> 📘 Active\n>\n> The CSV file is allowed in two versions; either with or without a column titled `Active`. It indicates whether the voucher is enabled after the import event. \n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
+ "description": "Imports vouchers to an **existing** campaign. \n\n\nThe CSV file has to include headers in the first line. \n\nCurl Example\n\n```cURL\ncurl -X **POST** \\\n https://api.voucherify.io/v1/campaigns/TEST-CAMPAIGN/importCSV \\\n -F file=@/path/to/campaigns.csv \\\n -H \"X-App-Id: c70a6f00-cf91-4756-9df5-47628850002b\" \\\n -H \"X-App-Token: 3266b9f8-e246-4f79-bdf0-833929b1380c\"\n```\n\nYou can import values for the following fields: `Code` (**required**), `Category`, `Active`. In a gift cards import, you can also include the current card balance using the `Gift Amount` header and the amount that was redeemed using the `Redeemed Amount` header. In a loyalty cards import, you can also include the current loyalty card score in points using the `Loyalty Points` header. Remaining CSV columns will be mapped to metadata properties. \n\nDiscount type, time limits, and validation rules will be taken from the [campaign object](/api-reference/campaigns/campaign-object) settings. \n\n\n| **Active** | **Code** | **Loyalty Points** | **Gift Amount** | **Redeemed Amount** | **Redeemed Quantity** | **Category** | **Custom_metadata_property** |\n|---|---|---|---|---|---|---|---|\n| Use `true` or `false` to enable or disable the voucher; this flag can be used to turn off the ability to redeem a voucher even though it is within the campaign's start/end validity timeframe. | The unique voucher code. | The number of points to be added to the loyalty card. If you leave this undefined, then the initial number of points will be set according to the campaign settings.
Context: `LOYALTY_PROGRAM` | The initial gift card balance.
Context: `GIFT_VOUCHERS` | The amount that was redeemed from the available balance on a gift card. | The number of times the voucher has been redeemed. | A custom tag for the voucher to help you filter codes; you can either import the category name or a unique Voucherify-assigned category ID. | Any additional data that you would like to store for the given loyalty card as a Custom attribute. Remember to define the metadata schema in the Dashboard prior to importing codes. |\n|\n\n\n\nActive\n\nThe CSV file is allowed in two versions; either with or without a column titled `Active`. It indicates whether the voucher is enabled after the import event.\n\n\n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
"parameters": [],
"security": [
{
@@ -39898,7 +39898,7 @@
"Campaigns"
],
"summary": "Enable Campaign",
- "description": "There are various times when you'll want to manage a campaign's accessibility. This can be done by two API methods for managing the campaign state - *enable* and *disable*. \n\nSets campaign state to **active**. The vouchers in this campaign can be redeemed - only if the redemption occurs after the start date of the campaign and voucher and the voucher and campaign are not expired.",
+ "description": "Sets campaign state to **active**. The vouchers in this campaign can be redeemed - only if the redemption occurs after the start date of the campaign and voucher and the voucher and campaign are not expired.",
"parameters": [],
"security": [
{
@@ -39947,7 +39947,7 @@
"Campaigns"
],
"summary": "Disable Campaign",
- "description": "There are various times when you'll want to manage a campaign's accessibility. This can be done by two API methods for managing the campaign state - *enable* and *disable*. \n\nSets campaign state to **inactive**. The vouchers in this campaign can no longer be redeemed.",
+ "description": "Sets campaign state to **inactive**. The vouchers in this campaign can no longer be redeemed.",
"parameters": [],
"security": [
{
@@ -39996,7 +39996,7 @@
"Campaigns"
],
"summary": "List Campaign Transactions",
- "description": "Retrieves all transactions for the campaign with the given campaign ID or campaign name. The `id` filter denotes the unique transaction identifier.\n\n> 🚧\n> The endpoint works only for gift card and loyalty campaigns.",
+ "description": "Retrieves all transactions for the campaign with the given campaign ID or campaign name. The `id` filter denotes the unique transaction identifier.\n\n\n\nThe endpoint works only for gift card and loyalty campaigns.\n\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -40158,7 +40158,7 @@
}
],
"summary": "Export Campaign Transactions",
- "description": "Export transactions is an asynchronous process that generates a CSV file with the data about credit movements on all gift cards or point movements on all loyalty cards in a given campaign.\n\nTo export transactions:\n1. In the export request, use parameters to select which fields will be exported, in what order, and which data will be filtered.\n2. Use the returned `id` to track the export status with the [GET Export](/api-reference/exports/get-export) method.\n3. In the GET Export method, when the returned `status` field has the `DONE` value, the export file has been generated.\n4. Use the URL in the `result` property to download the file. You must be logged to your Voucherify account on a given cluster in the browser to be able to download the file.\n\nAn export request will almost always result in a single file being generated by the system. However, when the data volume is large, the system may split the results into multiple files.\n\nAn example export file can look as follows:\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| `id` | Unique transaction ID. | `vtx_0cb7811f1c07765800` |\n| `type` | Transaction type. |**Gift cards**:
- `CREDITS_REMOVAL`
- `CREDITS_ADDITION`
- `CREDITS_REFUND`
- `CREDITS_REDEMPTION`
**Loyalty cards**:
- `POINTS_ACCRUAL`
- `POINTS_REDEMPTION`
- `POINTS_REFUND`
- `POINTS_ADDITION`
- `POINTS_REMOVAL`
- `POINTS_EXPIRATION`
- `POINTS_TRANSFER_IN`
- `POINTS_TRANSFER_OUT` |\n| `source_id` | Unique transaction source ID. Optional and only in manual operations: `CREDITS_ADDITION`, `CREDITS_REMOVAL`, `POINTS_ADDITION`, `POINTS_REMOVAL`, `POINTS_TRANSFER_OUT`. | 8638 |\n| `reason` | Contains the reason for the transaction if one was included originally. Optional and only in the following manual operations: `CREDITS_ADDITION`, `CREDITS_REMOVAL`, `POINTS_ADDITION`, `POINTS_REMOVAL`, `POINTS_TRANSFER_OUT`, `POINTS_TRANSFER_IN`. | `Apology for sending a broken item` |\n| `balance` | The gift card or loyalty card balance after the transaction. | |\n| `amount` | The amount of gift card or loyalty card credits being allocated during the transaction. This value can either be negative or positive depending on the nature of the transaction. | |\n| `created_at` | Timestamp in ISO 8601 format representing the date and time when the transaction was created. | `2024-10-09T09:16:32.521Z` |\n| `voucher_id` | Unique voucher ID. | `v_dky7ksKfPX50Wb2Bxvcoeb1xT20b6tcp` |\n| `source`| Channel through which the transaction was initiated. | `API` |\n| `details` | More detailed information stored in the form of JSON. | Provides more details related to the transaction in the form of an object. |\n| `related_transaction_id` | Unique transaction ID related to a receiver/donor card in the case of a points transfer from/to another card. | `vtx_0c9afe802593b34b80` |\n\n> 👍 Export Loyalty Campaign Transactions\n>\n> For loyalty campaigns, this method works in the same way the [POST Export Loyalty Campaign Transactions](/api-reference/loyalties/export-loyalty-campaign-transactions) does.",
+ "description": "Export transactions is an asynchronous process that generates a CSV file with the data about credit movements on all gift cards or point movements on all loyalty cards in a given campaign.\n\nTo export transactions:\n1. In the export request, use parameters to select which fields will be exported, in what order, and which data will be filtered.\n2. Use the returned `id` to track the export status with the [GET Export](/api-reference/exports/get-export) method.\n3. In the GET Export method, when the returned `status` field has the `DONE` value, the export file has been generated.\n4. Use the URL in the `result` property to download the file. You must be logged to your Voucherify account on a given cluster in the browser to be able to download the file.\n\nAn export request will almost always result in a single file being generated by the system. However, when the data volume is large, the system may split the results into multiple files.\n\nAn example export file can look as follows:\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| `id` | Unique transaction ID. | `vtx_0cb7811f1c07765800` |\n| `type` | Transaction type. |**Gift cards**:
- `CREDITS_REMOVAL`
- `CREDITS_ADDITION`
- `CREDITS_REFUND`
- `CREDITS_REDEMPTION`
**Loyalty cards**:
- `POINTS_ACCRUAL`
- `POINTS_REDEMPTION`
- `POINTS_REFUND`
- `POINTS_ADDITION`
- `POINTS_REMOVAL`
- `POINTS_EXPIRATION`
- `POINTS_TRANSFER_IN`
- `POINTS_TRANSFER_OUT` |\n| `source_id` | Unique transaction source ID. Optional and only in manual operations: `CREDITS_ADDITION`, `CREDITS_REMOVAL`, `POINTS_ADDITION`, `POINTS_REMOVAL`, `POINTS_TRANSFER_OUT`. | 8638 |\n| `reason` | Contains the reason for the transaction if one was included originally. Optional and only in the following manual operations: `CREDITS_ADDITION`, `CREDITS_REMOVAL`, `POINTS_ADDITION`, `POINTS_REMOVAL`, `POINTS_TRANSFER_OUT`, `POINTS_TRANSFER_IN`. | `Apology for sending a broken item` |\n| `balance` | The gift card or loyalty card balance after the transaction. | |\n| `amount` | The amount of gift card or loyalty card credits being allocated during the transaction. This value can either be negative or positive depending on the nature of the transaction. | |\n| `created_at` | Timestamp in ISO 8601 format representing the date and time when the transaction was created. | `2024-10-09T09:16:32.521Z` |\n| `voucher_id` | Unique voucher ID. | `v_dky7ksKfPX50Wb2Bxvcoeb1xT20b6tcp` |\n| `source`| Channel through which the transaction was initiated. | `API` |\n| `details` | More detailed information stored in the form of JSON. | Provides more details related to the transaction in the form of an object. |\n| `related_transaction_id` | Unique transaction ID related to a receiver/donor card in the case of a points transfer from/to another card. | `vtx_0c9afe802593b34b80` |\n\n\n\nExport Loyalty Campaign Transactions\n\nFor loyalty campaigns, this method works in the same way the [POST Export Loyalty Campaign Transactions](/api-reference/loyalties/export-loyalty-campaign-transactions) does.\n\n",
"requestBody": {
"description": "Specify the parameters for the transaction export.",
"content": {
@@ -40288,7 +40288,7 @@
"Campaigns"
],
"summary": "Get Campaign Summary",
- "description": "Returns data for campaign analytics, covering validations, redemptions, publications, and other details specific to a given campaign type.\n\nUse `start_date` and `end_date` to narrow down the data to specific periods.\n\n>🚧 Campaigns created before 17 June 2025\n>\n>This endpoint returns analytics data for campaigns that were created after 17 June 2025. Older campaigns return empty data.",
+ "description": "Returns data for campaign analytics, covering validations, redemptions, publications, and other details specific to a given campaign type.\n\nUse `start_date` and `end_date` to narrow down the data to specific periods.\n\n\n\nCampaigns created before 17 June 2025\n\nThis endpoint returns analytics data for campaigns that were created after 17 June 2025. Older campaigns return empty data.\n\n",
"parameters": [
{
"name": "start_date",
@@ -42697,7 +42697,7 @@
"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.\n\n## Pagination\n\n\n> 🚧 Important!\n>\n> 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.\n\n## Filter Query\n\nThe `filters` query parameter allows for joining multiple parameters with logical operators. The syntax looks as follows:\n\n\n```\n \"$in\"\n \"$not_in\"\n \"$is\"\n \"$is_not\"\n \"$has_value\"\n \"$is_unknown\"\n \"$contains\"\n \"$starts_with\"\n \"$ends_with\"\n \"$more_than\"\n \"$less_than\"\n \"$more_than_equal\"\n \"$less_than_equal\"\n```\n\n### Examples\n\n\n```url\nGET /v1/publications?filters[customer_id][conditions][$is][0]=cust_lUET6gRpO5Wxlg5p2j2gRCgL\n```\n\n```url\nGET /v1/publications?filters[customer_id][conditions][$in][0]=cust_lUET6gRpO5Wxlg5p2j2gRCgL&filters[customer_id][conditions][$in][1]=cust_aR7NfHusxT7PdTMAKMfWDXnc\n```\n\n```url\nGET /v1/publications?filters[customer_id][conditions][$is][0]=cust_lUET6gRpO5Wxlg5p2j2gRCgL&filters[customer_id][conditions][$is][1]=cust_aR7NfHusxT7PdTMAKMfWDXnc&filters[junction]=OR\n```",
+ "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.\n\n## Pagination\n\n\n\n\nImportant!\n\nIf 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.\n\n\n\n## Filter Query\n\nThe `filters` query parameter allows for joining multiple parameters with logical operators. The syntax looks as follows:\n\n\n```\n \"$in\"\n \"$not_in\"\n \"$is\"\n \"$is_not\"\n \"$has_value\"\n \"$is_unknown\"\n \"$contains\"\n \"$starts_with\"\n \"$ends_with\"\n \"$more_than\"\n \"$less_than\"\n \"$more_than_equal\"\n \"$less_than_equal\"\n```\n\n### Examples\n\n\n```url\nGET /v1/publications?filters[customer_id][conditions][$is][0]=cust_lUET6gRpO5Wxlg5p2j2gRCgL\n```\n\n```url\nGET /v1/publications?filters[customer_id][conditions][$in][0]=cust_lUET6gRpO5Wxlg5p2j2gRCgL&filters[customer_id][conditions][$in][1]=cust_aR7NfHusxT7PdTMAKMfWDXnc\n```\n\n```url\nGET /v1/publications?filters[customer_id][conditions][$is][0]=cust_lUET6gRpO5Wxlg5p2j2gRCgL&filters[customer_id][conditions][$is][1]=cust_aR7NfHusxT7PdTMAKMfWDXnc&filters[junction]=OR\n```",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -42928,7 +42928,7 @@
"Publications"
],
"summary": "Create Publication",
- "description": "This method selects vouchers that are suitable for publication, adds a publish entry and returns the publication.\n\nA voucher is suitable for publication when it's active and hasn't been published yet. \n\n\n> 🚧 Clearly define the source of the voucher\n>\n> You must clearly define which source you want to publish the voucher code from. It can either be a code from a campaign or a specific voucher identified by a code. \n\n> 🚧 Publish multiple vouchers\n> In case you want to publish multiple vouchers within a single publication, you need to specify the campaign name and number of vouchers you want to publish. \n\n\n> 📘 Auto-update campaign\n>\n> In case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use an **auto-update** campaign.",
+ "description": "This method selects vouchers that are suitable for publication, adds a publish entry and returns the publication.\n\nA voucher is suitable for publication when it's active and hasn't been published yet. \n\n\n\n\nClearly define the source of the voucher\n\nYou must clearly define which source you want to publish the voucher code from. It can either be a code from a campaign or a specific voucher identified by a code.\n\n\n\n\n\nPublish multiple vouchers\n\nIn case you want to publish multiple vouchers within a single publication, you need to specify the campaign name and number of vouchers you want to publish.\n\n\n\n\n\n\nAuto-update campaign\n\nIn case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use an **auto-update** campaign.\n\n",
"parameters": [
{
"schema": {
@@ -45083,7 +45083,7 @@
"Redemptions"
],
"summary": "Rollback Redemption",
- "description": "Your business logic may include a case when you need to undo a redemption. You can revert a redemption by calling this API endpoint. This endpoint rolls back only single redemptions, meaning those that are not stacked. Stacked redemptions belong to a parent redemption. To roll back a parent redemption, including all of its individual redemptions, use the [POST Rollback Stackable Redemptions](/api-reference/redemptions/rollback-stackable-redemptions) \n>🚧 \n>You can roll back a redemption up to 3 months back. \n\n ## Effect \nThe operation \n- creates a rollback entry in voucher's redemption history (`redemption.redemption_entries`) and \n- gives 1 redemption back to the pool (decreases `redeemed_quantity` by 1). \n## Returned funds \nIn case of *gift card vouchers*, this method returns funds back according to the source redemption. In case of *loyalty card vouchers*, this method returns points back according to the source redemption.",
+ "description": "Your business logic may include a case when you need to undo a redemption. You can revert a redemption by calling this API endpoint. This endpoint rolls back only single redemptions, meaning those that are not stacked. Stacked redemptions belong to a parent redemption. To roll back a parent redemption, including all of its individual redemptions, use the [POST Rollback Stackable Redemptions](/api-reference/redemptions/rollback-stackable-redemptions) \n\n\nYou can roll back a redemption up to 3 months back.\n\n\n\n ## Effect \nThe operation \n- creates a rollback entry in voucher's redemption history (`redemption.redemption_entries`) and \n- gives 1 redemption back to the pool (decreases `redeemed_quantity` by 1). \n## Returned funds \nIn case of *gift card vouchers*, this method returns funds back according to the source redemption. In case of *loyalty card vouchers*, this method returns points back according to the source redemption.",
"parameters": [
{
"schema": {
@@ -45775,7 +45775,7 @@
"Redemptions"
],
"summary": "Rollback Stackable Redemptions",
- "description": "Rollback a stackable redemption. When you roll back a stacked redemption, all child redemptions will be rolled back. Provide the parent redemption ID as the path parameter. However, you can use this endpoint to roll back a single redemption that does not have a parent, similarly to [POST Rollback redemption](/api-reference/redemptions/rollback-redemption).\n>🚧 \n> You can roll back a redemption up to 3 months back.",
+ "description": "Rollback a stackable redemption. When you roll back a stacked redemption, all child redemptions will be rolled back. Provide the parent redemption ID as the path parameter. However, you can use this endpoint to roll back a single redemption that does not have a parent, similarly to [POST Rollback redemption](/api-reference/redemptions/rollback-redemption).\n\n\nYou can roll back a redemption up to 3 months back.\n\n",
"parameters": [
{
"schema": {
@@ -45865,11 +45865,12 @@
"/v1/loyalties": {
"get": {
"operationId": "list-loyalty-programs",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Campaigns",
- "description": "Returns a list of your loyalty campaigns.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nReturns a list of your loyalty campaigns.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -46084,11 +46085,12 @@
},
"post": {
"operationId": "create-loyalty-program",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Create Loyalty Campaign",
- "description": "Creates a batch of [loyalty cards](/api-reference/loyalties/get-member) aggregated in a single loyalty campaign. It also allows you to define a custom codes pattern. \n\n\n> 📘 Global uniqueness\n> All codes are unique across the whole project. Voucherify won't allow to generate the same codes in any of your campaigns.\n\n\n> 🚧 Asynchronous action!\n>\n> This is an asynchronous action, you can't read or modify a newly created campaign until the code generation is completed. See `creation_status` field in the [loyalty campaign object](/api-reference/loyalties/loyalty-campaign-object) description.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nCreates a batch of [loyalty cards](/api-reference/loyalties/get-member) aggregated in a single loyalty campaign. It also allows you to define a custom codes pattern. \n\n\n\n\nGlobal uniqueness\n\nAll codes are unique across the whole project. Voucherify won't allow to generate the same codes in any of your campaigns.\n\n\n\n\n\n\nAsynchronous action!\n\nThis is an asynchronous action, you can't read or modify a newly created campaign until the code generation is completed. See `creation_status` field in the [loyalty campaign object](/api-reference/loyalties/loyalty-campaign-object) description.\n\n",
"parameters": [],
"security": [
{
@@ -46298,11 +46300,12 @@
],
"get": {
"operationId": "get-loyalty-program",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Loyalty Campaign",
- "description": "Retrieve a specific loyalty campaign.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieve a specific loyalty campaign.",
"parameters": [],
"security": [
{
@@ -46409,11 +46412,12 @@
},
"put": {
"operationId": "update-loyalty-program",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Update Loyalty Campaign",
- "description": "Updates a loyalty program. \n\nFields other than those specified in the allowed request body payload won't be modified (even if provided they are silently skipped). Any parameters not provided will be left unchanged. \n\nThis method will update the [loyalty cards](/api-reference/loyalties/get-member) which have not been published or redeemed yet.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nUpdates a loyalty program. \n\nFields other than those specified in the allowed request body payload won't be modified (even if provided they are silently skipped). Any parameters not provided will be left unchanged. \n\nThis method will update the [loyalty cards](/api-reference/loyalties/get-member) which have not been published or redeemed yet.",
"parameters": [],
"security": [
{
@@ -46604,11 +46608,12 @@
},
"delete": {
"operationId": "delete-loyalty-program",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Delete Loyalty Campaign",
- "description": "Deletes a loyalty campaign and all related loyalty cards. This action cannot be undone. Also, it immediately removes any redemptions on loyalty cards.\n\nIf the `force` parameter is set to `false` or not set at all, the loyalty campaign and all related loyalty cards will be moved to [the bin](/api-reference/bin/list-bin-entries).",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nDeletes a loyalty campaign and all related loyalty cards. This action cannot be undone. Also, it immediately removes any redemptions on loyalty cards.\n\nIf the `force` parameter is set to `false` or not set at all, the loyalty campaign and all related loyalty cards will be moved to [the bin](/api-reference/bin/list-bin-entries).",
"parameters": [
{
"schema": {
@@ -46664,11 +46669,12 @@
],
"get": {
"operationId": "list-members",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Members",
- "description": "Returns a list of your loyalty cards. The loyalty cards are sorted by creation date, with the most recent loyalty cards appearing first.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nReturns a list of your loyalty cards. The loyalty cards are sorted by creation date, with the most recent loyalty cards appearing first.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -46843,11 +46849,12 @@
},
"post": {
"operationId": "add-member",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Add Member",
- "description": "This method assigns a loyalty card to a customer. It selects a [loyalty card](/api-reference/vouchers/get-voucher) suitable for publication, adds a publish entry, and returns the published voucher. \n\nA voucher is suitable for publication when it's active and hasn't been published yet. \n\n\n> 📘 Auto-update campaign\n>\n> In case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use **auto-update** campaign.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nThis method assigns a loyalty card to a customer. It selects a [loyalty card](/api-reference/vouchers/get-voucher) suitable for publication, adds a publish entry, and returns the published voucher. \n\nA voucher is suitable for publication when it's active and hasn't been published yet. \n\n\n\n\nAuto-update campaign\n\nIn case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use **auto-update** campaign.\n\n",
"parameters": [],
"security": [
{
@@ -47017,11 +47024,12 @@
],
"get": {
"operationId": "get-member-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Member with campaign ID",
- "description": "Retrieves the loyalty card with the given member ID (i.e. voucher code).",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieves the loyalty card with the given member ID (i.e. voucher code).",
"parameters": [],
"security": [
{
@@ -47117,11 +47125,12 @@
],
"get": {
"operationId": "get-member",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Member",
- "description": "Retrieve loyalty card with the given member ID (i.e. voucher code). \n\n\n> 📘 Alternative endpoint\n> This endpoint is an alternative to this [endpoint](/api-reference/loyalties/get-member-with-campaign-id). The URL was re-designed to allow you to retrieve loyalty card details without having to provide the `campaignId` as a path parameter.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieve loyalty card with the given member ID (i.e. voucher code). \n\n\n\n\nAlternative endpoint\n\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/get-member-with-campaign-id). The URL was re-designed to allow you to retrieve loyalty card details without having to provide the `campaignId` as a path parameter.\n\n",
"parameters": [],
"security": [
{
@@ -47217,11 +47226,12 @@
],
"get": {
"operationId": "list-campaign-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Campaign Pending Points",
- "description": "Lists all pending points that are currently assigned to all loyalty cards in a campaign. Once the points are added to the card, the entry is no longer returned.\n\n>👍 Configuring pending points\n>\n>Pending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nLists all pending points that are currently assigned to all loyalty cards in a campaign. Once the points are added to the card, the entry is no longer returned.\n\n\n\nConfiguring pending points\n\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n\n",
"parameters": [
{
"schema": {
@@ -47429,11 +47439,12 @@
],
"get": {
"operationId": "list-member-pending-points-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Pending Points with campaign ID",
- "description": "Lists all pending points that are currently assigned to the loyalty card. Once the points are added to the card, the entry is no longer returned.\n\n>👍 Configuring pending points\n>\n>Pending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nLists all pending points that are currently assigned to the loyalty card. Once the points are added to the card, the entry is no longer returned.\n\n\n\nConfiguring pending points\n\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n\n",
"parameters": [
{
"schema": {
@@ -47632,11 +47643,12 @@
],
"get": {
"operationId": "list-member-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Pending Points",
- "description": "\n> 📘 Alternative endpoint\n> This endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-member-pending-points-with-campaign-id). The URL was re-designed to list member pending points without having to provide the `campaignId` as a path parameter.\n\nLists all pending points that are currently assigned to the loyalty card. Once the points are added to the card, the entry is no longer returned.\n\n>👍 Configuring pending points\n>\n>Pending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\n\n\n\nAlternative endpoint\n\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-member-pending-points-with-campaign-id). The URL was re-designed to list member pending points without having to provide the `campaignId` as a path parameter.\n\n\n\nLists all pending points that are currently assigned to the loyalty card. Once the points are added to the card, the entry is no longer returned.\n\n\n\nConfiguring pending points\n\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n\n",
"parameters": [
{
"schema": {
@@ -47844,11 +47856,12 @@
],
"post": {
"operationId": "activate-member-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Activate Member Pending Points",
- "description": "Activate manually the pending points and add them to the loyalty card. The pending points are determined by the pending point ID.\n\nOnce activated, the pending point entry with that ID is not listed by the endpoints: List member ([with campaign ID](/api-reference/loyalties/list-member-pending-points-with-campaign-id), [without campaign ID](/api-reference/loyalties/list-member-pending-points)), [List campaign pending points](/api-reference/loyalties/list-campaign-pending-points).\n\nThis **POST** method does not require a request body.\n\n>👍 Configuring pending points\n>\n>Pending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nActivate manually the pending points and add them to the loyalty card. The pending points are determined by the pending point ID.\n\nOnce activated, the pending point entry with that ID is not listed by the endpoints: List member ([with campaign ID](/api-reference/loyalties/list-member-pending-points-with-campaign-id), [without campaign ID](/api-reference/loyalties/list-member-pending-points)), [List campaign pending points](/api-reference/loyalties/list-campaign-pending-points).\n\nThis **POST** method does not require a request body.\n\n\n\nConfiguring pending points\n\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n\n",
"parameters": [],
"security": [
{
@@ -47913,11 +47926,12 @@
],
"post": {
"operationId": "adjust-member-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Adjust Member Pending Points",
- "description": "Adjusts the pending points with a given ID. You can add or subtract the number of points.\n\n>👍 Configuring pending points\n>\n>Pending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nAdjusts the pending points with a given ID. You can add or subtract the number of points.\n\n\n\nConfiguring pending points\n\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n\n",
"parameters": [],
"security": [
{
@@ -48003,11 +48017,12 @@
],
"post": {
"operationId": "cancel-member-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Cancel Member Pending Points",
- "description": "Cancel manually the pending points for the loyalty card. The pending points are determined by the pending point ID.\n\nOnce canceled, the pending point entry with that ID is not listed by the endpoints: List member ([with campaign ID](/api-reference/loyalties/list-member-pending-points-with-campaign-id), [without campaign ID](/api-reference/loyalties/list-member-pending-points)), [List campaign pending points](/api-reference/loyalties/list-campaign-pending-points).\n\nThis **POST** method does not require a request body and it returns an empty, 204, response.\n\n>👍 Configuring pending points\n>\n>Pending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nCancel manually the pending points for the loyalty card. The pending points are determined by the pending point ID.\n\nOnce canceled, the pending point entry with that ID is not listed by the endpoints: List member ([with campaign ID](/api-reference/loyalties/list-member-pending-points-with-campaign-id), [without campaign ID](/api-reference/loyalties/list-member-pending-points)), [List campaign pending points](/api-reference/loyalties/list-campaign-pending-points).\n\nThis **POST** method does not require a request body and it returns an empty, 204, response.\n\n\n\nConfiguring pending points\n\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n\n",
"parameters": [],
"security": [
{
@@ -48049,11 +48064,12 @@
],
"get": {
"operationId": "list-member-activity-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Activity with campaign ID",
- "description": "Retrieves the list of activities for the given member ID related to a voucher and customer who is the holder of the voucher.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieves the list of activities for the given member ID related to a voucher and customer who is the holder of the voucher.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -48113,11 +48129,12 @@
],
"get": {
"operationId": "list-member-activity",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Activity",
- "description": "\n> 📘 Alternative endpoint\n> This endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-member-activity-with-campaign-id). The URL was re-designed to allow you to get member activities without having to provide the `campaignId` as a path parameter.\n\nRetrieves the list of activities for the given member ID related to a voucher and customer who is the holder of the voucher.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\n\n\n\nAlternative endpoint\n\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-member-activity-with-campaign-id). The URL was re-designed to allow you to get member activities without having to provide the `campaignId` as a path parameter.\n\n\n\nRetrieves the list of activities for the given member ID related to a voucher and customer who is the holder of the voucher.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -48186,11 +48203,12 @@
],
"post": {
"operationId": "update-loyalty-card-balance-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Adjust Loyalty Card Balance with campaign ID",
- "description": "This method adds or removes balance to an existing loyalty card that is assigned to a holder. The removal of points will consume the points that expire the soonest. \n\n >🚧 Async Action\n> \n> This is an async action. If you want to perform several add or remove loyalty card balance actions in a short time and their order matters, set up sufficient time-out between the calls.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nThis method adds or removes balance to an existing loyalty card that is assigned to a holder. The removal of points will consume the points that expire the soonest. \n\n \n\nAsync Action\n\nThis is an async action. If you want to perform several add or remove loyalty card balance actions in a short time and their order matters, set up sufficient time-out between the calls.\n\n",
"parameters": [],
"security": [
{
@@ -48283,11 +48301,12 @@
],
"post": {
"operationId": "update-loyalty-card-balance",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Adjust Loyalty Card Balance",
- "description": "This method gives adds or removes balance to an existing loyalty card that is assigned to a holder. The removal of points will consume the points that expire the soonest. \n\n\n\n >🚧 Async Action\n> \n> This is an async action. If you want to perform several add or remove loyalty card balance actions in a short time and their order matters, set up sufficient time-out between the calls.\n\n\n> 📘 Alternative endpoint\n> This endpoint is an alternative to this [endpoint](/api-reference/loyalties/adjust-loyalty-card-balance-with-campaign-id). The URL was re-designed to allow you to add or remove loyalty card balance without having to provide the `campaignId` as a path parameter.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nThis method gives adds or removes balance to an existing loyalty card that is assigned to a holder. The removal of points will consume the points that expire the soonest. \n\n\n\n \n\nAsync Action\n\nThis is an async action. If you want to perform several add or remove loyalty card balance actions in a short time and their order matters, set up sufficient time-out between the calls.\n\n\n\n\n\n\nAlternative endpoint\n\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/adjust-loyalty-card-balance-with-campaign-id). The URL was re-designed to allow you to add or remove loyalty card balance without having to provide the `campaignId` as a path parameter.\n\n",
"parameters": [],
"security": [
{
@@ -48376,11 +48395,12 @@
],
"post": {
"operationId": "transfer-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Transfer Loyalty Points",
- "description": "Transfer points between different loyalty cards which have holders.\n\nProvide the campaign ID and the loyalty card ID you want the points to be transferred to as path parameters. In the request body, provide the loyalty cards you want the points to be transferred from and the number of points to transfer from each card.\n\nTransfer works only for loyalty cards that have holders, meaning the cards were published to customers.\n\nThe transferred points expire according to the target program expiration rules.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nTransfer points between different loyalty cards which have holders.\n\nProvide the campaign ID and the loyalty card ID you want the points to be transferred to as path parameters. In the request body, provide the loyalty cards you want the points to be transferred from and the number of points to transfer from each card.\n\nTransfer works only for loyalty cards that have holders, meaning the cards were published to customers.\n\nThe transferred points expire according to the target program expiration rules.",
"parameters": [],
"security": [
{
@@ -48501,11 +48521,12 @@
],
"get": {
"operationId": "list-loyalty-campaign-transactions",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Campaign Transactions",
- "description": "Retrieves all transactions for the campaign with the given campaign ID or campaign name.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieves all transactions for the campaign with the given campaign ID or campaign name.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -48652,6 +48673,7 @@
],
"post": {
"operationId": "export-loyalty-campaign-transactions",
+ "deprecated": true,
"tags": [
"Loyalties"
],
@@ -48667,7 +48689,7 @@
}
],
"summary": "Export Loyalty Campaign Transactions",
- "description": "Export transactions is an asynchronous process that generates a CSV file with the data about or point movements on all loyalty cards in a given campaign.\n\nTo export transactions:\n1. In the export request, use parameters to select which fields will be exported, in what order, and which data will be filtered.\n2. Use the returned `id` to track the export status with the [GET Export](/api-reference/exports/get-export) method.\n3. In the GET Export method, when the returned `status` field has the `DONE` value, the export file has been generated.\n4. Use the URL in the `result` property to download the file. You must be logged to your Voucherify account on a given cluster in the browser to be able to download the file.\n\nAn export request will almost always result in a single file being generated by the system. However, when the data volume is large, the system may split the results into multiple files.\n\nAn example export file can look as follows:\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| `id` | Unique transaction ID. | `vtx_0cb7811f1c07765800` |\n| `type` | Transaction type. | - `POINTS_ACCRUAL`
- `POINTS_REDEMPTION`
- `POINTS_REFUND`
- `POINTS_ADDITION`
- `POINTS_REMOVAL`
- `POINTS_EXPIRATION`
- `POINTS_TRANSFER_IN`
- `POINTS_TRANSFER_OUT` |\n| `source_id` | Unique transaction source ID. Optional and only in manual operations: `POINTS_ADDITION`, `POINTS_REMOVAL`, `POINTS_TRANSFER_OUT`. | 8638 |\n| `reason` | Contains the reason for the transaction if one was included originally. Optional and only in the following manual operations: `POINTS_ADDITION`, `POINTS_REMOVAL`, `POINTS_TRANSFER_OUT`, `POINTS_TRANSFER_IN`. | `Apology for sending a broken item` |\n| `balance` | The gift card or loyalty card balance after the transaction. | |\n| `amount` | The amount of gift card or loyalty card credits being allocated during the transaction. This value can either be negative or positive depending on the nature of the transaction. | |\n| `created_at` | Timestamp in ISO 8601 format representing the date and time when the transaction was created. | `2024-10-09T09:16:32.521Z` |\n| `voucher_id` | Unique voucher ID. | `v_dky7ksKfPX50Wb2Bxvcoeb1xT20b6tcp` |\n| `source`| Channel through which the transaction was initiated. | `API` |\n| `details` | More detailed information stored in the form of JSON. | Provides more details related to the transaction in the form of an object. |\n| `related_transaction_id` | Unique transaction ID related to a receiver/donor card in the case of a points transfer from/to another card. | `vtx_0c9afe802593b34b80` |\n\n> 👍 Export Campaign Transactions\n>\n> This method works in the same way the [POST Export Campaign Transactions](/api-reference/campaigns/export-campaign-transactions) does, but it is limited to loyalty campaigns only. The POST Export Campaign Transactions method can also export gift card campaign transactions.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nExport transactions is an asynchronous process that generates a CSV file with the data about or point movements on all loyalty cards in a given campaign.\n\nTo export transactions:\n1. In the export request, use parameters to select which fields will be exported, in what order, and which data will be filtered.\n2. Use the returned `id` to track the export status with the [GET Export](/api-reference/exports/get-export) method.\n3. In the GET Export method, when the returned `status` field has the `DONE` value, the export file has been generated.\n4. Use the URL in the `result` property to download the file. You must be logged to your Voucherify account on a given cluster in the browser to be able to download the file.\n\nAn export request will almost always result in a single file being generated by the system. However, when the data volume is large, the system may split the results into multiple files.\n\nAn example export file can look as follows:\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| `id` | Unique transaction ID. | `vtx_0cb7811f1c07765800` |\n| `type` | Transaction type. | - `POINTS_ACCRUAL`
- `POINTS_REDEMPTION`
- `POINTS_REFUND`
- `POINTS_ADDITION`
- `POINTS_REMOVAL`
- `POINTS_EXPIRATION`
- `POINTS_TRANSFER_IN`
- `POINTS_TRANSFER_OUT` |\n| `source_id` | Unique transaction source ID. Optional and only in manual operations: `POINTS_ADDITION`, `POINTS_REMOVAL`, `POINTS_TRANSFER_OUT`. | 8638 |\n| `reason` | Contains the reason for the transaction if one was included originally. Optional and only in the following manual operations: `POINTS_ADDITION`, `POINTS_REMOVAL`, `POINTS_TRANSFER_OUT`, `POINTS_TRANSFER_IN`. | `Apology for sending a broken item` |\n| `balance` | The gift card or loyalty card balance after the transaction. | |\n| `amount` | The amount of gift card or loyalty card credits being allocated during the transaction. This value can either be negative or positive depending on the nature of the transaction. | |\n| `created_at` | Timestamp in ISO 8601 format representing the date and time when the transaction was created. | `2024-10-09T09:16:32.521Z` |\n| `voucher_id` | Unique voucher ID. | `v_dky7ksKfPX50Wb2Bxvcoeb1xT20b6tcp` |\n| `source`| Channel through which the transaction was initiated. | `API` |\n| `details` | More detailed information stored in the form of JSON. | Provides more details related to the transaction in the form of an object. |\n| `related_transaction_id` | Unique transaction ID related to a receiver/donor card in the case of a points transfer from/to another card. | `vtx_0c9afe802593b34b80` |\n\n\n\nExport Campaign Transactions\n\nThis method works in the same way the [POST Export Campaign Transactions](/api-reference/campaigns/export-campaign-transactions) does, but it is limited to loyalty campaigns only. The POST Export Campaign Transactions method can also export gift card campaign transactions.\n\n",
"requestBody": {
"description": "Specify the parameters for the transaction export.",
"content": {
@@ -48802,11 +48824,12 @@
],
"get": {
"operationId": "list-loyalty-card-transactions-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Card Transactions with campaign ID",
- "description": "Retrieve transaction data related to point movements for a specific loyalty card.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieve transaction data related to point movements for a specific loyalty card.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -49171,11 +49194,12 @@
],
"get": {
"operationId": "list-loyalty-card-transactions",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Card Transactions",
- "description": "Retrieve transaction data related to point movements for a specific loyalty card.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieve transaction data related to point movements for a specific loyalty card.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -49540,11 +49564,12 @@
],
"post": {
"operationId": "export-loyalty-card-transactions",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Export Loyalty Card Transactions",
- "description": "Export transactions that are associated with point movements on a loyalty card.\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique transaction ID assigned by Voucherify. | vtx_0cb7811f1c07765800 |\n| type | Transaction type. | - `POINTS_EXPIRATION`
- `POINTS_ADDITION`
- `POINTS_REMOVAL`
- `POINTS_TRANSFER_OUT`
- `POINTS_ACCRUAL`
- `POINTS_REFUND`
- `POINTS_REDEMPTION` |\n| source_id | Custom source ID of the transaction if one was included originally. | source_id_custom |\n| reason | Contains the reason for the transaction if one was included originally. | |\n| balance | The loyalty card balance after the transaction. | |\n| amount | The amount of loyalty points being allocated during the transaction. This value can either be negative or positive depending on the nature of the transaction. | |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the transaction was created. | 2022-03-09T09:16:32.521Z |\n| voucher_id | Unique Voucher ID. | v_dky7ksKfPX50Wb2Bxvcoeb1xT20b6tcp |\n| campaign_id | Parent campaign ID. | camp_FNYR4jhqZBM9xTptxDGgeNBV |\n| source| Channel through which the transaction was initiated. | - `API`
- `voucherify-web-ui`
- `Automation` |\n| details | More detailed information stored in the form of a JSON. | Provides more details related to the transaction in the form of an object. |\n| related_transaction_id | Unique transaction ID related to a receiver/donor card in the case of a points transfer from/to another card. | vtx_0c9afe802593b34b80 |",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nExport transactions that are associated with point movements on a loyalty card.\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique transaction ID assigned by Voucherify. | vtx_0cb7811f1c07765800 |\n| type | Transaction type. | - `POINTS_EXPIRATION`
- `POINTS_ADDITION`
- `POINTS_REMOVAL`
- `POINTS_TRANSFER_OUT`
- `POINTS_ACCRUAL`
- `POINTS_REFUND`
- `POINTS_REDEMPTION` |\n| source_id | Custom source ID of the transaction if one was included originally. | source_id_custom |\n| reason | Contains the reason for the transaction if one was included originally. | |\n| balance | The loyalty card balance after the transaction. | |\n| amount | The amount of loyalty points being allocated during the transaction. This value can either be negative or positive depending on the nature of the transaction. | |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the transaction was created. | 2022-03-09T09:16:32.521Z |\n| voucher_id | Unique Voucher ID. | v_dky7ksKfPX50Wb2Bxvcoeb1xT20b6tcp |\n| campaign_id | Parent campaign ID. | camp_FNYR4jhqZBM9xTptxDGgeNBV |\n| source| Channel through which the transaction was initiated. | - `API`
- `voucherify-web-ui`
- `Automation` |\n| details | More detailed information stored in the form of a JSON. | Provides more details related to the transaction in the form of an object. |\n| related_transaction_id | Unique transaction ID related to a receiver/donor card in the case of a points transfer from/to another card. | vtx_0c9afe802593b34b80 |",
"parameters": [],
"security": [
{
@@ -49688,11 +49713,12 @@
],
"post": {
"operationId": "export-loyalty-card-transactions-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Export Loyalty Card Transactions with campaign ID",
- "description": "Export transactions that are associated with point movements on a loyalty card.\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique transaction ID assigned by Voucherify. | vtx_0cb7811f1c07765800 |\n| type | Transaction type. | - `POINTS_EXPIRATION`
- `POINTS_ADDITION`
- `POINTS_REMOVAL`
- `POINTS_TRANSFER_OUT`
- `POINTS_ACCRUAL`
- `POINTS_REFUND`
- `POINTS_REDEMPTION` |\n| source_id | Custom source ID of the transaction if one was included originally. | source_id_custom |\n| reason | Contains the reason for the transaction if one was included originally. | |\n| balance | The loyalty card balance after the transaction. | |\n| amount | The amount of loyalty points being allocated during the transaction. This value can either be negative or positive depending on the nature of the transaction. | |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the transaction was created. | 2022-03-09T09:16:32.521Z |\n| voucher_id | Unique Voucher ID. | v_dky7ksKfPX50Wb2Bxvcoeb1xT20b6tcp |\n| campaign_id | Parent campaign ID. | camp_FNYR4jhqZBM9xTptxDGgeNBV |\n| source| Channel through which the transaction was initiated. | - `API`
- `voucherify-web-ui`
- `Automation` |\n| details | More detailed information stored in the form of a JSON. | Provides more details related to the transaction in the form of an object. |\n| related_transaction_id | Unique transaction ID related to a receiver/donor card in the case of a points transfer from/to another card. | vtx_0c9afe802593b34b80 |",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nExport transactions that are associated with point movements on a loyalty card.\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique transaction ID assigned by Voucherify. | vtx_0cb7811f1c07765800 |\n| type | Transaction type. | - `POINTS_EXPIRATION`
- `POINTS_ADDITION`
- `POINTS_REMOVAL`
- `POINTS_TRANSFER_OUT`
- `POINTS_ACCRUAL`
- `POINTS_REFUND`
- `POINTS_REDEMPTION` |\n| source_id | Custom source ID of the transaction if one was included originally. | source_id_custom |\n| reason | Contains the reason for the transaction if one was included originally. | |\n| balance | The loyalty card balance after the transaction. | |\n| amount | The amount of loyalty points being allocated during the transaction. This value can either be negative or positive depending on the nature of the transaction. | |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the transaction was created. | 2022-03-09T09:16:32.521Z |\n| voucher_id | Unique Voucher ID. | v_dky7ksKfPX50Wb2Bxvcoeb1xT20b6tcp |\n| campaign_id | Parent campaign ID. | camp_FNYR4jhqZBM9xTptxDGgeNBV |\n| source| Channel through which the transaction was initiated. | - `API`
- `voucherify-web-ui`
- `Automation` |\n| details | More detailed information stored in the form of a JSON. | Provides more details related to the transaction in the form of an object. |\n| related_transaction_id | Unique transaction ID related to a receiver/donor card in the case of a points transfer from/to another card. | vtx_0c9afe802593b34b80 |",
"parameters": [],
"security": [
{
@@ -49836,11 +49862,12 @@
],
"get": {
"operationId": "list-points-expiration",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Card Point Expiration",
- "description": "Retrieve loyalty point expiration buckets for a given loyalty card. Expired point buckets are not returned in this endpoint. You can use the [Exports API](/api-reference/exports/create-export) to retrieve a list of both `ACTIVE` and `EXPIRED` point buckets.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieve loyalty point expiration buckets for a given loyalty card. Expired point buckets are not returned in this endpoint. You can use the [Exports API](/api-reference/exports/create-export) to retrieve a list of both `ACTIVE` and `EXPIRED` point buckets.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -49947,11 +49974,12 @@
],
"post": {
"operationId": "create-points-expiration-export",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Export Loyalty Campaign Point Expiration",
- "description": "Schedule the generation of a point expiration CSV file for a particular campaign. It can list point buckets, which can have an `ACTIVE` or `EXPIRED` status.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nSchedule the generation of a point expiration CSV file for a particular campaign. It can list point buckets, which can have an `ACTIVE` or `EXPIRED` status.",
"parameters": [],
"security": [
{
@@ -50120,11 +50148,12 @@
],
"get": {
"operationId": "list-earning-rules",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Earning Rules",
- "description": "Returns a list of all earning rules within a given campaign.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nReturns a list of all earning rules within a given campaign.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -50690,11 +50719,12 @@
},
"post": {
"operationId": "create-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Create Earning Rule",
- "description": "Create earning rules for a loyalty campaign.\n\n> 🚧 Maximum number of earning rules\n>\n> You can create up to 100 earning rules per project. The limit can be customized for clients with a single-tenant setup.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nCreate earning rules for a loyalty campaign.\n\n\n\nMaximum number of earning rules\n\nYou can create up to 100 earning rules per project. The limit can be customized for clients with a single-tenant setup.\n\n",
"parameters": [],
"security": [
{
@@ -51865,11 +51895,12 @@
],
"get": {
"operationId": "get-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Earning Rule",
- "description": "Retrieves an earning rule assigned to a campaign.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieves an earning rule assigned to a campaign.",
"parameters": [],
"security": [
{
@@ -52148,11 +52179,12 @@
},
"put": {
"operationId": "update-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Update Earning Rule",
- "description": "Update an earning rule definition.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nUpdate an earning rule definition.",
"parameters": [],
"security": [
{
@@ -52262,11 +52294,12 @@
},
"delete": {
"operationId": "delete-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Delete Earning Rule",
- "description": "This method deletes an earning rule for a specific loyalty campaign.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nThis method deletes an earning rule for a specific loyalty campaign.",
"parameters": [],
"security": [
{
@@ -52308,11 +52341,12 @@
],
"post": {
"operationId": "enable-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Enable Earning Rule",
- "description": "Enable an earning rule.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nEnable an earning rule.",
"parameters": [],
"security": [
{
@@ -52395,11 +52429,12 @@
],
"post": {
"operationId": "disable-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Disable Earning Rule",
- "description": "Disable an earning rule.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nDisable an earning rule.",
"parameters": [],
"security": [
{
@@ -52467,11 +52502,12 @@
],
"get": {
"operationId": "list-member-rewards",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Rewards",
- "description": "Retrieves the list of rewards that the given customer (identified by `member_id`, which is a loyalty card assigned to a particular customer) **can get in exchange for loyalty points**. \n\nYou can use the `affordable_only` parameter to limit the results to rewards that the customer can actually afford (only rewards whose price in points is not higher than the loyalty points balance on a loyalty card). \n\nPlease note that rewards that are disabled (i.e. set to `Not Available` in the Dashboard) for a given loyalty tier reward mapping will not be returned in this endpoint.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieves the list of rewards that the given customer (identified by `member_id`, which is a loyalty card assigned to a particular customer) **can get in exchange for loyalty points**. \n\nYou can use the `affordable_only` parameter to limit the results to rewards that the customer can actually afford (only rewards whose price in points is not higher than the loyalty points balance on a loyalty card). \n\nPlease note that rewards that are disabled (i.e. set to `Not Available` in the Dashboard) for a given loyalty tier reward mapping will not be returned in this endpoint.",
"parameters": [
{
"in": "query",
@@ -52719,11 +52755,12 @@
],
"get": {
"operationId": "get-reward-details",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Reward Details",
- "description": "Get reward details in the context of a loyalty campaign and reward assignment ID.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nGet reward details in the context of a loyalty campaign and reward assignment ID.",
"parameters": [],
"security": [
{
@@ -52827,11 +52864,12 @@
],
"get": {
"operationId": "list-reward-assignments-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Reward Assignments with campaign ID",
- "description": "Returns reward assignments from a given loyalty campaign.\n\n> 📘 Alternative endpoint\n>\n> This endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-campaign-rewards). The URL was re-designed to be more contextual to the type of data returned in the response.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nReturns reward assignments from a given loyalty campaign.\n\n\n\nAlternative endpoint\n\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-campaign-rewards). The URL was re-designed to be more contextual to the type of data returned in the response.\n\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -53027,11 +53065,12 @@
],
"get": {
"operationId": "list-reward-assignments-2",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Campaign Rewards",
- "description": "Returns active rewards from a given loyalty campaign.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nReturns active rewards from a given loyalty campaign.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -53121,11 +53160,12 @@
},
"post": {
"operationId": "create-reward-assignment-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Create Loyalty Campaign Reward Assignment",
- "description": "Add rewards to a loyalty campaign.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nAdd rewards to a loyalty campaign.",
"parameters": [],
"security": [
{
@@ -53241,11 +53281,12 @@
],
"get": {
"operationId": "get-reward-assignment-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Campaign Reward Assignments",
- "description": "Retrieve specific reward assignment.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieve specific reward assignment.",
"parameters": [],
"security": [
{
@@ -53312,11 +53353,12 @@
],
"get": {
"operationId": "get-reward-assignment-2",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Campaign Reward Assignment",
- "description": "Retrieve specific reward assignment.\n\n> 📘 Alternative endpoint\n>\n> This endpoint is an alternative to this [endpoint](/api-reference/loyalties/get-campaign-reward-assignments). ",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieve specific reward assignment.\n\n\n\nAlternative endpoint\n\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/get-campaign-reward-assignments).\n\n",
"parameters": [],
"security": [
{
@@ -53361,11 +53403,12 @@
},
"put": {
"operationId": "update-reward-assignment-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Update Campaign Reward Assignment",
- "description": "Updates rewards parameters, i.e. the points cost for the specific reward.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nUpdates rewards parameters, i.e. the points cost for the specific reward.",
"parameters": [],
"security": [
{
@@ -53432,11 +53475,12 @@
},
"delete": {
"operationId": "delete-reward-assignment-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Delete Campaign Reward Assignment",
- "description": "This method deletes a reward assignment for a particular loyalty campaign.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nThis method deletes a reward assignment for a particular loyalty campaign.",
"parameters": [],
"security": [
{
@@ -53478,11 +53522,12 @@
],
"post": {
"operationId": "redeem-reward-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Redeem Reward with campaign ID",
- "description": "Exchange points from a loyalty card for a specified reward. This API method returns an assigned award in the response. It means that if a requesting customer gets a coupon code with a discount for the next order, that discount code will be visible in response as part of the reward object definition.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nExchange points from a loyalty card for a specified reward. This API method returns an assigned award in the response. It means that if a requesting customer gets a coupon code with a discount for the next order, that discount code will be visible in response as part of the reward object definition.",
"parameters": [],
"security": [
{
@@ -54922,11 +54967,12 @@
],
"post": {
"operationId": "redeem-reward",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Redeem Reward",
- "description": "\n> 📘 Alternative endpoint\n>\n>This endpoint is an alternative to this [endpoint](/api-reference/loyalties/redeem-reward-with-campaign-id). The URL was re-designed to allow you to redeem a reward without having to provide the `campaignId` as a path parameter.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\n\n\n\nAlternative endpoint\n\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/redeem-reward-with-campaign-id). The URL was re-designed to allow you to redeem a reward without having to provide the `campaignId` as a path parameter.\n\n",
"parameters": [],
"security": [
{
@@ -55205,11 +55251,12 @@
],
"get": {
"operationId": "list-loyalty-tiers",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Tiers",
- "description": "Retrieve a list of loyalty tiers which were added to the loyalty program.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieve a list of loyalty tiers which were added to the loyalty program.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -55365,11 +55412,12 @@
},
"post": {
"operationId": "create-in-bulk-loyalty-tiers",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Create loyalty tiers",
- "description": "Creates loyalty tiers for desired campaign.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nCreates loyalty tiers for desired campaign.",
"parameters": [],
"security": [
{
@@ -55429,11 +55477,12 @@
],
"get": {
"operationId": "get-loyalty-tier",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Loyalty Tier",
- "description": "Retrieve a loyalty tier from a loyalty campaign by the loyalty tier ID.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieve a loyalty tier from a loyalty campaign by the loyalty tier ID.",
"parameters": [],
"security": [
{
@@ -55522,11 +55571,12 @@
],
"get": {
"operationId": "list-member-loyalty-tier",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member's Loyalty Tiers",
- "description": "Retrieve member tiers using the loyalty card ID.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieve member tiers using the loyalty card ID.",
"parameters": [],
"security": [
{
@@ -55640,11 +55690,12 @@
],
"get": {
"operationId": "list-loyalty-tier-earning-rules",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Tier Earning Rules",
- "description": "Retrieve available earning rules for a given tier and the calculation method for earning points.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieve available earning rules for a given tier and the calculation method for earning points.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -56256,11 +56307,12 @@
],
"get": {
"operationId": "list-loyalty-tier-rewards",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Tier Rewards",
- "description": "Get available rewards for a given tier.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nGet available rewards for a given tier.",
"parameters": [],
"security": [
{
@@ -56729,7 +56781,7 @@
"Customers"
],
"summary": "Create Customer",
- "description": "Creates a customer object.\n\n\n\n> 📘 Upsert Mode\n>\n> If you pass an `id` or a `source_id` that already exists in the customer database, Voucherify will return a related customer object with updated fields.",
+ "description": "Creates a customer object.\n\n\n\n\n\nUpsert Mode\n\nIf you pass an `id` or a `source_id` that already exists in the customer database, Voucherify will return a related customer object with updated fields.\n\n",
"parameters": [],
"security": [
{
@@ -57195,7 +57247,7 @@
"Customers"
],
"summary": "Import and Update Customers using CSV",
- "description": "This API method lets you import or update customer data. To get a proper and valid response, please send a CSV file with data separated by commas. \n\n## Request Example\n\n```cURL\ncurl -X **POST** \\\n https://api.voucherify.io/v1/customers/importCSV \\\n -F file=@/path/to/customers.csv \\\n -H \"X-App-Id: c70a6f00-cf91-4756-9df5-47628850002b\" \\\n -H \"X-App-Token: 3266b9f8-e246-4f79-bdf0-833929b1380c\"\n```\n## CSV File Format\n\nThe CSV file has to include headers in the first line. All properties which cannot be mapped to standard customer fields will be added to the metadata object.\n\n\n> 📘 Standard customer fields mapping\n>\n> **No spaces allowed in field names** \n> `Id`, `Name`, `Email`, `Phone`, `Birthdate`, `Source_id`, `Address_line_1`, `Address_line_2`, `Address_Postal_Code`, `Address_City`, `Address_State`, `Address_Country`, `Description`, `Metadata_name_1`, `Metadata_name_2`\n\n## Update Customers using CSV\n\nIf you would like to update customer's data, you can do it using the CSV file with new data. However, remember to include a `source_id` in your CSV file to manage the update successfully.\n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
+ "description": "This API method lets you import or update customer data. To get a proper and valid response, please send a CSV file with data separated by commas. \n\n## Request Example\n\n```cURL\ncurl -X **POST** \\\n https://api.voucherify.io/v1/customers/importCSV \\\n -F file=@/path/to/customers.csv \\\n -H \"X-App-Id: c70a6f00-cf91-4756-9df5-47628850002b\" \\\n -H \"X-App-Token: 3266b9f8-e246-4f79-bdf0-833929b1380c\"\n```\n## CSV File Format\n\nThe CSV file has to include headers in the first line. All properties which cannot be mapped to standard customer fields will be added to the metadata object.\n\n\n\n\nStandard customer fields mapping\n\n**No spaces allowed in field names** `Id`, `Name`, `Email`, `Phone`, `Birthdate`, `Source_id`, `Address_line_1`, `Address_line_2`, `Address_Postal_Code`, `Address_City`, `Address_State`, `Address_Country`, `Description`, `Metadata_name_1`, `Metadata_name_2`\n\n\n\n## Update Customers using CSV\n\nIf you would like to update customer's data, you can do it using the CSV file with new data. However, remember to include a `source_id` in your CSV file to manage the update successfully.\n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
"parameters": [],
"security": [
{
@@ -58529,7 +58581,7 @@
"Orders"
],
"summary": "Create Order",
- "description": "Creates an order object and triggers an order creation event.\n\n\n\n> 📘 Upsert Mode\n>\n> If you pass an `id` or a `source_id` that already exists in the order database, Voucherify will return a related order object with updated fields.",
+ "description": "Creates an order object and triggers an order creation event.\n\n\n\n\n\nUpsert Mode\n\nIf you pass an `id` or a `source_id` that already exists in the order database, Voucherify will return a related order object with updated fields.\n\n",
"parameters": [],
"security": [
{
@@ -58975,7 +59027,7 @@
"Orders"
],
"summary": "Import Orders",
- "description": "\n\n> 🚧 Historical orders\n>\n> This endpoint should only be used to import historical orders into Voucherify. For on-going synchronization, the [update order](/api-reference/orders/update-order) endpoint should be used. This is critical because this endpoint does not store events or launch distributions.\nThe orders will also have a `created_at` date that's assigned when they've been imported to Voucherify. To keep track of the actual order creation date, add an order metadata in ISO 8601 date or date time format to each imported order.\n\n## Limitations\n\n### Import volume\n\nThere can be only a single on-going order import per tenant per project at a given time. The user can schedule more imports but those extra imports will be scheduled to run in sequence one by one. \n\n### Maximum count of orders in single import\n\nThere is a `2000` limit of orders per one request.\n\n## Notifications\n\nThere are no notifications on the Dashboard because this import is launched via the API.\n\n## Triggered actions\n \nIf you import orders with customers, then a logic will be scheduled responsible for placing these customers into segments and refreshing the segment's summary. Consequently, this update will trigger \n- Customers entering into segments\n- Distributions based on any rules tied to customer entering segment(s)\n- Earning rules based on the customer entering segment(s)\n\n## What is not triggered\n\n1. No webhooks are triggered during the import of orders - for both orders and upserted products / SKUs. \n\n2. Distributions based on Order Update, Order Paid, Order Created and Order Cancelled. In other words if you have a distribution based on Order Paid and you import an order with a `PAID` status, the distribution is not going to be triggered. \n\n3. No events are created during the import of orders - for both orders and upserted products / SKUs. In other words you won't see any events in the Activity tab in the Dashboard such as Order created or Order paid. If you are additionally upserting products / SKUs, then you won't see the Product created events listed, etc. \n\n4. Earning rules based on Order Paid won't be triggered.\n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request with [GET Async Action](/api-reference/async-actions/get-async-action) endpoint.",
+ "description": "\n\n\n\nHistorical orders\n\nThis endpoint should only be used to import historical orders into Voucherify. For on-going synchronization, the [update order](/api-reference/orders/update-order) endpoint should be used. This is critical because this endpoint does not store events or launch distributions.\n\n\nThe orders will also have a `created_at` date that's assigned when they've been imported to Voucherify. To keep track of the actual order creation date, add an order metadata in ISO 8601 date or date time format to each imported order.\n\n## Limitations\n\n### Import volume\n\nThere can be only a single on-going order import per tenant per project at a given time. The user can schedule more imports but those extra imports will be scheduled to run in sequence one by one. \n\n### Maximum count of orders in single import\n\nThere is a `2000` limit of orders per one request.\n\n## Notifications\n\nThere are no notifications on the Dashboard because this import is launched via the API.\n\n## Triggered actions\n \nIf you import orders with customers, then a logic will be scheduled responsible for placing these customers into segments and refreshing the segment's summary. Consequently, this update will trigger \n- Customers entering into segments\n- Distributions based on any rules tied to customer entering segment(s)\n- Earning rules based on the customer entering segment(s)\n\n## What is not triggered\n\n1. No webhooks are triggered during the import of orders - for both orders and upserted products / SKUs. \n\n2. Distributions based on Order Update, Order Paid, Order Created and Order Cancelled. In other words if you have a distribution based on Order Paid and you import an order with a `PAID` status, the distribution is not going to be triggered. \n\n3. No events are created during the import of orders - for both orders and upserted products / SKUs. In other words you won't see any events in the Activity tab in the Dashboard such as Order created or Order paid. If you are additionally upserting products / SKUs, then you won't see the Product created events listed, etc. \n\n4. Earning rules based on Order Paid won't be triggered.\n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request with [GET Async Action](/api-reference/async-actions/get-async-action) endpoint.",
"parameters": [],
"security": [
{
@@ -59577,7 +59629,7 @@
"Products"
],
"summary": "Create Product",
- "description": "Creates a product object.\n\n\n\n> 📘 Upsert Mode\n>\n> If you pass an `id` or a `source_id` that already exists in the product database, Voucherify will return a related product object with updated fields.",
+ "description": "Creates a product object.\n\n\n\n\n\nUpsert Mode\n\nIf you pass an `id` or a `source_id` that already exists in the product database, Voucherify will return a related product object with updated fields.\n\n",
"parameters": [],
"security": [
{
@@ -60237,7 +60289,7 @@
"Products"
],
"summary": "Create SKU",
- "description": "This method adds product variants to a [created product](/api-reference/products/create-product). \n\n> 📘 Upsert Mode\n>\n> If you pass an `id` or a `source_id` that already exists in the sku database, Voucherify will return a related sku object with updated fields.",
+ "description": "This method adds product variants to a [created product](/api-reference/products/create-product). \n\n\n\nUpsert Mode\n\nIf you pass an `id` or a `source_id` that already exists in the sku database, Voucherify will return a related sku object with updated fields.\n\n",
"parameters": [],
"security": [
{
@@ -60453,7 +60505,7 @@
"Products"
],
"summary": "Import Products using CSV",
- "description": "Import products into the repository using a CSV file.\n\nThe CSV file has to include headers in the first line.\n\n\n\n> 📘 Standard product fields mapping\n>\n> - Create a **comma separated value (CSV) file** or download our CSV import template. You can find an example template [here](https://s3.amazonaws.com/helpscout.net/docs/assets/5902f1c12c7d3a057f88a36d/attachments/627b82ed68d51e779443f550/Import_products_template.csv).\n> - Supported CSV file headers: `name,source_id,price,attributes,image_url,Metadata_property_name`\n> - **Name** is a **required** field. The remaining fields in the CSV template are optional.\n> - Override/Update products' **names** in Voucherify using this method. Data will be updated for each product included in the CSV file whose **source_id** matches a source ID in Voucherify. No other data can be updated other than the product name.\n> - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 standard**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11\n> - `YYYY-MM-DD`\n> - `YYYY-MM-DDTHH`\n> - `YYYY-MM-DDTHH:mm`\n> - `YYYY-MM-DDTHH:mm:ss`\n> - `YYYY-MM-DDTHH:mm:ssZ`\n> - `YYYY-MM-DDTHH:mm:ssZ`\n> - `YYYY-MM-DDTHH:mm:ss.SSSZ`\n> - Columns that cannot be mapped to standard fields, will be mapped to **Custom attributes** and added as **products' metadata**. There is no limit on the number of custom attributes that you can import as metadata. \n> - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](/prepare/metadata#add-metadata).\n> - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e \"attribute1,attribute2\".\n> - Headers with metadata names **can't contain white-space characters**.\n> - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: \n> - array of strings: \"subscribed,premium\" \n> - array of numbers: \"123,234\". \n> - array of dates: \"2000-01-01,2000-01-02\"\n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
+ "description": "Import products into the repository using a CSV file.\n\nThe CSV file has to include headers in the first line.\n\n\n\n\n\nStandard product fields mapping\n\n- Create a **comma separated value (CSV) file** or download our CSV import template. You can find an example template [here](https://s3.amazonaws.com/helpscout.net/docs/assets/5902f1c12c7d3a057f88a36d/attachments/627b82ed68d51e779443f550/Import_products_template.csv).\n- Supported CSV file headers: `name,source_id,price,attributes,image_url,Metadata_property_name`\n- **Name** is a **required** field. The remaining fields in the CSV template are optional.\n- Override/Update products' **names** in Voucherify using this method. Data will be updated for each product included in the CSV file whose **source_id** matches a source ID in Voucherify. No other data can be updated other than the product name.\n- Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 standard**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11\n - `YYYY-MM-DD`\n - `YYYY-MM-DDTHH`\n - `YYYY-MM-DDTHH:mm`\n - `YYYY-MM-DDTHH:mm:ss`\n - `YYYY-MM-DDTHH:mm:ssZ`\n - `YYYY-MM-DDTHH:mm:ssZ`\n - `YYYY-MM-DDTHH:mm:ss.SSSZ`\n- Columns that cannot be mapped to standard fields, will be mapped to **Custom attributes** and added as **products' metadata**. There is no limit on the number of custom attributes that you can import as metadata.\n- To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](/prepare/metadata#add-metadata).\n- **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e \"attribute1,attribute2\".\n- Headers with metadata names **can't contain white-space characters**.\n- If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example:\n - array of strings: \"subscribed,premium\"\n - array of numbers: \"123,234\".\n - array of dates: \"2000-01-01,2000-01-02\"\n\n\n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
"parameters": [],
"security": [
{
@@ -60504,7 +60556,7 @@
"Products"
],
"summary": "Import SKUs using CSV",
- "description": "Import SKUs into the repository using a CSV file.\n\nThe CSV file has to include headers in the first line. All properties which cannot be mapped to standard SKU fields will be added to the metadata object. You can find an example template [here](https://s3.amazonaws.com/helpscout.net/docs/assets/5902f1c12c7d3a057f88a36d/attachments/627b98d08c9b585083488a4c/Import_SKUS_template.csv). \n\n> 🚧 Import sequence\n>\n> First import products using the [dedicated endpoint](/api-reference/products/import-products-using-csv), then import SKUs using this endpoint to properly match SKUs to products.\n\n\n\n> 📘 Standard SKU fields mapping\n>\n> - **Required** fields are `source_id` and `product_id`.\n> - Supported CSV file headers: `product_id,sku,source_id,price,image_url,attributes`\n> - SKU **source_id** must be unique in the entire product catalog, no duplicates are allowed.\n> - SKU attributes need to be in the form of a stringy-fied json, i.e.`\"{'color':'blue'}\"`. These attributes must be defined in the **product** beforehand so you can import them to the SKU.\n> - You can use this method to update the following parameters in bulk: **sku** and the sku **price**.\n> - Columns that cannot be mapped to standard fields will be mapped to Custom attributes and added as product metadata. There is no limit on the number of custom attributes that you can import as metadata.\n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
+ "description": "Import SKUs into the repository using a CSV file.\n\nThe CSV file has to include headers in the first line. All properties which cannot be mapped to standard SKU fields will be added to the metadata object. You can find an example template [here](https://s3.amazonaws.com/helpscout.net/docs/assets/5902f1c12c7d3a057f88a36d/attachments/627b98d08c9b585083488a4c/Import_SKUS_template.csv). \n\n\n\nImport sequence\n\nFirst import products using the [dedicated endpoint](/api-reference/products/import-products-using-csv), then import SKUs using this endpoint to properly match SKUs to products.\n\n\n\n\n\n\n\nStandard SKU fields mapping\n\n- **Required** fields are `source_id` and `product_id`.\n- Supported CSV file headers: `product_id,sku,source_id,price,image_url,attributes`\n- SKU **source_id** must be unique in the entire product catalog, no duplicates are allowed.\n- SKU attributes need to be in the form of a stringy-fied json, i.e.`\"{'color':'blue'}\"`. These attributes must be defined in the **product** beforehand so you can import them to the SKU.\n- You can use this method to update the following parameters in bulk: **sku** and the sku **price**.\n- Columns that cannot be mapped to standard fields will be mapped to Custom attributes and added as product metadata. There is no limit on the number of custom attributes that you can import as metadata.\n\n\n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
"parameters": [],
"security": [
{
@@ -61375,7 +61427,7 @@
"Validation Rules"
],
"summary": "Create Validation Rules",
- "description": "Create a validation rule.\n> 🚧 Managing validation rules\n>\n> It is recommended to [create or update validation rules](/personalize/create-validation-rules) in the Voucherify dashboard. The rule builder in the dashboard helps configuring the desired conditions in a convenient way. The API should not be used as a preferable way to create and manage validation rules.",
+ "description": "Create a validation rule.\n\n\nManaging validation rules\n\nIt is recommended to [create or update validation rules](/personalize/create-validation-rules) in the Voucherify dashboard. The rule builder in the dashboard helps configuring the desired conditions in a convenient way. The API should not be used as a preferable way to create and manage validation rules.\n\n",
"parameters": [],
"security": [
{
@@ -61639,7 +61691,7 @@
"Validation Rules"
],
"summary": "Update Validation Rule",
- "description": "Update validation rule parameters.\n> 🚧 Managing validation rules\n>\n> It is recommended to [create or update validation rules](/personalize/create-validation-rules) in the Voucherify dashboard. The rule builder in the dashboard helps configuring the desired conditions in a convenient way. The API should not be used as a preferable way to create and manage validation rules.",
+ "description": "Update validation rule parameters.\n\n\nManaging validation rules\n\nIt is recommended to [create or update validation rules](/personalize/create-validation-rules) in the Voucherify dashboard. The rule builder in the dashboard helps configuring the desired conditions in a convenient way. The API should not be used as a preferable way to create and manage validation rules.\n\n",
"parameters": [],
"security": [
{
@@ -62341,7 +62393,7 @@
"Segments"
],
"summary": "Create Segment",
- "description": "Create a customer segment.\n\n> 🚧 Limit on static segments\n>\n> There is a cap on the number of customers that you can assign to a static segment: **20,000**. If you would like to create a bigger segment, then you can use the unlimited `auto-update` or `passive` segment instead and use some customer metadata to build this segment.\n\n> 🚧 Limit on Active and Passive segments\n>\n> You can create a maximum of 100 passive and active segments.",
+ "description": "Create a customer segment.\n\n\n\nLimit on static segments\n\nThere is a cap on the number of customers that you can assign to a static segment: **20,000**. If you would like to create a bigger segment, then you can use the unlimited `auto-update` or `passive` segment instead and use some customer metadata to build this segment.\n\n\n\n\n\nLimit on Active and Passive segments\n\nYou can create a maximum of 100 passive and active segments.\n\n",
"parameters": [],
"security": [
{
@@ -63209,7 +63261,7 @@
"Exports"
],
"summary": "Create Export",
- "description": "Create export object. The export can be any of the following types: `voucher`, `redemption`, `publication`, `customer`, `order`, `points_expiration`, `voucher_transactions`, `product`, or `sku`. \n\n## Defaults\n\nIf you only specify the object type in the request body without specifying the fields, the API will return the following fields per export object:\n\n| **Export Object** | **Default fields returned** |\n|:---|:---|\n| order | `id`, `source_id`, `status` |\n| voucher | `code`, `voucher_type`, `value`, `discount_type` |\n| publication | `code`, `customer_id`, `date`, `channel` |\n| redemption | `id`, `object`, `voucher_code`, `customer_id`, `date`, `result` |\n| customer | `name`, `source_id` |\n| points_expiration | `id`, `campaign_id`, `voucher_id`, `status`, `expires_at`, `points` |\n| voucher_transactions | `id`, `type`, `source_id`, `status`, `reason`, `source`, `balance`, `amount`, `created_at` |\n| products | `id`, `name`, `price`, `image_url`, `source_id`, `attributes`, `created_at`|\n| SKU | `id`, `sku`, `product_id`, `currency`, `price`, `image_url`, `source_id`, `attributes`, `created_at`|\n\n> 📘 Date and time in the export API\n>\n> The exported date and times are always provided in the UTC time zone.\n## Fetching particular data sets\n\nUsing the `parameters` body parameter, you can narrow down which fields to export and how to filter the results. The fields are an array of strings containing the data that you would like to export. These fields define the headers in the CSV file. The array can be a combination of any of the following available fields:\n\n## Orders \n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique order ID. | ord_A69RIxEdRsPuC6i8gFGVHUft |\n| source_id | Unique order source ID. | 8638 |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the order was created. | 2022-03-09T09:16:32.521Z |\n| updated_at | Timestamp in ISO 8601 format representing the date and time when the order was last updated. | 2022-03-09T09:16:33.331Z |\n| status | Order status. | `PAID`, `CREATED`, `FULFILLED`, `CANCELED` |\n| amount | Total amount of order items. | 7700 |\n| discount_amount | Represents total amount of the discount applied to whole cart. | 500 |\n| items_discount_amount | Represents total amount of the discount applied to order line items. | 100 |\n| total_discount_amount | All discounts applied to the order including discounts applied to particular order line items and discounts applied to the whole cart. | 600 |\n| total_amount | Total order amount after applying all discounts. | 7100 |\n| customer_id | Customer unique ID. | cust_2G4fUQdCXUqp35nXNleav7bO |\n| referrer_id | Referrer unique ID. | cust_IkrTR674vvQvr9a4rDMiqglY |\n| metadata | Order metadata; expressed as metadata.X, where X is the name of the custom metadata property. | 1 |\n\n## Vouchers \n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique voucher ID. | v_HSnGD2vNIHYighTQxwcB4dtVAv8VOmZD |\n| code | Unique voucher code. | WELCOME100 |\n| voucher_type | Type of voucher. | `DISCOUNT_VOUCHER`, `GIFT_VOUCHER`, `LOYALTY_CARD` |\n| value | Value of voucher. | `DISCOUNT_VOUCHER` : amount, percent, unit
`GIFT_VOUCHER`: amount left to spend
`LOYALTY_CARD`: available usable points |\n| discount_type | The type of discount for a `DISCOUNT_VOUCHER`. | `AMOUNT`, `PERCENT`, `UNIT`, `FIXED` |\n| campaign | Unique campaign name. | Summer Discounts 20% off |\n| category | Tag defining the category that this voucher belongs to. | |\n| start_date | Start date defines when the code starts to be active. Activation timestamp is presented in the ISO 8601 format. Voucher is _inactive_ before this date. | 2020-12-10T23:00:00.000Z |\n| expiration_date | Expiration date defines when the code expires. Expiration timestamp is presented in the ISO 8601 format. Voucher is _inactive_ after this date. | 2023-12-31T23:00:00.000Z |\n| gift_balance | Amount left to spend. | 1000 |\n| loyalty_balance | Available usable points. | 2000 |\n| redemption_quantity | Maximum number of times a voucher can be redeemed. | 2 |\n| redemption_count | Total redemptions. | 59 |\n| active | Boolean indicating whether the voucher is available for use. | `true`, `false` |\n| qr_code | URL to QR representation of encrypted code. | |\n| bar_code | URL to barcode representation of encrypted code. | |\n| metadata | Custom voucher metadata. | |\n| is_referral_code | Boolean indicating whether the voucher is a referral code. | `true`, `false` |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the voucher was created. | 2022-04-14T09:55:46.814Z |\n| updated_at | Timestamp in ISO 8601 format representing the date and time when the voucher was last updated. | 2022-04-14T10:02:18.036Z |\n| validity_timeframe_interval | Defines the intervening time between two time points in ISO 8601 format, expressed as a duration. For example, a voucher with an interval of `P2D` will be active every other day. | P2D |\n| validity_timeframe_duration | Defines the amount of time the voucher will be active in ISO 8601 format. For example, a voucher with a duration of `PT1H` will be valid for a duration of one hour. | PT1H |\n| validity_day_of_week | Array corresponding to the particular days of the week in which the voucher is valid. | \"1,2,3,4,5\" |\n| discount_amount_limit | For `PERCENT` discount type, this is the maximum threshold allowed to be deducted. | 50 |\n| campaign_id | Parent campaign ID. | camp_7s3uXI44aKfIk5IhmeOPr6ic |\n| additional_info | An optional field to keep any extra textual information about the code such as a code description and details. | |\n| customer_id | Unique customer ID of the assigned owner to whom the voucher was published. | cust_7iUa6ICKyU6gH40dBU25kQU1 |\n| discount_unit_type | For `UNIT` discount type, either a shipping or product ID for a `UNIT` discount with one product. | prod_5h1pp1ng, prod_0a9f9aeddb019a42db |\n| discount_unit_effect | `UNIT` discount effect. | `ADD_MANY_ITEMS`, `ADD_MISSING_ITEMS`,`ADD_NEW_ITEMS` |\n| customer_source_id | Unique customer source id of the assigned owner to whom the voucher was published. | name.lastname@email.com |\n\n\n## Publications\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| voucher_code | Unique voucher code. | WELCOME100 |\n| customer_id | Customer unique ID. | cust_7iUa6ICKyU6gH40dBU25kQU1 |\n| customer_source_id | Unique customer source id of the assigned owner to whom the voucher was published. | name.lastname@email.com |\n| date | Timestamp in ISO 8601 format representing the date and time when the voucher was published. | 2022-04-28T10:19:30.792Z |\n| channel | Publication channel. | voucherify-website |\n| campaign | Unique campaign name. | Summer Discounts 20% off |\n| is_winner | | |\n| metadata | Custom publication metadata. | |\n\n## Redemptions\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique redemption ID. | r_0acf3a6dae00e679c8, rf_0acf3a495740e679b8 |\n| object | Object being exported; by default `redemption`. | redemption |\n| date | Timestamp in ISO 8601 format representing the date and time when the voucher was redeemed. | 2022-03-23T08:52:24.867Z |\n| voucher_code | Unique voucher code redeemed. | WELCOME100 |\n| campaign | Parent campaign name of voucher if applicable. | Summer Discounts 20% off |\n| promotion_tier_id | | promo_Mwy9XpA0TLctSGriM5kum0qp |\n| customer_id | Unique customer ID of redeeming customer. | cust_nk0N1uNQ1YnupAoJGOgvsODC |\n| customer_source_id | Unique source ID of redeeming customer. | name.lastname@email.com |\n| customer_name | Customer name. | John Smith |\n| tracking_id | | track_Pw6r3ejnml43kIwNS4Zj09KZ67xOfLUy |\n| order_amount | Total order amount before applying all discounts. | 1000 |\n| gift_amount | Gift credits used for redemption. | 10 |\n| loyalty_points | | 12 |\n| result | Tells you whether the redemption succeeded. | `SUCCESS`, `FAILURE` |\n| failure_code | Internal Voucherify code for reason why redemption failed. | invalid_customer |\n| failure_message | A human-readable message providing a short description explaining why the redemption failed. | Customer must be a holder of a loyalty card. |\n| metadata | Custom redemption metadata. | |\n\n## Customers\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| name | Customer name. | John Smith |\n| id | Unique customer ID. | cust_J1CDUdbqn5Exva8ASWk1Fq0j |\n| description | An arbitrary string that you can attach to a customer object. | Customer requesting to be added to VIP tier. |\n| email | Customer's email. | name.lastname@email.com |\n| source_id | Unique custom customer identifier. | name.lastname@email.com |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the customer was created. | 2022-02-03T13:10:11.928Z |\n| address_city | City | Houston |\n| address_state | State | TX |\n| address_line_1 | First line of customer's address. | 72738 Main St |\n| address_line_2 | Second line of customer's address. | Bld 2, Apt 4 |\n| address_country | Country | United States of America |\n| address_postal_code | Postal code (ZIP code) | 77042-4143 |\n| redemptions_total_redeemed | Total customer redemptions. | 5 |\n| redemptions_total_failed | Total customer failed redemptions. | 2 |\n| redemptions_total_succeeded | Total customer succeeded redemptions. | 3 |\n| redemptions_total_rolled_back | Total customer redemptions that were rolled back. | 3 |\n| redemptions_total_rollback_failed | Total customer redemptions that were unsuccessfully rolled back. | 2 |\n| redemptions_total_rollback_succeeded | Total customer redemptions that were successfully rolled back. | 1 |\n| orders_total_amount | Total sum of order amounts over customer lifetime. Value is multiplied by 100 to precisely represent 2 decimal places. | 10000 (represents $100) |\n| orders_total_count | Total number of customer orders. | 2 |\n| orders_average_amount | Average amount spent on orders. Value is multiplied by 100 to precisely represent 2 decimal places. | 5000 (represents $50) |\n| orders_last_order_amount | How much did the customer spend on their last order. Value is multiplied by 100 to precisely represent 2 decimal places. | 5000 (represents $50) |\n| orders_last_order_date | When was the last customer order; timestamp in ISO 8601 format representing the date and time. | 2022-02-03T13:17:30.630Z |\n| loyalty_points | Sum of customer's loyalty points to go across all loyalty cards. | 2000 |\n| loyalty_referred_customers | How many customers were referred by this customer. | 3 |\n| updated_at | Timestamp in ISO 8601 format representing the date and time when the customer was updated. | 2022-02-14T14:10:14.305Z |\n| phone | Customer's phone number. | +1 (294) 752-1846 |\n| birthday | `Deprecated`. ~~Customer's birthday~~. | 2022-01-01 |\n| metadata | Customer metadata. | All metadata fields defined in Metadata Schema for the Customer object. |\n| birthdate | Customer's birthdate. | 2022-01-01 |\n\n## Points Expirations\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Loyalty points bucket ID. | lopb_Wl1o3EjJIHSNjvO5BDLy4z1n |\n| campaign_id | Campaign ID of the parent loyalty campaign. | camp_7s3uXI44aKfIk5IhmeOPr6ic |\n| voucher_id | Voucher ID of the parent loyalty card. | v_YLn0WVWXSXbUfDvxgrgUbtfJ3SQIY655 |\n| status | Status of the loyalty point bucket. | `ACTIVE` or `EXPIRED` |\n| expires_at | Timestamp in ISO 8601 format representing the date when the points expire. | 2022-06-30 |\n| points | Number of points. | 1000 |\n\n ## Gift Card Transactions\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique transaction ID. | vtx_0cb7811f1c07765800 |\n| type | Transaction type. | - `CREDITS_REMOVAL`
- `CREDITS_ADDITION`
- `CREDITS_REFUND`
- `CREDITS_REDEMPTION` |\n| source_id | Unique transaction source ID. | 8638 |\n| reason | Contains the reason for the transaction if one was included originally. | |\n| balance | The gift card or loyalty card balance after the transaction. | |\n| amount | The amount of gift card or loyalty card credits being allocated during the transaction. This value can either be negative or positive depending on the nature of the transaction. | |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the transaction was created. | 2022-03-09T09:16:32.521Z |\n| voucher_id | Unique Voucher ID. | v_dky7ksKfPX50Wb2Bxvcoeb1xT20b6tcp |\n| campaign_id | Parent campaign ID. | camp_FNYR4jhqZBM9xTptxDGgeNBV |\n| source| Channel through which the transaction was initiated. | API |\n| details | More detailed information stored in the form of a JSON. | Provides more details related to the transaction in the form of an object. |\n\n ## Loyalty Card Transactions\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique transaction ID assigned by Voucherify. | vtx_0cb7811f1c07765800 |\n| type | Transaction type. | - `POINTS_EXPIRATION`
- `POINTS_ADDITION`
- `POINTS_REMOVAL`
- `POINTS_TRANSFER_OUT`
- `POINTS_ACCRUAL`
- `POINTS_REFUND`
- `POINTS_REDEMPTION` |\n| source_id | Custom source ID of the transaction if one was included originally. | source_id_custom |\n| reason | Contains the reason for the transaction if one was included originally. | |\n| balance | The loyalty card balance after the transaction. | |\n| amount | The amount of loyalty points being allocated during the transaction. This value can either be negative or positive depending on the nature of the transaction. | |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the transaction was created. | 2022-03-09T09:16:32.521Z |\n| voucher_id | Unique Voucher ID. | v_dky7ksKfPX50Wb2Bxvcoeb1xT20b6tcp |\n| campaign_id | Parent campaign ID. | camp_FNYR4jhqZBM9xTptxDGgeNBV |\n| source| Channel through which the transaction was initiated. | - `API`
- `voucherify-web-ui`
- `Automation` |\n| details | More detailed information stored in the form of a JSON. | Provides more details related to the transaction in the form of an object. |\n| related_transaction_id | Unique transaction ID related to a receiver/donor card in the case of a points transfer from/to another card. | vtx_0c9afe802593b34b80 |",
+ "description": "Create export object. The export can be any of the following types: `voucher`, `redemption`, `publication`, `customer`, `order`, `points_expiration`, `voucher_transactions`, `product`, or `sku`. \n\n## Defaults\n\nIf you only specify the object type in the request body without specifying the fields, the API will return the following fields per export object:\n\n| **Export Object** | **Default fields returned** |\n|:---|:---|\n| order | `id`, `source_id`, `status` |\n| voucher | `code`, `voucher_type`, `value`, `discount_type` |\n| publication | `code`, `customer_id`, `date`, `channel` |\n| redemption | `id`, `object`, `voucher_code`, `customer_id`, `date`, `result` |\n| customer | `name`, `source_id` |\n| points_expiration | `id`, `campaign_id`, `voucher_id`, `status`, `expires_at`, `points` |\n| voucher_transactions | `id`, `type`, `source_id`, `status`, `reason`, `source`, `balance`, `amount`, `created_at` |\n| products | `id`, `name`, `price`, `image_url`, `source_id`, `attributes`, `created_at`|\n| SKU | `id`, `sku`, `product_id`, `currency`, `price`, `image_url`, `source_id`, `attributes`, `created_at`|\n\n\n\nDate and time in the export API\n\nThe exported date and times are always provided in the UTC time zone.\n\n\n## Fetching particular data sets\n\nUsing the `parameters` body parameter, you can narrow down which fields to export and how to filter the results. The fields are an array of strings containing the data that you would like to export. These fields define the headers in the CSV file. The array can be a combination of any of the following available fields:\n\n## Orders \n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique order ID. | ord_A69RIxEdRsPuC6i8gFGVHUft |\n| source_id | Unique order source ID. | 8638 |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the order was created. | 2022-03-09T09:16:32.521Z |\n| updated_at | Timestamp in ISO 8601 format representing the date and time when the order was last updated. | 2022-03-09T09:16:33.331Z |\n| status | Order status. | `PAID`, `CREATED`, `FULFILLED`, `CANCELED` |\n| amount | Total amount of order items. | 7700 |\n| discount_amount | Represents total amount of the discount applied to whole cart. | 500 |\n| items_discount_amount | Represents total amount of the discount applied to order line items. | 100 |\n| total_discount_amount | All discounts applied to the order including discounts applied to particular order line items and discounts applied to the whole cart. | 600 |\n| total_amount | Total order amount after applying all discounts. | 7100 |\n| customer_id | Customer unique ID. | cust_2G4fUQdCXUqp35nXNleav7bO |\n| referrer_id | Referrer unique ID. | cust_IkrTR674vvQvr9a4rDMiqglY |\n| metadata | Order metadata; expressed as metadata.X, where X is the name of the custom metadata property. | 1 |\n\n## Vouchers \n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique voucher ID. | v_HSnGD2vNIHYighTQxwcB4dtVAv8VOmZD |\n| code | Unique voucher code. | WELCOME100 |\n| voucher_type | Type of voucher. | `DISCOUNT_VOUCHER`, `GIFT_VOUCHER`, `LOYALTY_CARD` |\n| value | Value of voucher. | `DISCOUNT_VOUCHER` : amount, percent, unit
`GIFT_VOUCHER`: amount left to spend
`LOYALTY_CARD`: available usable points |\n| discount_type | The type of discount for a `DISCOUNT_VOUCHER`. | `AMOUNT`, `PERCENT`, `UNIT`, `FIXED` |\n| campaign | Unique campaign name. | Summer Discounts 20% off |\n| category | Tag defining the category that this voucher belongs to. | |\n| start_date | Start date defines when the code starts to be active. Activation timestamp is presented in the ISO 8601 format. Voucher is _inactive_ before this date. | 2020-12-10T23:00:00.000Z |\n| expiration_date | Expiration date defines when the code expires. Expiration timestamp is presented in the ISO 8601 format. Voucher is _inactive_ after this date. | 2023-12-31T23:00:00.000Z |\n| gift_balance | Amount left to spend. | 1000 |\n| loyalty_balance | Available usable points. | 2000 |\n| redemption_quantity | Maximum number of times a voucher can be redeemed. | 2 |\n| redemption_count | Total redemptions. | 59 |\n| active | Boolean indicating whether the voucher is available for use. | `true`, `false` |\n| qr_code | URL to QR representation of encrypted code. | |\n| bar_code | URL to barcode representation of encrypted code. | |\n| metadata | Custom voucher metadata. | |\n| is_referral_code | Boolean indicating whether the voucher is a referral code. | `true`, `false` |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the voucher was created. | 2022-04-14T09:55:46.814Z |\n| updated_at | Timestamp in ISO 8601 format representing the date and time when the voucher was last updated. | 2022-04-14T10:02:18.036Z |\n| validity_timeframe_interval | Defines the intervening time between two time points in ISO 8601 format, expressed as a duration. For example, a voucher with an interval of `P2D` will be active every other day. | P2D |\n| validity_timeframe_duration | Defines the amount of time the voucher will be active in ISO 8601 format. For example, a voucher with a duration of `PT1H` will be valid for a duration of one hour. | PT1H |\n| validity_day_of_week | Array corresponding to the particular days of the week in which the voucher is valid. | \"1,2,3,4,5\" |\n| discount_amount_limit | For `PERCENT` discount type, this is the maximum threshold allowed to be deducted. | 50 |\n| campaign_id | Parent campaign ID. | camp_7s3uXI44aKfIk5IhmeOPr6ic |\n| additional_info | An optional field to keep any extra textual information about the code such as a code description and details. | |\n| customer_id | Unique customer ID of the assigned owner to whom the voucher was published. | cust_7iUa6ICKyU6gH40dBU25kQU1 |\n| discount_unit_type | For `UNIT` discount type, either a shipping or product ID for a `UNIT` discount with one product. | prod_5h1pp1ng, prod_0a9f9aeddb019a42db |\n| discount_unit_effect | `UNIT` discount effect. | `ADD_MANY_ITEMS`, `ADD_MISSING_ITEMS`,`ADD_NEW_ITEMS` |\n| customer_source_id | Unique customer source id of the assigned owner to whom the voucher was published. | name.lastname@email.com |\n\n\n## Publications\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| voucher_code | Unique voucher code. | WELCOME100 |\n| customer_id | Customer unique ID. | cust_7iUa6ICKyU6gH40dBU25kQU1 |\n| customer_source_id | Unique customer source id of the assigned owner to whom the voucher was published. | name.lastname@email.com |\n| date | Timestamp in ISO 8601 format representing the date and time when the voucher was published. | 2022-04-28T10:19:30.792Z |\n| channel | Publication channel. | voucherify-website |\n| campaign | Unique campaign name. | Summer Discounts 20% off |\n| is_winner | | |\n| metadata | Custom publication metadata. | |\n\n## Redemptions\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique redemption ID. | r_0acf3a6dae00e679c8, rf_0acf3a495740e679b8 |\n| object | Object being exported; by default `redemption`. | redemption |\n| date | Timestamp in ISO 8601 format representing the date and time when the voucher was redeemed. | 2022-03-23T08:52:24.867Z |\n| voucher_code | Unique voucher code redeemed. | WELCOME100 |\n| campaign | Parent campaign name of voucher if applicable. | Summer Discounts 20% off |\n| promotion_tier_id | | promo_Mwy9XpA0TLctSGriM5kum0qp |\n| customer_id | Unique customer ID of redeeming customer. | cust_nk0N1uNQ1YnupAoJGOgvsODC |\n| customer_source_id | Unique source ID of redeeming customer. | name.lastname@email.com |\n| customer_name | Customer name. | John Smith |\n| tracking_id | | track_Pw6r3ejnml43kIwNS4Zj09KZ67xOfLUy |\n| order_amount | Total order amount before applying all discounts. | 1000 |\n| gift_amount | Gift credits used for redemption. | 10 |\n| loyalty_points | | 12 |\n| result | Tells you whether the redemption succeeded. | `SUCCESS`, `FAILURE` |\n| failure_code | Internal Voucherify code for reason why redemption failed. | invalid_customer |\n| failure_message | A human-readable message providing a short description explaining why the redemption failed. | Customer must be a holder of a loyalty card. |\n| metadata | Custom redemption metadata. | |\n\n## Customers\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| name | Customer name. | John Smith |\n| id | Unique customer ID. | cust_J1CDUdbqn5Exva8ASWk1Fq0j |\n| description | An arbitrary string that you can attach to a customer object. | Customer requesting to be added to VIP tier. |\n| email | Customer's email. | name.lastname@email.com |\n| source_id | Unique custom customer identifier. | name.lastname@email.com |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the customer was created. | 2022-02-03T13:10:11.928Z |\n| address_city | City | Houston |\n| address_state | State | TX |\n| address_line_1 | First line of customer's address. | 72738 Main St |\n| address_line_2 | Second line of customer's address. | Bld 2, Apt 4 |\n| address_country | Country | United States of America |\n| address_postal_code | Postal code (ZIP code) | 77042-4143 |\n| redemptions_total_redeemed | Total customer redemptions. | 5 |\n| redemptions_total_failed | Total customer failed redemptions. | 2 |\n| redemptions_total_succeeded | Total customer succeeded redemptions. | 3 |\n| redemptions_total_rolled_back | Total customer redemptions that were rolled back. | 3 |\n| redemptions_total_rollback_failed | Total customer redemptions that were unsuccessfully rolled back. | 2 |\n| redemptions_total_rollback_succeeded | Total customer redemptions that were successfully rolled back. | 1 |\n| orders_total_amount | Total sum of order amounts over customer lifetime. Value is multiplied by 100 to precisely represent 2 decimal places. | 10000 (represents $100) |\n| orders_total_count | Total number of customer orders. | 2 |\n| orders_average_amount | Average amount spent on orders. Value is multiplied by 100 to precisely represent 2 decimal places. | 5000 (represents $50) |\n| orders_last_order_amount | How much did the customer spend on their last order. Value is multiplied by 100 to precisely represent 2 decimal places. | 5000 (represents $50) |\n| orders_last_order_date | When was the last customer order; timestamp in ISO 8601 format representing the date and time. | 2022-02-03T13:17:30.630Z |\n| loyalty_points | Sum of customer's loyalty points to go across all loyalty cards. | 2000 |\n| loyalty_referred_customers | How many customers were referred by this customer. | 3 |\n| updated_at | Timestamp in ISO 8601 format representing the date and time when the customer was updated. | 2022-02-14T14:10:14.305Z |\n| phone | Customer's phone number. | +1 (294) 752-1846 |\n| birthday | `Deprecated`. ~~Customer's birthday~~. | 2022-01-01 |\n| metadata | Customer metadata. | All metadata fields defined in Metadata Schema for the Customer object. |\n| birthdate | Customer's birthdate. | 2022-01-01 |\n\n## Points Expirations\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Loyalty points bucket ID. | lopb_Wl1o3EjJIHSNjvO5BDLy4z1n |\n| campaign_id | Campaign ID of the parent loyalty campaign. | camp_7s3uXI44aKfIk5IhmeOPr6ic |\n| voucher_id | Voucher ID of the parent loyalty card. | v_YLn0WVWXSXbUfDvxgrgUbtfJ3SQIY655 |\n| status | Status of the loyalty point bucket. | `ACTIVE` or `EXPIRED` |\n| expires_at | Timestamp in ISO 8601 format representing the date when the points expire. | 2022-06-30 |\n| points | Number of points. | 1000 |\n\n ## Gift Card Transactions\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique transaction ID. | vtx_0cb7811f1c07765800 |\n| type | Transaction type. | - `CREDITS_REMOVAL`
- `CREDITS_ADDITION`
- `CREDITS_REFUND`
- `CREDITS_REDEMPTION` |\n| source_id | Unique transaction source ID. | 8638 |\n| reason | Contains the reason for the transaction if one was included originally. | |\n| balance | The gift card or loyalty card balance after the transaction. | |\n| amount | The amount of gift card or loyalty card credits being allocated during the transaction. This value can either be negative or positive depending on the nature of the transaction. | |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the transaction was created. | 2022-03-09T09:16:32.521Z |\n| voucher_id | Unique Voucher ID. | v_dky7ksKfPX50Wb2Bxvcoeb1xT20b6tcp |\n| campaign_id | Parent campaign ID. | camp_FNYR4jhqZBM9xTptxDGgeNBV |\n| source| Channel through which the transaction was initiated. | API |\n| details | More detailed information stored in the form of a JSON. | Provides more details related to the transaction in the form of an object. |\n\n ## Loyalty Card Transactions\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique transaction ID assigned by Voucherify. | vtx_0cb7811f1c07765800 |\n| type | Transaction type. | - `POINTS_EXPIRATION`
- `POINTS_ADDITION`
- `POINTS_REMOVAL`
- `POINTS_TRANSFER_OUT`
- `POINTS_ACCRUAL`
- `POINTS_REFUND`
- `POINTS_REDEMPTION` |\n| source_id | Custom source ID of the transaction if one was included originally. | source_id_custom |\n| reason | Contains the reason for the transaction if one was included originally. | |\n| balance | The loyalty card balance after the transaction. | |\n| amount | The amount of loyalty points being allocated during the transaction. This value can either be negative or positive depending on the nature of the transaction. | |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the transaction was created. | 2022-03-09T09:16:32.521Z |\n| voucher_id | Unique Voucher ID. | v_dky7ksKfPX50Wb2Bxvcoeb1xT20b6tcp |\n| campaign_id | Parent campaign ID. | camp_FNYR4jhqZBM9xTptxDGgeNBV |\n| source| Channel through which the transaction was initiated. | - `API`
- `voucherify-web-ui`
- `Automation` |\n| details | More detailed information stored in the form of a JSON. | Provides more details related to the transaction in the form of an object. |\n| related_transaction_id | Unique transaction ID related to a receiver/donor card in the case of a points transfer from/to another card. | vtx_0c9afe802593b34b80 |",
"parameters": [],
"security": [
{
@@ -63502,7 +63554,7 @@
"Exports"
],
"summary": "Download Export",
- "description": "Download the contents of the exported CSV file. \n\n\n\n> 📘 Important notes\n>\n> **Base URL:** \n> - `https://download.voucherify.io` (Europe) \n> - `https://us1.download.voucherify.io` (US) \n> - `https://as1.download.voucherify.io` (Asia) \n>\n> **Token:** Can be found within the `result` parameter of the [Get Export](/api-reference/exports/get-export) method response.",
+ "description": "Download the contents of the exported CSV file. \n\n\n\n\n\nImportant notes\n\n**Base URL:**\n\n- `https://download.voucherify.io` (Europe)\n- `https://us1.download.voucherify.io` (US)\n- `https://as1.download.voucherify.io` (Asia)\n\n**Token:** Can be found within the `result` parameter of the [Get Export](/api-reference/exports/get-export) method response.\n\n",
"parameters": [],
"security": [
{
@@ -63828,7 +63880,7 @@
"Metadata Schemas"
],
"summary": "List Metadata Schema Definitions",
- "description": "Retrieve metadata schema definitions.\n\n>📘 Management API\n>\n>If you have Management API enabled, you can also use the [List Metadata Schemas](/api-reference/management/list-metadata-schemas) endpoint to list all metadata schemas.",
+ "description": "Retrieve metadata schema definitions.\n\n\n\nManagement API\n\nIf you have Management API enabled, you can also use the [List Metadata Schemas](/api-reference/management/list-metadata-schemas) endpoint to list all metadata schemas.\n\n",
"parameters": [],
"security": [
{
@@ -64337,7 +64389,7 @@
"Metadata Schemas"
],
"summary": "Get Metadata Schema",
- "description": "Retrieves a metadata schema per resource type.\n\n## Resource types\n\n### Standard\n\nYou can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter.\n\n- `campaign`\n- `customer`\n- `earning_rule`\n- `loyalty_tier`\n- `order`\n- `order_item`\n- `product`\n- `promotion_tier`\n- `publication`\n- `redemption`\n- `reward`\n- `voucher`\n\n### Custom\n\nIf you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the `\"resource\"` field to retrieve its details.\n\n>📘 Management API\n>\n>If you have Management API enabled, you can also use the [Get Metadata Schemas](/api-reference/management/get-metadata-schema) endpoint to retrieve a metadata schema using its ID.",
+ "description": "Retrieves a metadata schema per resource type.\n\n## Resource types\n\n### Standard\n\nYou can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter.\n\n- `campaign`\n- `customer`\n- `earning_rule`\n- `loyalty_tier`\n- `order`\n- `order_item`\n- `product`\n- `promotion_tier`\n- `publication`\n- `redemption`\n- `reward`\n- `voucher`\n\n### Custom\n\nIf you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the `\"resource\"` field to retrieve its details.\n\n\n\nManagement API\n\nIf you have Management API enabled, you can also use the [Get Metadata Schemas](/api-reference/management/get-metadata-schema) endpoint to retrieve a metadata schema using its ID.\n\n",
"parameters": [],
"security": [
{
@@ -65137,7 +65189,7 @@
"Referrals"
],
"summary": "Add Referral Code Holders with Campaign ID",
- "description": "Adds new holders to a referral code as **referees**. The data sent in the request is upserted into the customer data.\n\nIf the request returns an error even for one customer, you have to resend the whole request. Customer data is upserted if the data for all customers is correct.\n\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (`customers.modify`)\n- Publish Voucher (`vouchers.publish`)\n\n> 👍\n>To add a holder as a referrer, use the [Create Publication](/api-reference/publications/create-publication) endpoint.",
+ "description": "Adds new holders to a referral code as **referees**. The data sent in the request is upserted into the customer data.\n\nIf the request returns an error even for one customer, you have to resend the whole request. Customer data is upserted if the data for all customers is correct.\n\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (`customers.modify`)\n- Publish Voucher (`vouchers.publish`)\n\n\n\nTo add a holder as a referrer, use the [Create Publication](/api-reference/publications/create-publication) endpoint.\n\n",
"parameters": [],
"security": [
{
@@ -65405,7 +65457,7 @@
"Referrals"
],
"summary": "Add Referral Code Holders",
- "description": "Adds new holders to a referral code as **referees**. The data sent in the request is upserted into the customer data.\n\nIf the request returns an error even for one customer, you have to resend the whole request. Customer data is upserted if the data for all customers is correct.\n\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (`customers.modify`)\n- Publish Voucher (`vouchers.publish`)\n\n> 👍\n>To add a holder as a referrer, use the [Create Publication](/api-reference/publications/create-publication) endpoint.\n\n> 📘 Alternative endpoint\n>\n>This endpoint is an alternative to the [Add Referral Code Holders endpoint](/api-reference/referrals/add-referral-code-holders-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the `campaignId` as a path paremeter.",
+ "description": "Adds new holders to a referral code as **referees**. The data sent in the request is upserted into the customer data.\n\nIf the request returns an error even for one customer, you have to resend the whole request. Customer data is upserted if the data for all customers is correct.\n\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (`customers.modify`)\n- Publish Voucher (`vouchers.publish`)\n\n\n\nTo add a holder as a referrer, use the [Create Publication](/api-reference/publications/create-publication) endpoint.\n\n\n\n\n\nAlternative endpoint\n\nThis endpoint is an alternative to the [Add Referral Code Holders endpoint](/api-reference/referrals/add-referral-code-holders-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the `campaignId` as a path paremeter.\n\n",
"parameters": [],
"security": [
{
@@ -65508,7 +65560,7 @@
"Referrals"
],
"summary": "List Referral Code Holders",
- "description": "Retrieves the holders of the referral code from a referral campaign.\n\nTo use this endpoint, you must have the following permissions:\n\n- Read Customers (`customers.details.read`)\n\n> 📘 Alternative endpoint\n>\n>This endpoint is an alternative to the [List Member Holders endpoint](/api-reference/referrals/list-referral-code-holders-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the `campaignId` as a path paremeter.",
+ "description": "Retrieves the holders of the referral code from a referral campaign.\n\nTo use this endpoint, you must have the following permissions:\n\n- Read Customers (`customers.details.read`)\n\n\n\nAlternative endpoint\n\nThis endpoint is an alternative to the [List Member Holders endpoint](/api-reference/referrals/list-referral-code-holders-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the `campaignId` as a path paremeter.\n\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -65627,7 +65679,7 @@
"Referrals"
],
"summary": "Remove Referral Card Holder",
- "description": "Removes the holder from a referral card. You can remove a referee only.\n\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (`customers.modify`)\n- Publish Voucher (`vouchers.publish`)\n\n> 📘 Alternative endpoint\n>\n>This endpoint is an alternative to the [Remove Referral Card Holder endpoint](/api-reference/referrals/remove-referral-card-holder-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the `campaignId` as a path paremeter.",
+ "description": "Removes the holder from a referral card. You can remove a referee only.\n\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (`customers.modify`)\n- Publish Voucher (`vouchers.publish`)\n\n\n\nAlternative endpoint\n\nThis endpoint is an alternative to the [Remove Referral Card Holder endpoint](/api-reference/referrals/remove-referral-card-holder-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the `campaignId` as a path paremeter.\n\n",
"parameters": [],
"security": [
{
@@ -65786,7 +65838,7 @@
"Templates"
],
"summary": "List Campaign Templates",
- "description": "Lists all campaign templates available in the project.\n\n> 📘 Campaign Templates – Documentation\n>\n>Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Lists all campaign templates available in the project.\n\n\n\nCampaign Templates – Documentation\n\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -65883,7 +65935,7 @@
"Templates"
],
"summary": "Create Campaign Template",
- "description": "Creates a template for a discount or gift campaign, or a promotion tier.\n\nA template stores campaign configuration **without** the following details:\n- Campaign name\n- Category\n- Code count\n\nThe following elements are not supported by campaign templates:\n- Redeeming API keys\n- Redeeming users\n- Customer loyalty tier\n- Static segments\n\n> 👍 Promotion Tiers and Campaign Templates\n>\n>You can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the `DISCOUNT_COUPON` type. You can use this template to create:\n>- [Discount campaign](/api-reference/templates/create-campaign-from-template),\n>- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template).\n\n> 📘 Campaign Templates – Documentation\n>\n>Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Creates a template for a discount or gift campaign, or a promotion tier.\n\nA template stores campaign configuration **without** the following details:\n- Campaign name\n- Category\n- Code count\n\nThe following elements are not supported by campaign templates:\n- Redeeming API keys\n- Redeeming users\n- Customer loyalty tier\n- Static segments\n\n\n\nPromotion Tiers and Campaign Templates\n\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the `DISCOUNT_COUPON` type. You can use this template to create:\n\n- [Discount campaign](/api-reference/templates/create-campaign-from-template),\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template).\n\n\n\n\n\nCampaign Templates – Documentation\n\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n\n",
"parameters": [],
"security": [
{
@@ -65950,7 +66002,7 @@
"Templates"
],
"summary": "Get Campaign Template",
- "description": "Retrieves a campaign template available in the project.\n\n> 📘 Campaign Templates – Documentation\n>\n>Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Retrieves a campaign template available in the project.\n\n\n\nCampaign Templates – Documentation\n\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n\n",
"parameters": [
{
"schema": {
@@ -66005,7 +66057,7 @@
"Templates"
],
"summary": "Update Campaign Template",
- "description": "Updates the name or description of the campaign template.\n\n> 📘 Campaign Templates – Documentation\n>\n>Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Updates the name or description of the campaign template.\n\n\n\nCampaign Templates – Documentation\n\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n\n",
"parameters": [],
"security": [
{
@@ -66060,7 +66112,7 @@
"Templates"
],
"summary": "Delete Campaign Template",
- "description": "Deletes the campaign template permanently.\n\n> 📘 Campaign Templates – Documentation\n>\n>Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Deletes the campaign template permanently.\n\n\n\nCampaign Templates – Documentation\n\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n\n",
"parameters": [],
"security": [
{
@@ -66097,7 +66149,7 @@
"Templates"
],
"summary": "Create Campaign From Template",
- "description": "Creates a campaign out of a campaign template.\n\nTo create a campaign, you need to provide the name in the request, while other fields are optional. If no other fields are sent, the configuration from the template will be used.\n\nYou can send new values of the fields listed below to replace the settings saved in the template. However, you cannot assign an existing validation rule or create a new one in the request. If the template has a validation rule, a new validation rule is always created for the campaign. When the campaign has been created, then you can:\n- [Update the validation rule](/api-reference/validation-rules/update-validation-rule),\n- [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment),\n- [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments).\n\n> 👍 Promotion Tiers and Campaign Templates\n>\n>You can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the `DISCOUNT_COUPON` type. You can use this template to create:\n>- [Discount campaign](/api-reference/templates/create-campaign-from-template)\n>- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template)\n\n> 📘 Campaign Templates – Documentation\n>\n>Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Creates a campaign out of a campaign template.\n\nTo create a campaign, you need to provide the name in the request, while other fields are optional. If no other fields are sent, the configuration from the template will be used.\n\nYou can send new values of the fields listed below to replace the settings saved in the template. However, you cannot assign an existing validation rule or create a new one in the request. If the template has a validation rule, a new validation rule is always created for the campaign. When the campaign has been created, then you can:\n- [Update the validation rule](/api-reference/validation-rules/update-validation-rule),\n- [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment),\n- [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments).\n\n\n\nPromotion Tiers and Campaign Templates\n\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the `DISCOUNT_COUPON` type. You can use this template to create:\n\n- [Discount campaign](/api-reference/templates/create-campaign-from-template)\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template)\n\n\n\n\n\nCampaign Templates – Documentation\n\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n\n",
"parameters": [],
"security": [
{
@@ -66261,7 +66313,7 @@
"Templates"
],
"summary": "Add Promotion Tier From Template",
- "description": "Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign.\n\nTo add a promotion tier to a campaign, you need to provide the name in the request and the campaign ID. Other fields are optional. If no other fields are sent, the configuration from the template will be used.\n\nYou can send new values of the fields listed below to replace the settings saved in the template. However, you cannot assign an action or an existing validation rule or create a new one in the request. If the template has a validation rule, a new validation rule is always created for the promotion tier. When the promotion tier has been created, then you can:\n- [Update the validation rule](/api-reference/validation-rules/update-validation-rule),\n- [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment),\n- [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment).\n\n> 👍 Promotion Tiers and Campaign Templates\n>\n>You can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the `DISCOUNT_COUPON` type. You can use this template to create:\n>- [Discount campaign](/api-reference/templates/create-campaign-from-template)\n>- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template)\n\n> 📘 Campaign Templates – Documentation\n>\n>Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign.\n\nTo add a promotion tier to a campaign, you need to provide the name in the request and the campaign ID. Other fields are optional. If no other fields are sent, the configuration from the template will be used.\n\nYou can send new values of the fields listed below to replace the settings saved in the template. However, you cannot assign an action or an existing validation rule or create a new one in the request. If the template has a validation rule, a new validation rule is always created for the promotion tier. When the promotion tier has been created, then you can:\n- [Update the validation rule](/api-reference/validation-rules/update-validation-rule),\n- [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment),\n- [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment).\n\n\n\nPromotion Tiers and Campaign Templates\n\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the `DISCOUNT_COUPON` type. You can use this template to create:\n\n- [Discount campaign](/api-reference/templates/create-campaign-from-template)\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template)\n\n\n\n\n\nCampaign Templates – Documentation\n\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n\n",
"parameters": [],
"security": [
{
@@ -67050,7 +67102,7 @@
"Management"
],
"summary": "Delete Project",
- "description": "Deletes an existing project.\n\nThe users currently using the deleted project will be automatically logged out.\n\n> 🚧 Sandbox Project\n>\n>The sandbox project cannot be deleted.",
+ "description": "Deletes an existing project.\n\nThe users currently using the deleted project will be automatically logged out.\n\n\n\nSandbox Project\n\nThe sandbox project cannot be deleted.\n\n",
"parameters": [],
"security": [
{
@@ -67083,7 +67135,7 @@
"Management"
],
"summary": "Assign User",
- "description": "Assigns a user to a given project. The user must be an existing user in Voucherify.\n\n> 🚧 Correct Use of Data\n>\n>To avoid errors, use the `\"role\"` key with either `\"id\"` or `\"login\"` keys.",
+ "description": "Assigns a user to a given project. The user must be an existing user in Voucherify.\n\n\n\nCorrect Use of Data\n\nTo avoid errors, use the `\"role\"` key with either `\"id\"` or `\"login\"` keys.\n\n",
"parameters": [],
"security": [
{
@@ -67392,7 +67444,7 @@
"Management"
],
"summary": "List Campaign Templates",
- "description": "Lists all campaign templates available in the project.\n\n> 👍 List Campaign Templates\n>\n> This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates).\n\n> 📘 Campaign Templates – Documentation\n>\n>Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Lists all campaign templates available in the project.\n\n\n\nList Campaign Templates\n\nThis endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates).\n\n\n\n\n\nCampaign Templates – Documentation\n\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -67507,7 +67559,7 @@
"Management"
],
"summary": "Copy Campaign Template to a Project",
- "description": "Copies a campaign template to another project.\n\nThe resources, like validation rules or products, will not be copied to the destination project yet. When the template is used to create a new campaign or add a new promotion tier, the resources will be created in the destination project.\n\n> 📘 Campaign Templates – Documentation\n>\n>Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Copies a campaign template to another project.\n\nThe resources, like validation rules or products, will not be copied to the destination project yet. When the template is used to create a new campaign or add a new promotion tier, the resources will be created in the destination project.\n\n\n\nCampaign Templates – Documentation\n\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n\n",
"parameters": [],
"security": [
{
@@ -67570,7 +67622,7 @@
"Management"
],
"summary": "Create Stacking Rules",
- "description": "Overwrites the default stacking rules.\n\nIf new stacking rules have been created for the project earlier (e.g. in the user interface), it returns an error. Use [Update stacking rules](/api-reference/management/update-stacking-rules) endpoint to change the rules.\n\n> 📘 Stacking rules documentation\n>\n> Read [the Stacking rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Overwrites the default stacking rules.\n\nIf new stacking rules have been created for the project earlier (e.g. in the user interface), it returns an error. Use [Update stacking rules](/api-reference/management/update-stacking-rules) endpoint to change the rules.\n\n\n\nStacking rules documentation\n\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n\n",
"parameters": [],
"security": [
{
@@ -67648,7 +67700,7 @@
"Management"
],
"summary": "List Stacking Rules",
- "description": "Lists all stacking rules.\n\nReturns always a list with one item.\n\nThis endpoint can be used to retrieve the default stacking rules. The default stacking rules do not have an ID that could be used with the [Get Stacking Rules](/api-reference/management/get-stacking-rules) or [Update Stacking Rules](/api-reference/management/update-stacking-rules) endpoints.\n\n> 📘 Stacking Rules Documentation\n>\n> Read [the Stacking Rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Lists all stacking rules.\n\nReturns always a list with one item.\n\nThis endpoint can be used to retrieve the default stacking rules. The default stacking rules do not have an ID that could be used with the [Get Stacking Rules](/api-reference/management/get-stacking-rules) or [Update Stacking Rules](/api-reference/management/update-stacking-rules) endpoints.\n\n\n\nStacking Rules Documentation\n\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n\n",
"parameters": [],
"security": [
{
@@ -67745,7 +67797,7 @@
"Management"
],
"summary": "Get Stacking Rules",
- "description": "Retrieves the stacking rules for the project.\n\n> 📘 Stacking Rules Documentation\n>\n> Read [the Stacking Rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Retrieves the stacking rules for the project.\n\n\n\nStacking Rules Documentation\n\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n\n",
"parameters": [],
"security": [
{
@@ -67813,7 +67865,7 @@
"Management"
],
"summary": "Update Stacking Rules",
- "description": "Updates the stacking rules.\n\nOnly the provided fields will be updated. However, if you update an array, the content of the array is overwritten. This means that if you want to add new values to an array and retain existing ones, you need to provide both the existing and new values in the request.\n\n> 📘 Stacking Rules Documentation\n>\n> Read [the Stacking Rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Updates the stacking rules.\n\nOnly the provided fields will be updated. However, if you update an array, the content of the array is overwritten. This means that if you want to add new values to an array and retain existing ones, you need to provide both the existing and new values in the request.\n\n\n\nStacking Rules Documentation\n\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n\n",
"parameters": [],
"security": [
{
@@ -67892,7 +67944,7 @@
"Management"
],
"summary": "Delete Stacking Rules",
- "description": "Deletes permanently the current settings for the stacking rules.\n\nThe stacking rules are restored to default values.\n\n> 📘 Stacking Rules Documentation\n>\n> Read [the Stacking Rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Deletes permanently the current settings for the stacking rules.\n\nThe stacking rules are restored to default values.\n\n\n\nStacking Rules Documentation\n\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n\n",
"parameters": [],
"security": [
{
@@ -67925,7 +67977,7 @@
"Management"
],
"summary": "Create Metadata Schema",
- "description": "Creates a new metadata (custom attribute) schema for a given resource.\n\nThe schema consists of a set of key-value pairs to customize Voucherify resources. \n\nYou can nest your object within a standard metadata schema, e.g. within a campaign or customer schema. However, your nested object can't include another nested object. The standard metadata schemas are:\n- Campaign\n- Voucher\n- Publication\n- Redemption\n- Product\n- Customer\n- Order\n- Order line item\n- Loyalty Tier\n- Promotion Tier\n- Earning rule\n- Reward\n\nUse this endpoint to define a metadata schema of a given resource for the first time. Once you configure a metadata schema for a given `related_object`, use the PUT [Update metadata schema](/api-reference/management/update-metadata-schema) endpoint to either update or add new metadata key-value pairs. For example, use this endpoint to define a metadata schema for `related_object: campaign` for the first time. If you want define a new metadata property for `campaign`, use the [PUT Update metadata schema](/api-reference/management/update-metadata-schema) endpoint.\n\n> 📘 Metadata Documentation\n>\n> Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Creates a new metadata (custom attribute) schema for a given resource.\n\nThe schema consists of a set of key-value pairs to customize Voucherify resources. \n\nYou can nest your object within a standard metadata schema, e.g. within a campaign or customer schema. However, your nested object can't include another nested object. The standard metadata schemas are:\n- Campaign\n- Voucher\n- Publication\n- Redemption\n- Product\n- Customer\n- Order\n- Order line item\n- Loyalty Tier\n- Promotion Tier\n- Earning rule\n- Reward\n\nUse this endpoint to define a metadata schema of a given resource for the first time. Once you configure a metadata schema for a given `related_object`, use the PUT [Update metadata schema](/api-reference/management/update-metadata-schema) endpoint to either update or add new metadata key-value pairs. For example, use this endpoint to define a metadata schema for `related_object: campaign` for the first time. If you want define a new metadata property for `campaign`, use the [PUT Update metadata schema](/api-reference/management/update-metadata-schema) endpoint.\n\n\n\nMetadata Documentation\n\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n\n",
"parameters": [],
"security": [
{
@@ -67989,7 +68041,7 @@
"Management"
],
"summary": "List Metadata Schemas",
- "description": "Lists all metadata schemas available in the project.\n\n> 📘 Metadata Documentation\n>\n> Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Lists all metadata schemas available in the project.\n\n\n\nMetadata Documentation\n\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n\n",
"parameters": [],
"security": [
{
@@ -68301,7 +68353,7 @@
"Management"
],
"summary": "Get Metadata Schema",
- "description": "Retrieves a metadata schema.\n\n> 📘 Metadata Documentation\n>\n> Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Retrieves a metadata schema.\n\n\n\nMetadata Documentation\n\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n\n",
"parameters": [],
"security": [
{
@@ -68388,7 +68440,7 @@
"Management"
],
"summary": "Update Metadata Schema",
- "description": "Updates a metadata schema.\n\nWith this request, you can:\n- Add a nonexistent attribute definition to the metadata schema.\n- Update an existing attribute definition by overwriting its current values.\n\nIn the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged.\n\nHowever, if you want to update a definition, you will have to add all its current key-value pairs as well. Only the pairs sent in the request are saved for this definition. This means that the key-value pairs that are not sent in a request are restored to default values. For example, if your definition has an array with values and it is not sent in an update request, the array values will be deleted.\n\n> 👍 Additional Notes\n>\n>- You cannot change the type of an existing schema, e.g. from `\"string\"` to `\"number\"`.\n>\n>- You can remove a definition with this endpoint by providing `\"deleted\": true` in the request. It will be moved to the Removed definitions section in the user interface. However, you cannot permanently remove a definition with this endpoint.\n\n> 📘 Metadata Documentation\n>\n> Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Updates a metadata schema.\n\nWith this request, you can:\n- Add a nonexistent attribute definition to the metadata schema.\n- Update an existing attribute definition by overwriting its current values.\n\nIn the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged.\n\nHowever, if you want to update a definition, you will have to add all its current key-value pairs as well. Only the pairs sent in the request are saved for this definition. This means that the key-value pairs that are not sent in a request are restored to default values. For example, if your definition has an array with values and it is not sent in an update request, the array values will be deleted.\n\n\n\nAdditional Notes\n\n- You cannot change the type of an existing schema, e.g. from `\"string\"` to `\"number\"`.\n\n- You can remove a definition with this endpoint by providing `\"deleted\": true` in the request. It will be moved to the Removed definitions section in the user interface. However, you cannot permanently remove a definition with this endpoint.\n\n\n\n\n\nMetadata Documentation\n\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n\n",
"parameters": [],
"security": [
{
@@ -68452,7 +68504,7 @@
"Management"
],
"summary": "Delete Metadata Schema",
- "description": "Deletes permanently the metadata schema.\n\nIn standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are:\n- Campaign\n- Voucher\n- Publication\n- Redemption\n- Product\n- Customer\n- Order\n- Order line item\n- Loyalty Tier\n- Promotion Tier\n- Earning rule\n- Reward\n\nIf you want to delete only one definition, use the [Update Metadata Schema](/api-reference/management/update-metadata-schema) endpoint. In the request, provide the `\"deleted\": true` pair in the definition object. This definition will be moved to Removed definitions.\n\nIf you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint.\n\n> 🚧 Metadata Purging\n>\n>This endpoint deletes permanently the metadata schemas only. However, it does not purge the metadata from associated entities, so the metadata added to those entities will remain.\n>\n>If you want to purge metadata from the entities:\n>1. Remove all the definitions you want to purge. You can do this either in Voucherify Project Settings > Metadata Schema tab or with the [Update Metadata Schema](/api-reference/management/update-metadata-schema) endpoint.\n>2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema.\n>3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities.\n>Note:\n>- This is an asynchronous action. You will be notified when it has been completed.\n>- You cannot purge metadata for the Redemption and Publication schemas.\n>4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify.\n\n> 📘 Metadata Documentation\n>\n> Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Deletes permanently the metadata schema.\n\nIn standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are:\n- Campaign\n- Voucher\n- Publication\n- Redemption\n- Product\n- Customer\n- Order\n- Order line item\n- Loyalty Tier\n- Promotion Tier\n- Earning rule\n- Reward\n\nIf you want to delete only one definition, use the [Update Metadata Schema](/api-reference/management/update-metadata-schema) endpoint. In the request, provide the `\"deleted\": true` pair in the definition object. This definition will be moved to Removed definitions.\n\nIf you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint.\n\n\n\nMetadata Purging\n\nThis endpoint deletes permanently the metadata schemas only. However, it does not purge the metadata from associated entities, so the metadata added to those entities will remain.\n\nIf you want to purge metadata from the entities:\n\n1. Remove all the definitions you want to purge. You can do this either in Voucherify Project Settings > Metadata Schema tab or with the [Update Metadata Schema](/api-reference/management/update-metadata-schema) endpoint.\n2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema.\n3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities.\n\nNote:\n\n- This is an asynchronous action. You will be notified when it has been completed.\n- You cannot purge metadata for the Redemption and Publication schemas.\n\n4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify.\n\n\n\n\n\nMetadata Documentation\n\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n\n",
"parameters": [],
"security": [
{
@@ -68485,7 +68537,7 @@
"Management"
],
"summary": "Create Custom Event Schema",
- "description": "Creates a custom event schema.\n\nThe `\"properties\"` object is required, but it can be empty, however. This object is for optional custom properties (metadata).\n\n> 📘 Custom Event Documentation\n>\n> Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\n>\n>Read also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Creates a custom event schema.\n\nThe `\"properties\"` object is required, but it can be empty, however. This object is for optional custom properties (metadata).\n\n\n\nCustom Event Documentation\n\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\n\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n\n",
"parameters": [],
"security": [
{
@@ -68541,7 +68593,7 @@
"Management"
],
"summary": "List Custom Event Schemas",
- "description": "Lists all custom event schemas available in the project.\n\n> 📘 Custom Event Documentation\n>\n> Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\n>\n>Read also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Lists all custom event schemas available in the project.\n\n\n\nCustom Event Documentation\n\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\n\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n\n",
"parameters": [],
"security": [
{
@@ -68629,7 +68681,7 @@
"Management"
],
"summary": "Get Custom Event Schema",
- "description": "Retrieves a custom event schema.\n\n> 📘 Custom Event Documentation\n>\n> Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\n>\n>Read also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Retrieves a custom event schema.\n\n\n\nCustom Event Documentation\n\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\n\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n\n",
"parameters": [],
"security": [
{
@@ -68672,7 +68724,7 @@
"Management"
],
"summary": "Update Custom Event Schema",
- "description": "Updates a custom event schema.\n\nWith this request, you can:\n- Add a nonexistent property to a custom event schema.\n- Update an existing property.\n\nIn the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged.\n\n> 👍 Additional Notes\n>\n>- You can change the type of an existing property, e.g. from `\"string\"` to `\"number\"`.\n>\n>- You can remove a custom property with this endpoint by providing `\"deleted\": true` in the request. However, you cannot permanently remove an event definition or its property with this endpoint.\n\n> 📘 Custom Event Documentation\n>\n> Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\n>\n>Read also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Updates a custom event schema.\n\nWith this request, you can:\n- Add a nonexistent property to a custom event schema.\n- Update an existing property.\n\nIn the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged.\n\n\n\nAdditional Notes\n\n- You can change the type of an existing property, e.g. from `\"string\"` to `\"number\"`.\n\n- You can remove a custom property with this endpoint by providing `\"deleted\": true` in the request. However, you cannot permanently remove an event definition or its property with this endpoint.\n\n\n\n\n\nCustom Event Documentation\n\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\n\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n\n",
"parameters": [],
"security": [
{
@@ -68737,7 +68789,7 @@
"Management"
],
"summary": "Delete Custom Event Schema",
- "description": "Deletes permanently the custom event schema with its custom properties (metadata).\n\n> 📘 Custom Event Documentation\n>\n> Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\n>\n>Read also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Deletes permanently the custom event schema with its custom properties (metadata).\n\n\n\nCustom Event Documentation\n\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\n\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n\n",
"parameters": [],
"security": [
{
@@ -68770,7 +68822,7 @@
"Management"
],
"summary": "Create Webhook",
- "description": "Creates a new webhook configuration.\n\n> 📘 Webhook Documentation\n>\n> Read [Webhooks v2024-01-01](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Creates a new webhook configuration.\n\n\n\nWebhook Documentation\n\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n\n",
"parameters": [],
"security": [
{
@@ -68822,7 +68874,7 @@
"Management"
],
"summary": "List Webhooks",
- "description": "Lists all webhook configurations for the project.\n\n> 📘 Webhook Documentation\n>\n> Read [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Lists all webhook configurations for the project.\n\n\n\nWebhook Documentation\n\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n\n",
"parameters": [],
"security": [
{
@@ -68938,7 +68990,7 @@
"Management"
],
"summary": "Get Webhook",
- "description": "Retrieves a webhook configuration.\n\n> 📘 Webhook Documentation\n>\n> Read [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Retrieves a webhook configuration.\n\n\n\nWebhook Documentation\n\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n\n",
"parameters": [],
"security": [
{
@@ -68979,7 +69031,7 @@
"Management"
],
"summary": "Update Webhook",
- "description": "Updates a webhook configuration.\n\nThe `\"events\"` listed in the request are overwritten. If you want to add more events, provide also the events that are already in the webhook configuration.\n\n> 📘 Webhook Documentation\n>\n> Read [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Updates a webhook configuration.\n\nThe `\"events\"` listed in the request are overwritten. If you want to add more events, provide also the events that are already in the webhook configuration.\n\n\n\nWebhook Documentation\n\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n\n",
"parameters": [],
"security": [
{
@@ -69031,7 +69083,7 @@
"Management"
],
"summary": "Delete Webhook",
- "description": "Deletes a webhook configuration.\n\n> 📘 Webhook Documentation\n>\n> Read [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Deletes a webhook configuration.\n\n\n\nWebhook Documentation\n\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n\n",
"parameters": [],
"security": [
{
@@ -69064,7 +69116,7 @@
"Management"
],
"summary": "Create Brand",
- "description": "Creates a new brand configuration.\n\nYou can have only one brand configured for a project.\n\n> 📘 White Labelling\n>\n> The white labelling settings which can be found in Project Settings > Brand Details and which are available only for Enterprise clients as a separate service can be configured only in the user interface.",
+ "description": "Creates a new brand configuration.\n\nYou can have only one brand configured for a project.\n\n\n\nWhite Labelling\n\nThe white labelling settings which can be found in Project Settings > Brand Details and which are available only for Enterprise clients as a separate service can be configured only in the user interface.\n\n",
"parameters": [],
"security": [
{
@@ -69284,7 +69336,7 @@
"Management"
],
"summary": "Update Brand",
- "description": "Updates a brand configuration.\n\nOnly the fields sent in the request will be updated. The fields omitted in the request will remain unchanged.\n\n> 📘 White Labelling\n>\n> The white labelling settings which can be found in Project Settings > Brand Details and which are available only for Enterprise clients as a separate service can be configured only in the user interface.",
+ "description": "Updates a brand configuration.\n\nOnly the fields sent in the request will be updated. The fields omitted in the request will remain unchanged.\n\n\n\nWhite Labelling\n\nThe white labelling settings which can be found in Project Settings > Brand Details and which are available only for Enterprise clients as a separate service can be configured only in the user interface.\n\n",
"parameters": [],
"security": [
{
@@ -69369,7 +69421,7 @@
"Client-side"
],
"summary": "Check Eligibility (client-side)",
- "description": "Generate a list of redeemables that are applicable in the context of the customer and order.\n\nThe new qualifications method is an improved version of [Campaign Qualifications](/api-reference/campaigns/examine-campaign-qualification), [Voucher Qualifications](/api-reference/vouchers/examine-voucher-qualification) API requests. The new qualification method introduces the following improvements:\n\n- Qualification results are returned faster\n- No limit on the number of returned redeemables\n- Introduces new qualification scenarios, not available in the previous version\n\n> 👍 Scenario Guide\n>\n> Read our dedicated guide to learn about some use cases this endpoint can cover [here](/guides/checking-eligibility).\n\n## Paging \n\nThe Voucherify Qualifications API request will return to you all of the redeemables available for the customer in batches of up to 50 redeemables per page. To get the next batch of redeemables, you need to use the `starting_after` cursor.\n\nTo process of paging the redeemables works in the following manner:\n\n- You send the first API request for Qualifications without the `starting_after` parameter.\n- The response will contain a parameter named `has_more`. If the parameter's value is set to `true`, then more redeemables are available.\n- Get the value of the `created_at` parameter of the last returned redeemable. The value of this parameter will be used as a cursor to retrieve the next page of redeemables.\n- Send another API request for Qualification with the `starting_after` parameter set to the value taken from the `created_at` parameter from the last returned redeemable.\n- Voucherify will return the next page of redeemables.\n- If the `has_more` parameter is set to `true`, apply steps 3-5 to get the next page of redeemables.\n\n## Caching\n\nQualification has a 5-minute cache for the returned results. If you change your campaign settings or validation rules, the changes will apply to qualification results after the cache refreshes.",
+ "description": "Generate a list of redeemables that are applicable in the context of the customer and order.\n\nThe new qualifications method is an improved version of [Campaign Qualifications](/api-reference/campaigns/examine-campaign-qualification), [Voucher Qualifications](/api-reference/vouchers/examine-voucher-qualification) API requests. The new qualification method introduces the following improvements:\n\n- Qualification results are returned faster\n- No limit on the number of returned redeemables\n- Introduces new qualification scenarios, not available in the previous version\n\n\n\nScenario Guide\n\nRead our dedicated guide to learn about some use cases this endpoint can cover [here](/guides/checking-eligibility).\n\n\n\n## Paging \n\nThe Voucherify Qualifications API request will return to you all of the redeemables available for the customer in batches of up to 50 redeemables per page. To get the next batch of redeemables, you need to use the `starting_after` cursor.\n\nTo process of paging the redeemables works in the following manner:\n\n- You send the first API request for Qualifications without the `starting_after` parameter.\n- The response will contain a parameter named `has_more`. If the parameter's value is set to `true`, then more redeemables are available.\n- Get the value of the `created_at` parameter of the last returned redeemable. The value of this parameter will be used as a cursor to retrieve the next page of redeemables.\n- Send another API request for Qualification with the `starting_after` parameter set to the value taken from the `created_at` parameter from the last returned redeemable.\n- Voucherify will return the next page of redeemables.\n- If the `has_more` parameter is set to `true`, apply steps 3-5 to get the next page of redeemables.\n\n## Caching\n\nQualification has a 5-minute cache for the returned results. If you change your campaign settings or validation rules, the changes will apply to qualification results after the cache refreshes.",
"parameters": [],
"security": [
{
@@ -69657,7 +69709,7 @@
"Client-side"
],
"summary": "Redeem Stackable Discounts (client-side)",
- "description": "This method is accessible through public keys which you can use in client side requests coming from mobile and web browser applications.\n\n## How API returns calculated discounts and order amounts in the response\n\nIn the table below, you can see the logic the API follows to calculate discounts and amounts:\n\n| **Field** | **Calculation** | **Description** |\n|:---|:---|:---|\n| amount | N/A | This field shows the order amount before applying any discount |\n| total_amount | `total_amount` = `amount` - `total_discount_amount` | This field shows the order amount after applying all the discounts |\n| discount_amount | `discount_amount` = `previous_discount_amount` + `applied_discount_amount` | This field sums up all order-level discounts up to and including the specific discount being calculated for the stacked redemption. |\n| items_discount_amount | sum(items, i => i.discount_amount) | This field sums up all product-specific discounts |\n| total_discount_amount | `total_discount_amount` = `discount_amount` + `items_discount_amount` | This field sums up all order-level and all product-specific discounts |\n| applied_discount_amount | N/A | This field shows the order-level discount applied in a particular request |\n| items_applied_discount_amount | sum(items, i => i.applied_discount_amount) | This field sums up all product-specific discounts applied in a particular request |\n| total_applied_discount_amount | `total_applied_discount_amount` = `applied_discount_amount` + `items_applied_discount_amount` | This field sums up all order-level and all product-specific discounts applied in a particular request |\n\n\n> 📘 Rollbacks\n>\n> You can't roll back a child redemption. When you call rollback on a stacked redemption, all child redemptions will be rolled back. You need to refer to a parent redemption ID in your [rollback request](/api-reference/redemptions/rollback-stackable-redemptions).",
+ "description": "This method is accessible through public keys which you can use in client side requests coming from mobile and web browser applications.\n\n## How API returns calculated discounts and order amounts in the response\n\nIn the table below, you can see the logic the API follows to calculate discounts and amounts:\n\n| **Field** | **Calculation** | **Description** |\n|:---|:---|:---|\n| amount | N/A | This field shows the order amount before applying any discount |\n| total_amount | `total_amount` = `amount` - `total_discount_amount` | This field shows the order amount after applying all the discounts |\n| discount_amount | `discount_amount` = `previous_discount_amount` + `applied_discount_amount` | This field sums up all order-level discounts up to and including the specific discount being calculated for the stacked redemption. |\n| items_discount_amount | sum(items, i => i.discount_amount) | This field sums up all product-specific discounts |\n| total_discount_amount | `total_discount_amount` = `discount_amount` + `items_discount_amount` | This field sums up all order-level and all product-specific discounts |\n| applied_discount_amount | N/A | This field shows the order-level discount applied in a particular request |\n| items_applied_discount_amount | sum(items, i => i.applied_discount_amount) | This field sums up all product-specific discounts applied in a particular request |\n| total_applied_discount_amount | `total_applied_discount_amount` = `applied_discount_amount` + `items_applied_discount_amount` | This field sums up all order-level and all product-specific discounts applied in a particular request |\n\n\n\n\nRollbacks\n\nYou can't roll back a child redemption. When you call rollback on a stacked redemption, all child redemptions will be rolled back. You need to refer to a parent redemption ID in your [rollback request](/api-reference/redemptions/rollback-stackable-redemptions).\n\n",
"parameters": [
{
"$ref": "#/components/parameters/origin"
diff --git a/reference/OpenAPI.json b/reference/OpenAPI.json
index d4690ad54..518aac346 100644
--- a/reference/OpenAPI.json
+++ b/reference/OpenAPI.json
@@ -16343,7 +16343,7 @@
},
"redeemables": {
"type": "array",
- "description": "Lists validation results of each redeemable. If `redeemables_application_mode` is `PARTIAL` in the `stacking_rules` object, all redeemables here will be `APPLICABLE`. Read more in [the Stacking rules article]/orchestrate/stacking-rules.",
+ "description": "Lists validation results of each redeemable. If `redeemables_application_mode` is `PARTIAL` in the `stacking_rules` object, all redeemables here will be `APPLICABLE`. Read more in [the Stacking rules article](/orchestrate/stacking-rules).",
"items": {
"title": "Validations Validate All Response Body Redeemables Item",
"oneOf": [
@@ -49432,7 +49432,7 @@
"Publications"
],
"summary": "Create Publication with GET",
- "description": "This method selects vouchers that are suitable for publication, adds a publish entry and returns the publication.\n\nA voucher is suitable for publication when it's active and hasn't been published yet.\n> ❗️ Limited access\n>\n> Access to this endpoint is limited. This endpoint is designed for specific integrations and the API keys need to be configured to access this endpoint. Navigate to the **Dashboard** → **Project Settings** → **General** → **Integration Keys** to set up a pair of API keys and use them to send the request. \n\n\n> 🚧 Clearly define the source of the voucher\n>\n> You must clearly define which source you want to publish the voucher code from. It can either be a code from a campaign or a specific voucher identified by a code. \n\n> 🚧 Publish multiple vouchers\n>\n> This endpoint does not support the publishing of multiple vouchers from a single campaign. In case you want to publish multiple vouchers within a single publication, you need to use a [dedicated endpoint](/api-reference/publications/create-publication). \n\n\n\n> 📘 Auto-update campaign\n>\n> In case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use an **auto-update** campaign. \n\n## Example Request \n```markdown Publication Query \n/publications/create?campaign[name]=BlackFriday&customer[source_id]=Customer_Source_ID \n``` \n\n\n> ❗️ Required \n>\n> Query param `voucher` OR `campaign` MUST be filled out. If you provide both, `campaign` param will be skipped.",
+ "description": "This method selects vouchers that are suitable for publication, adds a publish entry and returns the publication.\n\nA voucher is suitable for publication when it's active and hasn't been published yet.\n\n\nLimited access\n\nAccess to this endpoint is limited. This endpoint is designed for specific integrations and the API keys need to be configured to access this endpoint. Navigate to the **Dashboard** → **Project Settings** → **General** → **Integration Keys** to set up a pair of API keys and use them to send the request.\n\n\n\n\n\n\nClearly define the source of the voucher\n\nYou must clearly define which source you want to publish the voucher code from. It can either be a code from a campaign or a specific voucher identified by a code.\n\n\n\n\n\nPublish multiple vouchers\n\nThis endpoint does not support the publishing of multiple vouchers from a single campaign. In case you want to publish multiple vouchers within a single publication, you need to use a [dedicated endpoint](/api-reference/publications/create-publication).\n\n\n\n\n\n\n\nAuto-update campaign\n\nIn case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use an **auto-update** campaign.\n\n\n\n## Example Request \n```markdown Publication Query \n/publications/create?campaign[name]=BlackFriday&customer[source_id]=Customer_Source_ID \n``` \n\n\n\n\nRequired\n\nQuery param `voucher` OR `campaign` MUST be filled out. If you provide both, `campaign` param will be skipped.\n\n",
"parameters": [
{
"schema": {
@@ -49717,7 +49717,7 @@
"Qualifications"
],
"summary": "Check Eligibility",
- "description": "\n> 🚧 The Qualifications endpoint ignores the rules checking:\n> \n> - Limit of total redeemed discount amount per campaign\n> - Limit of total redemptions count per campaign\n> - Redemptions per customer\n> - Redemptions per customer in a campaign\n>- Total amount before discount \n\nGenerate a list of redeemables that are applicable in the context of the customer and order.\n\nThe new qualifications method is an improved version of [Campaign Qualifications](/api-reference/campaigns/examine-campaign-qualification), [Voucher Qualifications](/api-reference/vouchers/examine-voucher-qualification) API requests. The new qualification method introduces the following improvements:\n\n- Qualification results are returned faster\n- No limit on the number of returned redeemables\n- Introduces new qualification scenarios, not available in the previous version\n\n> 👍 Scenario Guide\n>\n> Read [the dedicated guide](/guides/checking-eligibility) to learn about some use cases this endpoint can cover.\n\n## Paging \n\nThe Voucherify Qualifications API request will return to you all of the redeemables available for the customer in batches of up to 50 redeemables per page. To get the next batch of redeemables, you need to use the `starting_after` cursor.\n\nTo process of paging the redeemables works in the following manner:\n\n- You send the first API request for Qualifications without the `starting_after` parameter.\n- The response will contain a parameter named `has_more`. If the parameter's value is set to `true`, then more redeemables are available.\n- Get the value of the `created_at` parameter of the last returned redeemable. The value of this parameter will be used as a cursor to retrieve the next page of redeemables.\n- Send another API request for Qualification with the `starting_after` parameter set to the value taken from the `created_at` parameter from the last returned redeemable.\n- Voucherify will return the next page of redeemables.\n- If the `has_more` parameter is set to `true`, apply steps 3-5 to get the next page of redeemables.\n\n## Caching\n\nQualification has a 5-minute cache for the returned results. If you change your campaign settings or validation rules, the changes will apply to qualification results after the cache refreshes.",
+ "description": "\n\n\nThe Qualifications endpoint ignores the rules checking:\n\n- Limit of total redeemed discount amount per campaign\n- Limit of total redemptions count per campaign\n- Redemptions per customer\n- Redemptions per customer in a campaign\n- Total amount before discount\n\n\n\nGenerate a list of redeemables that are applicable in the context of the customer and order.\n\nThe new qualifications method is an improved version of [Campaign Qualifications](/api-reference/campaigns/examine-campaign-qualification), [Voucher Qualifications](/api-reference/vouchers/examine-voucher-qualification) API requests. The new qualification method introduces the following improvements:\n\n- Qualification results are returned faster\n- No limit on the number of returned redeemables\n- Introduces new qualification scenarios, not available in the previous version\n\n\n\nScenario Guide\n\nRead [the dedicated guide](/guides/checking-eligibility) to learn about some use cases this endpoint can cover.\n\n\n\n## Paging \n\nThe Voucherify Qualifications API request will return to you all of the redeemables available for the customer in batches of up to 50 redeemables per page. To get the next batch of redeemables, you need to use the `starting_after` cursor.\n\nTo process of paging the redeemables works in the following manner:\n\n- You send the first API request for Qualifications without the `starting_after` parameter.\n- The response will contain a parameter named `has_more`. If the parameter's value is set to `true`, then more redeemables are available.\n- Get the value of the `created_at` parameter of the last returned redeemable. The value of this parameter will be used as a cursor to retrieve the next page of redeemables.\n- Send another API request for Qualification with the `starting_after` parameter set to the value taken from the `created_at` parameter from the last returned redeemable.\n- Voucherify will return the next page of redeemables.\n- If the `has_more` parameter is set to `true`, apply steps 3-5 to get the next page of redeemables.\n\n## Caching\n\nQualification has a 5-minute cache for the returned results. If you change your campaign settings or validation rules, the changes will apply to qualification results after the cache refreshes.",
"parameters": [],
"security": [
{
@@ -51319,7 +51319,7 @@
"Redemptions"
],
"summary": "Redeem Stackable Discounts",
- "description": "In the table below, you can see the logic the API follows to calculate discounts and amounts:\n\n| **Field** | **Calculation** | **Description** |\n|:---|:---|:---|\n| amount | N/A | This field shows the order amount before applying any discount |\n| total_amount | `total_amount` = `amount` - `total_discount_amount` | This field shows the order amount after applying all the discounts |\n| discount_amount | `discount_amount` = `previous_discount_amount` + `applied_discount_amount` | This field sums up all order-level discounts up to and including the specific discount being calculated for the stacked redemption. |\n| items_discount_amount | sum(items, i => i.discount_amount) | This field sums up all product-specific discounts |\n| total_discount_amount | `total_discount_amount` = `discount_amount` + `items_discount_amount` | This field sums up all order-level and all product-specific discounts |\n| applied_discount_amount | N/A | This field shows the order-level discount applied in a particular request |\n| items_applied_discount_amount | sum(items, i => i.applied_discount_amount) | This field sums up all product-specific discounts applied in a particular request |\n| total_applied_discount_amount | `total_applied_discount_amount` = `applied_discount_amount` + `items_applied_discount_amount` | This field sums up all order-level and all product-specific discounts applied in a particular request |\n\n\n\nAPI keys with a Merchant role can't use this endpoint.\n\n\n> 📘 Rollbacks\n>\n> You can't roll back a child redemption. When you call rollback on a stacked redemption, all child redemptions will be rolled back. You need to refer to a parent redemption ID in your [rollback request](/api-reference/redemptions/rollback-stackable-redemptions). \n\n\n> 📘 Also available on client-side\n>\n> This method is also accessible through public keys which you can use in client-side apps: mobile and web browser apps. Go to the dedicated [endpoint](/api-reference/client-side/redeem-stackable-discounts-client-side) to learn more.",
+ "description": "In the table below, you can see the logic the API follows to calculate discounts and amounts:\n\n| **Field** | **Calculation** | **Description** |\n|:---|:---|:---|\n| amount | N/A | This field shows the order amount before applying any discount |\n| total_amount | `total_amount` = `amount` - `total_discount_amount` | This field shows the order amount after applying all the discounts |\n| discount_amount | `discount_amount` = `previous_discount_amount` + `applied_discount_amount` | This field sums up all order-level discounts up to and including the specific discount being calculated for the stacked redemption. |\n| items_discount_amount | sum(items, i => i.discount_amount) | This field sums up all product-specific discounts |\n| total_discount_amount | `total_discount_amount` = `discount_amount` + `items_discount_amount` | This field sums up all order-level and all product-specific discounts |\n| applied_discount_amount | N/A | This field shows the order-level discount applied in a particular request |\n| items_applied_discount_amount | sum(items, i => i.applied_discount_amount) | This field sums up all product-specific discounts applied in a particular request |\n| total_applied_discount_amount | `total_applied_discount_amount` = `applied_discount_amount` + `items_applied_discount_amount` | This field sums up all order-level and all product-specific discounts applied in a particular request |\n\n\n\nAPI keys with a Merchant role can't use this endpoint.\n\n\n\n\nRollbacks\n\nYou can't roll back a child redemption. When you call rollback on a stacked redemption, all child redemptions will be rolled back. You need to refer to a parent redemption ID in your [rollback request](/api-reference/redemptions/rollback-stackable-redemptions).\n\n\n\n\n\n\nAlso available on client-side\n\nThis method is also accessible through public keys which you can use in client-side apps: mobile and web browser apps. Go to the dedicated [endpoint](/api-reference/client-side/redeem-stackable-discounts-client-side) to learn more.\n\n",
"parameters": [],
"security": [
{
@@ -51667,7 +51667,7 @@
"Vouchers"
],
"summary": "Generate Random Code",
- "description": "Create a generic (standalone) vouchers. You can choose to create a `GIFT_VOUCHER`, a `DISCOUNT_VOUCHER`, or a `LOYALTY_CARD`. \n\nWhen you create a new voucher, you can specify a type to create it.\nCreating a new voucher will create a new generic (standalone) vouchers if no `campaign` name or `campaign_id` is provided. However, if an ID or name of a campaign with the `type` set to `STANDALONE` is provided, the voucher will be added to such campaign. In case of the loyalty card, a campaign name is required.\n\nYou can optionally use the `code` parameter to define a specific code or the `code_config` parameter to design rules for Voucherify API to create a random code. If neither of the two parameters are passed, then a random code is generated by the Voucherify API.\n\nThis method will return an error when trying to create a voucher that already exists.\n\n>🚧 Standalone Vouchers and Campaigns\n>\n>Generic (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. The vouchers created with POST Create voucher and POST Generate random code endpoints do not have a campaign attached, so the values for `campaign` and `campaign_id` are `null`.\n>\n>To create a generic (standalone) voucher with a `\"type\": \"STANDALONE\"`, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.",
+ "description": "Create a generic (standalone) vouchers. You can choose to create a `GIFT_VOUCHER`, a `DISCOUNT_VOUCHER`, or a `LOYALTY_CARD`. \n\nWhen you create a new voucher, you can specify a type to create it.\nCreating a new voucher will create a new generic (standalone) vouchers if no `campaign` name or `campaign_id` is provided. However, if an ID or name of a campaign with the `type` set to `STANDALONE` is provided, the voucher will be added to such campaign. In case of the loyalty card, a campaign name is required.\n\nYou can optionally use the `code` parameter to define a specific code or the `code_config` parameter to design rules for Voucherify API to create a random code. If neither of the two parameters are passed, then a random code is generated by the Voucherify API.\n\nThis method will return an error when trying to create a voucher that already exists.\n\n\n\nStandalone Vouchers and Campaigns\n\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. The vouchers created with POST Create voucher and POST Generate random code endpoints do not have a campaign attached, so the values for `campaign` and `campaign_id` are `null`.\n\nTo create a generic (standalone) voucher with a `\"type\": \"STANDALONE\"`, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.\n\n",
"parameters": [],
"security": [
{
@@ -53394,7 +53394,7 @@
"Vouchers"
],
"summary": "Create Voucher",
- "description": "Create a generic (standalone) voucher or a voucher in a campaign. You can choose to create a `GIFT_VOUCHER`, a `DISCOUNT_VOUCHER`, or a `LOYALTY_CARD`. The code path parameter can use all letters of the English alphabet, Arabic numerals and special characters.\n\nWhen you create a new voucher, you can specify a type to create it.\nIf no `campaign` name or `campaign_id` is provided, the new voucher will be a generic (standalone) one. However, if an ID or name of a campaign with the `type` set to `STANDALONE` is provided, the voucher will be added to this campaign. For a loyalty card, a campaign name or ID is required.\n\n>🚧 Standalone Vouchers and Campaigns\n>\n>Generic (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers created through The vouchers created with POST Create voucher and POST Generate random code endpoints do not have a campaign attached, so the values for `campaign` and `campaign_id` are `null`.\n>\n>To create a generic (standalone) voucher with a `\"type\": \"STANDALONE\"`, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.",
+ "description": "Create a generic (standalone) voucher or a voucher in a campaign. You can choose to create a `GIFT_VOUCHER`, a `DISCOUNT_VOUCHER`, or a `LOYALTY_CARD`. The code path parameter can use all letters of the English alphabet, Arabic numerals and special characters.\n\nWhen you create a new voucher, you can specify a type to create it.\nIf no `campaign` name or `campaign_id` is provided, the new voucher will be a generic (standalone) one. However, if an ID or name of a campaign with the `type` set to `STANDALONE` is provided, the voucher will be added to this campaign. For a loyalty card, a campaign name or ID is required.\n\n\n\nStandalone Vouchers and Campaigns\n\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers created through The vouchers created with POST Create voucher and POST Generate random code endpoints do not have a campaign attached, so the values for `campaign` and `campaign_id` are `null`.\n\nTo create a generic (standalone) voucher with a `\"type\": \"STANDALONE\"`, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.\n\n",
"parameters": [],
"security": [
{
@@ -53929,7 +53929,7 @@
"Vouchers"
],
"summary": "Enable Voucher",
- "description": "There are various times when you'll want to manage a voucher's accessibility. This can be done by two API methods for managing the voucher state - *enable* and *disable*. \n___\nThe method sets the voucher state to **active**. The voucher can be redeemed - only if the redemption occurs after the start date and the voucher is not expired.",
+ "description": "The method sets the voucher state to **active**. The voucher can be redeemed - only if the redemption occurs after the start date and the voucher is not expired.",
"parameters": [],
"security": [
{
@@ -54063,7 +54063,7 @@
"Vouchers"
],
"summary": "Disable Voucher",
- "description": "There are various times when you'll want to manage a voucher's accessibility. This can be done by two API methods for managing the voucher state - *enable* and *disable*. \n___\nThis method sets the voucher state to **inactive**. The voucher cannot be redeemed.",
+ "description": "This method sets the voucher state to **inactive**. The voucher cannot be redeemed.",
"parameters": [],
"security": [
{
@@ -54765,7 +54765,7 @@
"Vouchers"
],
"summary": "Import Vouchers",
- "description": "Import generic (standalone) vouchers and gift cards into the repository.\nYou can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. \n Also, the request can include up to **10 MB** of data.\n\n\n> 📘 Important notes\n>\n> - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z.\n> - Custom code attributes (not supported by-default) need to be added as code **metadata**.\n> - You **cannot import the same codes** to a single Voucherify Project.\n\nAny parameters not provided in the payload will be left blank or null.\n\nFor both **standalone discount vouchers and gift cards**, you can import the following fields: \n\n- code\n- category\n- active\n- type\n- start_date\n- expiration_date\n- redemption.quantity\n- additional_info\n- metadata\n\nFor **gift cards**, you can also import the following field:\n\n- gift.amount\n\nFor **discount vouchers**, you can import the `discount` object. The object will slightly vary depending on the type of discount. Each discount type **requires** the `type` to be defined in the import.\n\n| **Discount Type** | **Required fields** |\n|:---|:---|\n| Amount | amount_off, effect |\n| Percent | percent_off, effect |\n| Fixed | fixed_amount, effect |\n| Unit - One item | unit_off, unit_type, effect |\n| Unit - Multiple items | unit_off, unit_type, effect |\n| Shipping | unit_off, unit_type, effect |\n\nFields other than the ones listed above won't be imported. Even if provided, they will be silently skipped.\n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).\n\n>🚧 Standalone Vouchers and Campaigns\n>\n>Generic (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers imported through the dashboard in the Vouchers section or through the API do not have a campaign attached, so the values for `campaign` and `campaign_id` are `null`.\n>\n>To create a generic (standalone) voucher with a `\"type\": \"STANDALONE\"`, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.",
+ "description": "Import generic (standalone) vouchers and gift cards into the repository.\nYou can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. \n Also, the request can include up to **10 MB** of data.\n\n\n\n\nImportant notes\n\n- **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z.\n- Custom code attributes (not supported by-default) need to be added as code **metadata**.\n- You **cannot import the same codes** to a single Voucherify Project.\n\n\n\nAny parameters not provided in the payload will be left blank or null.\n\nFor both **standalone discount vouchers and gift cards**, you can import the following fields: \n\n- code\n- category\n- active\n- type\n- start_date\n- expiration_date\n- redemption.quantity\n- additional_info\n- metadata\n\nFor **gift cards**, you can also import the following field:\n\n- gift.amount\n\nFor **discount vouchers**, you can import the `discount` object. The object will slightly vary depending on the type of discount. Each discount type **requires** the `type` to be defined in the import.\n\n| **Discount Type** | **Required fields** |\n|:---|:---|\n| Amount | amount_off, effect |\n| Percent | percent_off, effect |\n| Fixed | fixed_amount, effect |\n| Unit - One item | unit_off, unit_type, effect |\n| Unit - Multiple items | unit_off, unit_type, effect |\n| Shipping | unit_off, unit_type, effect |\n\nFields other than the ones listed above won't be imported. Even if provided, they will be silently skipped.\n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).\n\n\n\nStandalone Vouchers and Campaigns\n\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers imported through the dashboard in the Vouchers section or through the API do not have a campaign attached, so the values for `campaign` and `campaign_id` are `null`.\n\nTo create a generic (standalone) voucher with a `\"type\": \"STANDALONE\"`, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.\n\n",
"parameters": [],
"security": [
{
@@ -55042,7 +55042,7 @@
"Vouchers"
],
"summary": "Import Vouchers using CSV",
- "description": "Import generic (standalone) vouchers into the repository using a CSV file.\n\nThe CSV file has to include headers in the first line. All properties listed in the file headers that cannot be mapped to standard voucher fields will be added to the metadata object.\nYou can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. \n Also, the request can include a max. **10 MB** CSV file.\n\nYou can find an example CSV file [here](/build/discount-code-import).\n___\n\n```cURL cURL example\ncurl -X **POST** \\\n https://api.voucherify.io/v1/vouchers/importCSV \\\n -F file=@/path/to/vouchers.csv \\\n -F webhooks_enable=true\\\n -H \"X-App-Id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\" \\\n -H \"X-App-Token: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"\n```\n\n\n\n> 📘 Standard voucher fields mapping\n>\n> - Go to the [import vouchers](/api-reference/vouchers/import-vouchers) endpoint to see all standard CSV fields description (body params section).\n> - Supported CSV file headers: Code,Voucher Type,Value,Discount Type,Category,Start Date,Expiration Date,Redemption Limit,Redeemed Quantity, Redeemed Amount,Active,Additional Info,Custom Metadata Property Name\n>- **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. \n> - `YYYY-MM-DD`\n> - `YYYY-MM-DDTHH`\n> - `YYYY-MM-DDTHH:mm`\n> - `YYYY-MM-DDTHH:mm:ss`\n> - `YYYY-MM-DDTHH:mm:ssZ`\n> - `YYYY-MM-DDTHH:mm:ssZ`\n> - `YYYY-MM-DDTHH:mm:ss.SSSZ`\n> - Custom code attributes (not supported by-default) need to be added as code **metadata**.\n> - You **cannot import the same codes** to a single Voucherify project.\n> - You can, however, upload the same codes to update them.\n\n\n\n> 📘 Categories\n>\n> In the structure representing your data, you can define a category that the voucher belongs to. You can later use the category of a voucher to group and search by specific criteria in the Dashboard and using the [List Vouchers](/api-reference/vouchers/list-vouchers) endpoint.\n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).\n\nYou can pass the `webhooks_enable=true` parameter to trigger a webhook sendout for created or updated vouchers. Configure the [respective webhooks](/api-reference/introduction-to-webhooks) in Project settings. For updated webhooks, a webhook is sent even if the voucher hasn't been changed in the CSV file.\n\n>🚧 Generic (standalone) vouchers and campaigns\n>\n>Generic (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers imported through the dashboard in the Vouchers section or through the API do not have a campaign attached, so the values for `campaign` and `campaign_id` are `null`.",
+ "description": "Import generic (standalone) vouchers into the repository using a CSV file.\n\nThe CSV file has to include headers in the first line. All properties listed in the file headers that cannot be mapped to standard voucher fields will be added to the metadata object.\nYou can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. \n Also, the request can include a max. **10 MB** CSV file.\n\nYou can find an example CSV file [here](/build/discount-code-import).\n___\n\n```cURL cURL example\ncurl -X **POST** \\\n https://api.voucherify.io/v1/vouchers/importCSV \\\n -F file=@/path/to/vouchers.csv \\\n -F webhooks_enable=true\\\n -H \"X-App-Id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\" \\\n -H \"X-App-Token: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"\n```\n\n\n\n\n\nStandard voucher fields mapping\n\n- Go to the [import vouchers](/api-reference/vouchers/import-vouchers) endpoint to see all standard CSV fields description (body params section).\n- Supported CSV file headers: Code,Voucher Type,Value,Discount Type,Category,Start Date,Expiration Date,Redemption Limit,Redeemed Quantity, Redeemed Amount,Active,Additional Info,Custom Metadata Property Name\n- **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z.\n - `YYYY-MM-DD`\n - `YYYY-MM-DDTHH`\n - `YYYY-MM-DDTHH:mm`\n - `YYYY-MM-DDTHH:mm:ss`\n - `YYYY-MM-DDTHH:mm:ssZ`\n - `YYYY-MM-DDTHH:mm:ssZ`\n - `YYYY-MM-DDTHH:mm:ss.SSSZ`\n- Custom code attributes (not supported by-default) need to be added as code **metadata**.\n- You **cannot import the same codes** to a single Voucherify project.\n- You can, however, upload the same codes to update them.\n\n\n\n\n\n\n\nCategories\n\nIn the structure representing your data, you can define a category that the voucher belongs to. You can later use the category of a voucher to group and search by specific criteria in the Dashboard and using the [List Vouchers](/api-reference/vouchers/list-vouchers) endpoint.\n\n\n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).\n\nYou can pass the `webhooks_enable=true` parameter to trigger a webhook sendout for created or updated vouchers. Configure the [respective webhooks](/api-reference/introduction-to-webhooks) in Project settings. For updated webhooks, a webhook is sent even if the voucher hasn't been changed in the CSV file.\n\n\n\nGeneric (standalone) vouchers and campaigns\n\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers imported through the dashboard in the Vouchers section or through the API do not have a campaign attached, so the values for `campaign` and `campaign_id` are `null`.\n\n",
"parameters": [],
"security": [
{
@@ -55114,7 +55114,7 @@
"Vouchers"
],
"summary": "Update Vouchers in Bulk",
- "description": "Updates specific metadata parameters for each code, respectively, in one asynchronous operation.\n\nThe request can include up to **10 MB** of data.\n\nUpserts are not supported.\n\n> 🚧 Currently, only **metadata** updates are supported.\n\nThe response returns a unique asynchronous action ID. Use this ID in the query paramater of the [GET Async Action](/api-reference/async-actions/get-async-action) endpoint to check, e.g.:\n\n- The status of your request (in queue, in progress, done, or failed)\n\n- Resources that failed to be updated\n\n- The report file with details about the update\n\n\n\nThis API request starts a process that affects Voucherify data in bulk. In the case of small jobs (like bulk update), the request is put into a queue and processed when every other bulk request placed in the queue prior to this request is finished.",
+ "description": "Updates specific metadata parameters for each code, respectively, in one asynchronous operation.\n\nThe request can include up to **10 MB** of data.\n\nUpserts are not supported.\n\n\n\nCurrently, only **metadata** updates are supported.\n\n\n\nThe response returns a unique asynchronous action ID. Use this ID in the query paramater of the [GET Async Action](/api-reference/async-actions/get-async-action) endpoint to check, e.g.:\n\n- The status of your request (in queue, in progress, done, or failed)\n\n- Resources that failed to be updated\n\n- The report file with details about the update\n\n\n\nThis API request starts a process that affects Voucherify data in bulk. In the case of small jobs (like bulk update), the request is put into a queue and processed when every other bulk request placed in the queue prior to this request is finished.",
"parameters": [],
"security": [
{
@@ -55310,7 +55310,7 @@
"Vouchers"
],
"summary": "Release Validation Session",
- "description": "Manually release a validation session that has been set up for the voucher. This method undoes the actions that are explained in the [Locking validation session](/guides/locking-validation-session) guide. \n\n> 📘 Release session in the Dashboard\n>\n> You can also use the [Validations Manager](/optimize/validations-and-redemptions#sessions) in the Dashboard to unlock sessions.",
+ "description": "Manually release a validation session that has been set up for the voucher. This method undoes the actions that are explained in the [Locking validation session](/guides/locking-validation-session) guide. \n\n\n\nRelease session in the Dashboard\n\nYou can also use the [Validations Manager](/optimize/validations-and-redemptions#sessions) in the Dashboard to unlock sessions.\n\n",
"parameters": [],
"security": [
{
@@ -55370,7 +55370,7 @@
"Campaigns"
],
"summary": "Create Campaign",
- "description": "Method to create a batch of vouchers aggregated in one campaign. You can choose a variety of voucher types and define a unique pattern for generating codes. \n\n\n> 📘 Global uniqueness\n>\n> All campaign codes are unique across the whole project. Voucherify will not allow you to generate 2 campaigns with the same coupon code. \n\n> 🚧 Code generation status\n>\n> This is an asynchronous action; you can't read or modify a newly created campaign until the code generation is completed. See the `creation_status` field in the [campaign object](/api-reference/campaigns/campaign-object) description.",
+ "description": "Method to create a batch of vouchers aggregated in one campaign. You can choose a variety of voucher types and define a unique pattern for generating codes. \n\n\n\n\nGlobal uniqueness\n\nAll campaign codes are unique across the whole project. Voucherify will not allow you to generate 2 campaigns with the same coupon code.\n\n\n\n\n\nCode generation status\n\nThis is an asynchronous action; you can't read or modify a newly created campaign until the code generation is completed. See the `creation_status` field in the [campaign object](/api-reference/campaigns/campaign-object) description.\n\n",
"parameters": [],
"security": [
{
@@ -56717,7 +56717,7 @@
"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. \n\nFields other than the ones listed in the request body won't be modified. Even if provided, they will be silently skipped. \n\n> 🚧 Vouchers will be affected\n>\n> This method will update vouchers aggregated in the campaign. It will affect all vouchers that are not published or redeemed yet.",
+ "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. \n\nFields other than the ones listed in the request body won't be modified. Even if provided, they will be silently skipped. \n\n\n\nVouchers will be affected\n\nThis method will update vouchers aggregated in the campaign. It will affect all vouchers that are not published or redeemed yet.\n\n",
"parameters": [],
"security": [
{
@@ -57468,7 +57468,7 @@
"Campaigns"
],
"summary": "Import Vouchers to Campaign by CSV",
- "description": "Imports vouchers to an **existing** campaign. \n\n\nThe CSV file has to include headers in the first line. \n\nCurl Example\n\n```cURL\ncurl -X **POST** \\\n https://api.voucherify.io/v1/campaigns/TEST-CAMPAIGN/importCSV \\\n -F file=@/path/to/campaigns.csv \\\n -H \"X-App-Id: c70a6f00-cf91-4756-9df5-47628850002b\" \\\n -H \"X-App-Token: 3266b9f8-e246-4f79-bdf0-833929b1380c\"\n```\n\nYou can import values for the following fields: `Code` (**required**), `Category`, `Active`. In a gift cards import, you can also include the current card balance using the `Gift Amount` header and the amount that was redeemed using the `Redeemed Amount` header. In a loyalty cards import, you can also include the current loyalty card score in points using the `Loyalty Points` header. Remaining CSV columns will be mapped to metadata properties. \n\nDiscount type, time limits, and validation rules will be taken from the [campaign object](/api-reference/campaigns/campaign-object) settings. \n\n\n| **Active** | **Code** | **Loyalty Points** | **Gift Amount** | **Redeemed Amount** | **Redeemed Quantity** | **Category** | **Custom_metadata_property** |\n|---|---|---|---|---|---|---|---|\n| Use `true` or `false` to enable or disable the voucher; this flag can be used to turn off the ability to redeem a voucher even though it is within the campaign's start/end validity timeframe. | The unique voucher code. | The number of points to be added to the loyalty card. If you leave this undefined, then the initial number of points will be set according to the campaign settings.
Context: `LOYALTY_PROGRAM` | The initial gift card balance.
Context: `GIFT_VOUCHERS` | The amount that was redeemed from the available balance on a gift card. | The number of times the voucher has been redeemed. | A custom tag for the voucher to help you filter codes; you can either import the category name or a unique Voucherify-assigned category ID. | Any additional data that you would like to store for the given loyalty card as a Custom attribute. Remember to define the metadata schema in the Dashboard prior to importing codes. |\n|\n\n> 📘 Active\n>\n> The CSV file is allowed in two versions; either with or without a column titled `Active`. It indicates whether the voucher is enabled after the import event. \n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
+ "description": "Imports vouchers to an **existing** campaign. \n\n\nThe CSV file has to include headers in the first line. \n\nCurl Example\n\n```cURL\ncurl -X **POST** \\\n https://api.voucherify.io/v1/campaigns/TEST-CAMPAIGN/importCSV \\\n -F file=@/path/to/campaigns.csv \\\n -H \"X-App-Id: c70a6f00-cf91-4756-9df5-47628850002b\" \\\n -H \"X-App-Token: 3266b9f8-e246-4f79-bdf0-833929b1380c\"\n```\n\nYou can import values for the following fields: `Code` (**required**), `Category`, `Active`. In a gift cards import, you can also include the current card balance using the `Gift Amount` header and the amount that was redeemed using the `Redeemed Amount` header. In a loyalty cards import, you can also include the current loyalty card score in points using the `Loyalty Points` header. Remaining CSV columns will be mapped to metadata properties. \n\nDiscount type, time limits, and validation rules will be taken from the [campaign object](/api-reference/campaigns/campaign-object) settings. \n\n\n| **Active** | **Code** | **Loyalty Points** | **Gift Amount** | **Redeemed Amount** | **Redeemed Quantity** | **Category** | **Custom_metadata_property** |\n|---|---|---|---|---|---|---|---|\n| Use `true` or `false` to enable or disable the voucher; this flag can be used to turn off the ability to redeem a voucher even though it is within the campaign's start/end validity timeframe. | The unique voucher code. | The number of points to be added to the loyalty card. If you leave this undefined, then the initial number of points will be set according to the campaign settings.
Context: `LOYALTY_PROGRAM` | The initial gift card balance.
Context: `GIFT_VOUCHERS` | The amount that was redeemed from the available balance on a gift card. | The number of times the voucher has been redeemed. | A custom tag for the voucher to help you filter codes; you can either import the category name or a unique Voucherify-assigned category ID. | Any additional data that you would like to store for the given loyalty card as a Custom attribute. Remember to define the metadata schema in the Dashboard prior to importing codes. |\n|\n\n\n\nActive\n\nThe CSV file is allowed in two versions; either with or without a column titled `Active`. It indicates whether the voucher is enabled after the import event.\n\n\n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
"parameters": [],
"security": [
{
@@ -57541,7 +57541,7 @@
"Campaigns"
],
"summary": "Examine Campaign Qualification",
- "description": "\n> ❗️ Deprecated \n>\n> This endpoint represents the deprecated version of the API responsible for qualification, and we do not recommend using it. The new [Qualifications API](/api-reference/qualifications/check-eligibility) introduces additional features and improvements while maintaining backward compatibility. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint. \n\nThe method can be used for sending a request to display all campaigns qualified to the given customer and context (e.g., order). \n\nThe maximum number of **returned campaigns is 50**.\n\n## What campaign types are included in the response?\n\n- `DISCOUNT_COUPONS`\n- `GIFT_VOUCHERS`\n- `REFERRAL_PROGRAM`\n\n## What's excluded?\n\nA checking logic will be run only among campaigns and will ignore _generic (standalone) vouchers_. For generic (standalone) vouchers, you should run a [dedicated endpoint](/api-reference/vouchers/examine-voucher-qualification) for searching and identifing vouchers. \n\n## Subsequent Steps\n\nAs a recommended subsequent step after selecting a qualified campaign is to publish a voucher code from that campaign. The [API method for publishing](/api-reference/publications/create-publication) will return a unique code which will belong to a given customer.\n\n## Sample use case\n\nAs a sample use case, you can imagine a requirement of displaying coupons (grouped in campaigns) that a customer is eligible to use. The customer should get assigned to the particular voucher from the campaign and then may redeem that particular code when he/she places an order.\n\n[Read](/guides/checking-eligibility) about Qualification API limits before you start.",
+ "description": "\n\n\nDeprecated\n\nThis endpoint represents the deprecated version of the API responsible for qualification, and we do not recommend using it. The new [Qualifications API](/api-reference/qualifications/check-eligibility) introduces additional features and improvements while maintaining backward compatibility. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint.\n\n\n\nThe method can be used for sending a request to display all campaigns qualified to the given customer and context (e.g., order). \n\nThe maximum number of **returned campaigns is 50**.\n\n## What campaign types are included in the response?\n\n- `DISCOUNT_COUPONS`\n- `GIFT_VOUCHERS`\n- `REFERRAL_PROGRAM`\n\n## What's excluded?\n\nA checking logic will be run only among campaigns and will ignore _generic (standalone) vouchers_. For generic (standalone) vouchers, you should run a [dedicated endpoint](/api-reference/vouchers/examine-voucher-qualification) for searching and identifing vouchers. \n\n## Subsequent Steps\n\nAs a recommended subsequent step after selecting a qualified campaign is to publish a voucher code from that campaign. The [API method for publishing](/api-reference/publications/create-publication) will return a unique code which will belong to a given customer.\n\n## Sample use case\n\nAs a sample use case, you can imagine a requirement of displaying coupons (grouped in campaigns) that a customer is eligible to use. The customer should get assigned to the particular voucher from the campaign and then may redeem that particular code when he/she places an order.\n\n[Read](/guides/checking-eligibility) about Qualification API limits before you start.",
"parameters": [
{
"schema": {
@@ -57651,7 +57651,7 @@
"Campaigns"
],
"summary": "Enable Campaign",
- "description": "There are various times when you'll want to manage a campaign's accessibility. This can be done by two API methods for managing the campaign state - *enable* and *disable*. \n\nSets campaign state to **active**. The vouchers in this campaign can be redeemed - only if the redemption occurs after the start date of the campaign and voucher and the voucher and campaign are not expired.",
+ "description": "Sets campaign state to **active**. The vouchers in this campaign can be redeemed - only if the redemption occurs after the start date of the campaign and voucher and the voucher and campaign are not expired.",
"parameters": [],
"security": [
{
@@ -57723,7 +57723,7 @@
"Campaigns"
],
"summary": "Disable Campaign",
- "description": "There are various times when you'll want to manage a campaign's accessibility. This can be done by two API methods for managing the campaign state - *enable* and *disable*. \n\nSets campaign state to **inactive**. The vouchers in this campaign can no longer be redeemed.",
+ "description": "Sets campaign state to **inactive**. The vouchers in this campaign can no longer be redeemed.",
"parameters": [],
"security": [
{
@@ -57795,7 +57795,7 @@
"Campaigns"
],
"summary": "List Campaign Transactions",
- "description": "Retrieves all transactions for the campaign with the given campaign ID or campaign name. The `id` filter denotes the unique transaction identifier.\n\n> 🚧\n> The endpoint works only for gift card and loyalty campaigns.",
+ "description": "Retrieves all transactions for the campaign with the given campaign ID or campaign name. The `id` filter denotes the unique transaction identifier.\n\n\n\nThe endpoint works only for gift card and loyalty campaigns.\n\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -57957,7 +57957,7 @@
}
],
"summary": "Export Campaign Transactions",
- "description": "Export transactions is an asynchronous process that generates a CSV file with the data about credit movements on all gift cards or point movements on all loyalty cards in a given campaign.\n\nTo export transactions:\n1. In the export request, use parameters to select which fields will be exported, in what order, and which data will be filtered.\n2. Use the returned `id` to track the export status with the [GET Export](/api-reference/exports/get-export) method.\n3. In the GET Export method, when the returned `status` field has the `DONE` value, the export file has been generated.\n4. Use the URL in the `result` property to download the file. You must be logged to your Voucherify account on a given cluster in the browser to be able to download the file.\n\nAn export request will almost always result in a single file being generated by the system. However, when the data volume is large, the system may split the results into multiple files.\n\nAn example export file can look as follows:\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| `id` | Unique transaction ID. | `vtx_0cb7811f1c07765800` |\n| `type` | Transaction type. |**Gift cards**:
- `CREDITS_REMOVAL`
- `CREDITS_ADDITION`
- `CREDITS_REFUND`
- `CREDITS_REDEMPTION`
**Loyalty cards**:
- `POINTS_ACCRUAL`
- `POINTS_REDEMPTION`
- `POINTS_REFUND`
- `POINTS_ADDITION`
- `POINTS_REMOVAL`
- `POINTS_EXPIRATION`
- `POINTS_TRANSFER_IN`
- `POINTS_TRANSFER_OUT` |\n| `source_id` | Unique transaction source ID. Optional and only in manual operations: `CREDITS_ADDITION`, `CREDITS_REMOVAL`, `POINTS_ADDITION`, `POINTS_REMOVAL`, `POINTS_TRANSFER_OUT`. | 8638 |\n| `reason` | Contains the reason for the transaction if one was included originally. Optional and only in the following manual operations: `CREDITS_ADDITION`, `CREDITS_REMOVAL`, `POINTS_ADDITION`, `POINTS_REMOVAL`, `POINTS_TRANSFER_OUT`, `POINTS_TRANSFER_IN`. | `Apology for sending a broken item` |\n| `balance` | The gift card or loyalty card balance after the transaction. | |\n| `amount` | The amount of gift card or loyalty card credits being allocated during the transaction. This value can either be negative or positive depending on the nature of the transaction. | |\n| `created_at` | Timestamp in ISO 8601 format representing the date and time when the transaction was created. | `2024-10-09T09:16:32.521Z` |\n| `voucher_id` | Unique voucher ID. | `v_dky7ksKfPX50Wb2Bxvcoeb1xT20b6tcp` |\n| `source`| Channel through which the transaction was initiated. | `API` |\n| `details` | More detailed information stored in the form of JSON. | Provides more details related to the transaction in the form of an object. |\n| `related_transaction_id` | Unique transaction ID related to a receiver/donor card in the case of a points transfer from/to another card. | `vtx_0c9afe802593b34b80` |\n\n> 👍 Export Loyalty Campaign Transactions\n>\n> For loyalty campaigns, this method works in the same way the [POST Export Loyalty Campaign Transactions](/api-reference/loyalties/export-loyalty-campaign-transactions) does.",
+ "description": "Export transactions is an asynchronous process that generates a CSV file with the data about credit movements on all gift cards or point movements on all loyalty cards in a given campaign.\n\nTo export transactions:\n1. In the export request, use parameters to select which fields will be exported, in what order, and which data will be filtered.\n2. Use the returned `id` to track the export status with the [GET Export](/api-reference/exports/get-export) method.\n3. In the GET Export method, when the returned `status` field has the `DONE` value, the export file has been generated.\n4. Use the URL in the `result` property to download the file. You must be logged to your Voucherify account on a given cluster in the browser to be able to download the file.\n\nAn export request will almost always result in a single file being generated by the system. However, when the data volume is large, the system may split the results into multiple files.\n\nAn example export file can look as follows:\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| `id` | Unique transaction ID. | `vtx_0cb7811f1c07765800` |\n| `type` | Transaction type. |**Gift cards**:
- `CREDITS_REMOVAL`
- `CREDITS_ADDITION`
- `CREDITS_REFUND`
- `CREDITS_REDEMPTION`
**Loyalty cards**:
- `POINTS_ACCRUAL`
- `POINTS_REDEMPTION`
- `POINTS_REFUND`
- `POINTS_ADDITION`
- `POINTS_REMOVAL`
- `POINTS_EXPIRATION`
- `POINTS_TRANSFER_IN`
- `POINTS_TRANSFER_OUT` |\n| `source_id` | Unique transaction source ID. Optional and only in manual operations: `CREDITS_ADDITION`, `CREDITS_REMOVAL`, `POINTS_ADDITION`, `POINTS_REMOVAL`, `POINTS_TRANSFER_OUT`. | 8638 |\n| `reason` | Contains the reason for the transaction if one was included originally. Optional and only in the following manual operations: `CREDITS_ADDITION`, `CREDITS_REMOVAL`, `POINTS_ADDITION`, `POINTS_REMOVAL`, `POINTS_TRANSFER_OUT`, `POINTS_TRANSFER_IN`. | `Apology for sending a broken item` |\n| `balance` | The gift card or loyalty card balance after the transaction. | |\n| `amount` | The amount of gift card or loyalty card credits being allocated during the transaction. This value can either be negative or positive depending on the nature of the transaction. | |\n| `created_at` | Timestamp in ISO 8601 format representing the date and time when the transaction was created. | `2024-10-09T09:16:32.521Z` |\n| `voucher_id` | Unique voucher ID. | `v_dky7ksKfPX50Wb2Bxvcoeb1xT20b6tcp` |\n| `source`| Channel through which the transaction was initiated. | `API` |\n| `details` | More detailed information stored in the form of JSON. | Provides more details related to the transaction in the form of an object. |\n| `related_transaction_id` | Unique transaction ID related to a receiver/donor card in the case of a points transfer from/to another card. | `vtx_0c9afe802593b34b80` |\n\n\n\nExport Loyalty Campaign Transactions\n\nFor loyalty campaigns, this method works in the same way the [POST Export Loyalty Campaign Transactions](/api-reference/loyalties/export-loyalty-campaign-transactions) does.\n\n",
"requestBody": {
"description": "Specify the parameters for the transaction export.",
"content": {
@@ -58131,7 +58131,7 @@
"Campaigns"
],
"summary": "Get Campaign Summary",
- "description": "Returns data for campaign analytics, covering validations, redemptions, publications, and other details specific to a given campaign type.\n\nUse `start_date` and `end_date` to narrow down the data to specific periods.\n\n>🚧 Campaigns created before 17 June 2025\n>\n>This endpoint returns analytics data for campaigns that were created after 17 June 2025. Older campaigns return empty data.",
+ "description": "Returns data for campaign analytics, covering validations, redemptions, publications, and other details specific to a given campaign type.\n\nUse `start_date` and `end_date` to narrow down the data to specific periods.\n\n\n\nCampaigns created before 17 June 2025\n\nThis endpoint returns analytics data for campaigns that were created after 17 June 2025. Older campaigns return empty data.\n\n",
"parameters": [
{
"name": "start_date",
@@ -61007,7 +61007,7 @@
"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.\n\n## Pagination\n\n\n> 🚧 Important!\n>\n> 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.\n\n## Filter Query\n\nThe `filters` query parameter allows for joining multiple parameters with logical operators. The syntax looks as follows:\n\n\n```\n \"$in\"\n \"$not_in\"\n \"$is\"\n \"$is_not\"\n \"$has_value\"\n \"$is_unknown\"\n \"$contains\"\n \"$starts_with\"\n \"$ends_with\"\n \"$more_than\"\n \"$less_than\"\n \"$more_than_equal\"\n \"$less_than_equal\"\n```\n\n### Examples\n\n\n```url\nGET /v1/publications?filters[customer_id][conditions][$is][0]=cust_lUET6gRpO5Wxlg5p2j2gRCgL\n```\n\n```url\nGET /v1/publications?filters[customer_id][conditions][$in][0]=cust_lUET6gRpO5Wxlg5p2j2gRCgL&filters[customer_id][conditions][$in][1]=cust_aR7NfHusxT7PdTMAKMfWDXnc\n```\n\n```url\nGET /v1/publications?filters[customer_id][conditions][$is][0]=cust_lUET6gRpO5Wxlg5p2j2gRCgL&filters[customer_id][conditions][$is][1]=cust_aR7NfHusxT7PdTMAKMfWDXnc&filters[junction]=OR\n```",
+ "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.\n\n## Pagination\n\n\n\n\nImportant!\n\nIf 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.\n\n\n\n## Filter Query\n\nThe `filters` query parameter allows for joining multiple parameters with logical operators. The syntax looks as follows:\n\n\n```\n \"$in\"\n \"$not_in\"\n \"$is\"\n \"$is_not\"\n \"$has_value\"\n \"$is_unknown\"\n \"$contains\"\n \"$starts_with\"\n \"$ends_with\"\n \"$more_than\"\n \"$less_than\"\n \"$more_than_equal\"\n \"$less_than_equal\"\n```\n\n### Examples\n\n\n```url\nGET /v1/publications?filters[customer_id][conditions][$is][0]=cust_lUET6gRpO5Wxlg5p2j2gRCgL\n```\n\n```url\nGET /v1/publications?filters[customer_id][conditions][$in][0]=cust_lUET6gRpO5Wxlg5p2j2gRCgL&filters[customer_id][conditions][$in][1]=cust_aR7NfHusxT7PdTMAKMfWDXnc\n```\n\n```url\nGET /v1/publications?filters[customer_id][conditions][$is][0]=cust_lUET6gRpO5Wxlg5p2j2gRCgL&filters[customer_id][conditions][$is][1]=cust_aR7NfHusxT7PdTMAKMfWDXnc&filters[junction]=OR\n```",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -61259,7 +61259,7 @@
"Publications"
],
"summary": "Create Publication",
- "description": "This method selects vouchers that are suitable for publication, adds a publish entry and returns the publication.\n\nA voucher is suitable for publication when it's active and hasn't been published yet. \n\n\n> 🚧 Clearly define the source of the voucher\n>\n> You must clearly define which source you want to publish the voucher code from. It can either be a code from a campaign or a specific voucher identified by a code. \n\n> 🚧 Publish multiple vouchers\n> In case you want to publish multiple vouchers within a single publication, you need to specify the campaign name and number of vouchers you want to publish. \n\n\n> 📘 Auto-update campaign\n>\n> In case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use an **auto-update** campaign.",
+ "description": "This method selects vouchers that are suitable for publication, adds a publish entry and returns the publication.\n\nA voucher is suitable for publication when it's active and hasn't been published yet. \n\n\n\n\nClearly define the source of the voucher\n\nYou must clearly define which source you want to publish the voucher code from. It can either be a code from a campaign or a specific voucher identified by a code.\n\n\n\n\n\nPublish multiple vouchers\n\nIn case you want to publish multiple vouchers within a single publication, you need to specify the campaign name and number of vouchers you want to publish.\n\n\n\n\n\n\nAuto-update campaign\n\nIn case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use an **auto-update** campaign.\n\n",
"parameters": [
{
"schema": {
@@ -61530,7 +61530,7 @@
"Validations"
],
"summary": "Validate Voucher",
- "description": "\n> ❗️ Deprecated \n>\n> This endpoint represents the deprecated version of the API responsible for voucher validation, and we do not recommend using it. The new [Stackable Discounts API](/api-reference/validations/validate-stackable-discounts) introduces additional features and improvements while maintaining backward compatibility, including applying a combination of coupon codes and promotion tiers. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint. \n\nTo verify a voucher code given by a customer, you can use this method. It is designed for a server side integration, which means that is accessible only through private keys. \n\n\n> ❗️ Important \n>\n> This endpoint supports the validation of a single promo code. If you need to validate more than one incentive, you can use the [Stackable discounts API](/api-reference/validations/validate-stackable-discounts). The stacking discounts API lets you validate up to 30 incentives per call. Before integrating Voucherify, choose which validation endpoint you prefer to use.\n\n#### Gift Vouchers - validate Gift Card and control amount to redeem\nVoucherify also gives the possibility to create a gift card, which allows using credits to fulfill the order. A user can specify how many credits he wants to use from the gift card. The available balance of credits is counted based on policy rules attached to the Gift Voucher definition. \n\nThis operation returns information about the validity of the code. Moreover, it returns a hashed source identifier which can be used as a tracking ID in future calls.\n\nIf a validation session is established, then the session details will be returned as well. Read more about sessions [here](/guides/locking-validation-session).\n\nVoucher validation might fail because of one of these reasons:\n* `voucher not found` - voucher doesn't exist or was [deleted](/api-reference/vouchers/delete-voucher)\n* `voucher expired` - voucher is out of start date - expiration date time frame\n* `voucher is disabled` - learn more about a [disabled voucher](/api-reference/vouchers/disable-voucher)\n* `customer does not match segment rules` - learn more [customer tracking](/api-reference/customers/customer-object) \n* `order does not match validation rules` - learn more about [validation rules](/api-reference/validation-rules/validation-rule-object)",
+ "description": "\n\n\nDeprecated\n\nThis endpoint represents the deprecated version of the API responsible for voucher validation, and we do not recommend using it. The new [Stackable Discounts API](/api-reference/validations/validate-stackable-discounts) introduces additional features and improvements while maintaining backward compatibility, including applying a combination of coupon codes and promotion tiers. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint.\n\n\n\nTo verify a voucher code given by a customer, you can use this method. It is designed for a server side integration, which means that is accessible only through private keys. \n\n\n\n\nImportant\n\nThis endpoint supports the validation of a single promo code. If you need to validate more than one incentive, you can use the [Stackable discounts API](/api-reference/validations/validate-stackable-discounts). The stacking discounts API lets you validate up to 30 incentives per call. Before integrating Voucherify, choose which validation endpoint you prefer to use.\n\n\n\n#### Gift Vouchers - validate Gift Card and control amount to redeem\nVoucherify also gives the possibility to create a gift card, which allows using credits to fulfill the order. A user can specify how many credits he wants to use from the gift card. The available balance of credits is counted based on policy rules attached to the Gift Voucher definition. \n\nThis operation returns information about the validity of the code. Moreover, it returns a hashed source identifier which can be used as a tracking ID in future calls.\n\nIf a validation session is established, then the session details will be returned as well. Read more about sessions [here](/guides/locking-validation-session).\n\nVoucher validation might fail because of one of these reasons:\n* `voucher not found` - voucher doesn't exist or was [deleted](/api-reference/vouchers/delete-voucher)\n* `voucher expired` - voucher is out of start date - expiration date time frame\n* `voucher is disabled` - learn more about a [disabled voucher](/api-reference/vouchers/disable-voucher)\n* `customer does not match segment rules` - learn more [customer tracking](/api-reference/customers/customer-object) \n* `order does not match validation rules` - learn more about [validation rules](/api-reference/validation-rules/validation-rule-object)",
"parameters": [],
"security": [
{
@@ -63005,7 +63005,7 @@
"Validations"
],
"summary": "Validate Promotions",
- "description": "\n> ❗️ Deprecated \n>\n> This endpoint represents the deprecated version of the API responsible for qualification, and we do not recommend using it. The new [Qualifications API](/api-reference/qualifications/check-eligibility) introduces additional features and improvements while maintaining backward compatibility. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint. \n\n \n> ❗️ Limitation \n>\n> Only the first 150 most recent promotion tiers are checked for eligibility. Older promotion tiers are ignored and not returned. \n\n Use this method to get valid promotions for a given customer and order.\n\n### Advanced validation filters\n\nYou can narrow down a validation to a specific promotion ID or tier metadata.",
+ "description": "\n\n\nDeprecated\n\nThis endpoint represents the deprecated version of the API responsible for qualification, and we do not recommend using it. The new [Qualifications API](/api-reference/qualifications/check-eligibility) introduces additional features and improvements while maintaining backward compatibility. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint.\n\n\n\n \n\n\nLimitation\n\nOnly the first 150 most recent promotion tiers are checked for eligibility. Older promotion tiers are ignored and not returned.\n\n\n\n Use this method to get valid promotions for a given customer and order.\n\n### Advanced validation filters\n\nYou can narrow down a validation to a specific promotion ID or tier metadata.",
"parameters": [
{
"schema": {
@@ -65040,7 +65040,7 @@
"Validations"
],
"summary": "Validate Promotion Tier",
- "description": "\n> ❗️ Deprecated \n>\n> This endpoint represents the deprecated version of the API responsible for promotion tier redemption, and we do not recommend using it. The new [Stackable Discounts API](/api-reference/validations/validate-stackable-discounts) introduces additional features and improvements while maintaining backward compatibility, including applying a combination of coupon codes and promotion tiers. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint. \n\nTo verify whether the promotion tier discount can be applied to an order. This method is designed for server side integration which means that it is accessible only through private keys.",
+ "description": "\n\n\nDeprecated\n\nThis endpoint represents the deprecated version of the API responsible for promotion tier redemption, and we do not recommend using it. The new [Stackable Discounts API](/api-reference/validations/validate-stackable-discounts) introduces additional features and improvements while maintaining backward compatibility, including applying a combination of coupon codes and promotion tiers. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint.\n\n\n\nTo verify whether the promotion tier discount can be applied to an order. This method is designed for server side integration which means that it is accessible only through private keys.",
"parameters": [],
"security": [
{
@@ -67311,7 +67311,7 @@
"Redemptions"
],
"summary": "Redeem Voucher",
- "description": "\n> ❗️ Deprecated \n>\n> This endpoint represents the deprecated version of the API responsible for voucher redemption, and we do not recommend using it. The new [Stackable Discounts API](/api-reference/redemptions/redeem-stackable-discounts) introduces additional features and improvements while maintaining backward compatibility, including applying a combination of coupon codes and promotion tiers. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint. \n\nTo redeem a voucher, you create a redemption object. It increments the redemption counter and updates the history of the voucher. \n\n## How discounts and order amounts are calculated in the API response?\n\nIn the table below, you can see the logic the API follows to calculate discounts and amounts:\n\n| **Field** | **Calculation** | **Description** |\n|:---|:---|:---|\n| amount | N/A | This field shows the order amount before applying any discount |\n| total_amount | total_amount = amount - total_discount_amount | This field shows the order amount after applying all the discounts |\n| discount_amount | discount_amount = previous_discount_amount + applied_discount_amount | This field sums up all order-level discounts applied to a patricular order |\n| items_discount_amount | sum(items, i => i.discount_amount) | This field sums up all product-specific discounts applied to this order |\n| total_discount_amount | total_discount_amount = discount_amount + items_discount_amount | This field sums up all order-level and all product-specific discounts applied to this order |\n| applied_discount_amount | N/A | This field shows order-level discount applied in a particular request |\n| items_applied_discount_amount | sum(items, i => i.applied_discount_amount) | This field sums up all product-specific discounts applied in a particular request |\n| total_applied_discount_amount | total_applied_discount_amount = applied_discount_amount + items_applied_discount_amount | This field sums up all order-level and all product-specific discounts applied in a particular request |",
+ "description": "\n\n\nDeprecated\n\nThis endpoint represents the deprecated version of the API responsible for voucher redemption, and we do not recommend using it. The new [Stackable Discounts API](/api-reference/redemptions/redeem-stackable-discounts) introduces additional features and improvements while maintaining backward compatibility, including applying a combination of coupon codes and promotion tiers. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint.\n\n\n\nTo redeem a voucher, you create a redemption object. It increments the redemption counter and updates the history of the voucher. \n\n## How discounts and order amounts are calculated in the API response?\n\nIn the table below, you can see the logic the API follows to calculate discounts and amounts:\n\n| **Field** | **Calculation** | **Description** |\n|:---|:---|:---|\n| amount | N/A | This field shows the order amount before applying any discount |\n| total_amount | total_amount = amount - total_discount_amount | This field shows the order amount after applying all the discounts |\n| discount_amount | discount_amount = previous_discount_amount + applied_discount_amount | This field sums up all order-level discounts applied to a patricular order |\n| items_discount_amount | sum(items, i => i.discount_amount) | This field sums up all product-specific discounts applied to this order |\n| total_discount_amount | total_discount_amount = discount_amount + items_discount_amount | This field sums up all order-level and all product-specific discounts applied to this order |\n| applied_discount_amount | N/A | This field shows order-level discount applied in a particular request |\n| items_applied_discount_amount | sum(items, i => i.applied_discount_amount) | This field sums up all product-specific discounts applied in a particular request |\n| total_applied_discount_amount | total_applied_discount_amount = applied_discount_amount + items_applied_discount_amount | This field sums up all order-level and all product-specific discounts applied in a particular request |",
"parameters": [
{
"schema": {
@@ -67947,7 +67947,7 @@
"Redemptions"
],
"summary": "Rollback Redemption",
- "description": "Your business logic may include a case when you need to undo a redemption. You can revert a redemption by calling this API endpoint. This endpoint rolls back only single redemptions, meaning those that are not stacked. Stacked redemptions belong to a parent redemption. To roll back a parent redemption, including all of its individual redemptions, use the [POST Rollback Stackable Redemptions](/api-reference/redemptions/rollback-stackable-redemptions) \n>🚧 \n>You can roll back a redemption up to 3 months back. \n\n ## Effect \nThe operation \n- creates a rollback entry in voucher's redemption history (`redemption.redemption_entries`) and \n- gives 1 redemption back to the pool (decreases `redeemed_quantity` by 1). \n## Returned funds \nIn case of *gift card vouchers*, this method returns funds back according to the source redemption. In case of *loyalty card vouchers*, this method returns points back according to the source redemption.",
+ "description": "Your business logic may include a case when you need to undo a redemption. You can revert a redemption by calling this API endpoint. This endpoint rolls back only single redemptions, meaning those that are not stacked. Stacked redemptions belong to a parent redemption. To roll back a parent redemption, including all of its individual redemptions, use the [POST Rollback Stackable Redemptions](/api-reference/redemptions/rollback-stackable-redemptions) \n\n\nYou can roll back a redemption up to 3 months back.\n\n\n\n ## Effect \nThe operation \n- creates a rollback entry in voucher's redemption history (`redemption.redemption_entries`) and \n- gives 1 redemption back to the pool (decreases `redeemed_quantity` by 1). \n## Returned funds \nIn case of *gift card vouchers*, this method returns funds back according to the source redemption. In case of *loyalty card vouchers*, this method returns points back according to the source redemption.",
"parameters": [
{
"schema": {
@@ -68722,7 +68722,7 @@
"Redemptions"
],
"summary": "Redeem Promotion",
- "description": "\n> ❗️ Deprecated \n>\n> This endpoint represents the deprecated version of the API responsible for promotion tier redemption, and we do not recommend using it. The new [Stackable Discounts API](/api-reference/redemptions/redeem-stackable-discounts) introduces additional features and improvements while maintaining backward compatibility, including applying a combination of coupon codes and promotion tiers. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint. \n\nTo redeem a promotion, you create a redemption object passing a context.\n\nYou can retrieve a list of active promotions through the [Validate Promotions](/api-reference/validations/validate-promotion-tier) endpoint. That validation method will return a list of active promotion tiers identified by thier IDs. \n\n> 📘 Redemption rollback\n>\n> Do you need to undo a redemption? You can do it with [redemption rollback](/api-reference/redemptions/rollback-redemption).",
+ "description": "\n\n\nDeprecated\n\nThis endpoint represents the deprecated version of the API responsible for promotion tier redemption, and we do not recommend using it. The new [Stackable Discounts API](/api-reference/redemptions/redeem-stackable-discounts) introduces additional features and improvements while maintaining backward compatibility, including applying a combination of coupon codes and promotion tiers. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint.\n\n\n\nTo redeem a promotion, you create a redemption object passing a context.\n\nYou can retrieve a list of active promotions through the [Validate Promotions](/api-reference/validations/validate-promotion-tier) endpoint. That validation method will return a list of active promotion tiers identified by thier IDs. \n\n\n\nRedemption rollback\n\nDo you need to undo a redemption? You can do it with [redemption rollback](/api-reference/redemptions/rollback-redemption).\n\n",
"parameters": [],
"security": [
{
@@ -69159,7 +69159,7 @@
"Redemptions"
],
"summary": "Rollback Stackable Redemptions",
- "description": "Rollback a stackable redemption. When you roll back a stacked redemption, all child redemptions will be rolled back. Provide the parent redemption ID as the path parameter. However, you can use this endpoint to roll back a single redemption that does not have a parent, similarly to [POST Rollback redemption](/api-reference/redemptions/rollback-redemption).\n>🚧 \n> You can roll back a redemption up to 3 months back.",
+ "description": "Rollback a stackable redemption. When you roll back a stacked redemption, all child redemptions will be rolled back. Provide the parent redemption ID as the path parameter. However, you can use this endpoint to roll back a single redemption that does not have a parent, similarly to [POST Rollback redemption](/api-reference/redemptions/rollback-redemption).\n\n\nYou can roll back a redemption up to 3 months back.\n\n",
"parameters": [
{
"schema": {
@@ -69281,11 +69281,12 @@
"/v1/loyalties": {
"get": {
"operationId": "list-loyalty-programs",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Campaigns",
- "description": "Returns a list of your loyalty campaigns.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nReturns a list of your loyalty campaigns.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -69500,11 +69501,12 @@
},
"post": {
"operationId": "create-loyalty-program",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Create Loyalty Campaign",
- "description": "Creates a batch of [loyalty cards](/api-reference/loyalties/get-member) aggregated in a single loyalty campaign. It also allows you to define a custom codes pattern. \n\n\n> 📘 Global uniqueness\n> All codes are unique across the whole project. Voucherify won't allow to generate the same codes in any of your campaigns.\n\n\n> 🚧 Asynchronous action!\n>\n> This is an asynchronous action, you can't read or modify a newly created campaign until the code generation is completed. See `creation_status` field in the [loyalty campaign object](/api-reference/loyalties/loyalty-campaign-object) description.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nCreates a batch of [loyalty cards](/api-reference/loyalties/get-member) aggregated in a single loyalty campaign. It also allows you to define a custom codes pattern. \n\n\n\n\nGlobal uniqueness\n\nAll codes are unique across the whole project. Voucherify won't allow to generate the same codes in any of your campaigns.\n\n\n\n\n\n\nAsynchronous action!\n\nThis is an asynchronous action, you can't read or modify a newly created campaign until the code generation is completed. See `creation_status` field in the [loyalty campaign object](/api-reference/loyalties/loyalty-campaign-object) description.\n\n",
"parameters": [],
"security": [
{
@@ -69738,11 +69740,12 @@
],
"get": {
"operationId": "get-loyalty-program",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Loyalty Campaign",
- "description": "Retrieve a specific loyalty campaign.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieve a specific loyalty campaign.",
"parameters": [],
"security": [
{
@@ -69882,11 +69885,12 @@
},
"put": {
"operationId": "update-loyalty-program",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Update Loyalty Campaign",
- "description": "Updates a loyalty program. \n\nFields other than those specified in the allowed request body payload won't be modified (even if provided they are silently skipped). Any parameters not provided will be left unchanged. \n\nThis method will update the [loyalty cards](/api-reference/loyalties/get-member) which have not been published or redeemed yet.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nUpdates a loyalty program. \n\nFields other than those specified in the allowed request body payload won't be modified (even if provided they are silently skipped). Any parameters not provided will be left unchanged. \n\nThis method will update the [loyalty cards](/api-reference/loyalties/get-member) which have not been published or redeemed yet.",
"parameters": [],
"security": [
{
@@ -70123,11 +70127,12 @@
},
"delete": {
"operationId": "delete-loyalty-program",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Delete Loyalty Campaign",
- "description": "Deletes a loyalty campaign and all related loyalty cards. This action cannot be undone. Also, it immediately removes any redemptions on loyalty cards.\n\nIf the `force` parameter is set to `false` or not set at all, the loyalty campaign and all related loyalty cards will be moved to [the bin](/api-reference/bin/list-bin-entries).",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nDeletes a loyalty campaign and all related loyalty cards. This action cannot be undone. Also, it immediately removes any redemptions on loyalty cards.\n\nIf the `force` parameter is set to `false` or not set at all, the loyalty campaign and all related loyalty cards will be moved to [the bin](/api-reference/bin/list-bin-entries).",
"parameters": [
{
"schema": {
@@ -70206,11 +70211,12 @@
],
"get": {
"operationId": "list-members",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Members",
- "description": "Returns a list of your loyalty cards. The loyalty cards are sorted by creation date, with the most recent loyalty cards appearing first.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nReturns a list of your loyalty cards. The loyalty cards are sorted by creation date, with the most recent loyalty cards appearing first.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -70385,11 +70391,12 @@
},
"post": {
"operationId": "add-member",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Add Member",
- "description": "This method assigns a loyalty card to a customer. It selects a [loyalty card](/api-reference/vouchers/get-voucher) suitable for publication, adds a publish entry, and returns the published voucher. \n\nA voucher is suitable for publication when it's active and hasn't been published yet. \n\n\n> 📘 Auto-update campaign\n>\n> In case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use **auto-update** campaign.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nThis method assigns a loyalty card to a customer. It selects a [loyalty card](/api-reference/vouchers/get-voucher) suitable for publication, adds a publish entry, and returns the published voucher. \n\nA voucher is suitable for publication when it's active and hasn't been published yet. \n\n\n\n\nAuto-update campaign\n\nIn case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use **auto-update** campaign.\n\n",
"parameters": [],
"security": [
{
@@ -70612,11 +70619,12 @@
],
"get": {
"operationId": "get-member-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Member with campaign ID",
- "description": "Retrieves the loyalty card with the given member ID (i.e. voucher code).",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieves the loyalty card with the given member ID (i.e. voucher code).",
"parameters": [],
"security": [
{
@@ -70712,11 +70720,12 @@
],
"get": {
"operationId": "get-member",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Member",
- "description": "Retrieve loyalty card with the given member ID (i.e. voucher code). \n\n\n> 📘 Alternative endpoint\n> This endpoint is an alternative to this [endpoint](/api-reference/loyalties/get-member-with-campaign-id). The URL was re-designed to allow you to retrieve loyalty card details without having to provide the `campaignId` as a path parameter.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieve loyalty card with the given member ID (i.e. voucher code). \n\n\n\n\nAlternative endpoint\n\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/get-member-with-campaign-id). The URL was re-designed to allow you to retrieve loyalty card details without having to provide the `campaignId` as a path parameter.\n\n",
"parameters": [],
"security": [
{
@@ -70812,11 +70821,12 @@
],
"get": {
"operationId": "list-campaign-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Campaign Pending Points",
- "description": "Lists all pending points that are currently assigned to all loyalty cards in a campaign. Once the points are added to the card, the entry is no longer returned.\n\n>👍 Configuring pending points\n>\n>Pending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nLists all pending points that are currently assigned to all loyalty cards in a campaign. Once the points are added to the card, the entry is no longer returned.\n\n\n\nConfiguring pending points\n\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n\n",
"parameters": [
{
"schema": {
@@ -71047,11 +71057,12 @@
],
"get": {
"operationId": "list-member-pending-points-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Pending Points with campaign ID",
- "description": "Lists all pending points that are currently assigned to the loyalty card. Once the points are added to the card, the entry is no longer returned.\n\n>👍 Configuring pending points\n>\n>Pending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nLists all pending points that are currently assigned to the loyalty card. Once the points are added to the card, the entry is no longer returned.\n\n\n\nConfiguring pending points\n\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n\n",
"parameters": [
{
"schema": {
@@ -71284,11 +71295,12 @@
],
"get": {
"operationId": "list-member-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Pending Points",
- "description": "\n> 📘 Alternative endpoint\n> This endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-member-pending-points-with-campaign-id). The URL was re-designed to list member pending points without having to provide the `campaignId` as a path parameter.\n\nLists all pending points that are currently assigned to the loyalty card. Once the points are added to the card, the entry is no longer returned.\n\n>👍 Configuring pending points\n>\n>Pending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\n\n\n\nAlternative endpoint\n\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-member-pending-points-with-campaign-id). The URL was re-designed to list member pending points without having to provide the `campaignId` as a path parameter.\n\n\n\nLists all pending points that are currently assigned to the loyalty card. Once the points are added to the card, the entry is no longer returned.\n\n\n\nConfiguring pending points\n\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n\n",
"parameters": [
{
"schema": {
@@ -71519,11 +71531,12 @@
],
"post": {
"operationId": "activate-member-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Activate Member Pending Points",
- "description": "Activate manually the pending points and add them to the loyalty card. The pending points are determined by the pending point ID.\n\nOnce activated, the pending point entry with that ID is not listed by the endpoints: List member ([with campaign ID](/api-reference/loyalties/list-member-pending-points-with-campaign-id), [without campaign ID](/api-reference/loyalties/list-member-pending-points)), [List campaign pending points](/api-reference/loyalties/list-campaign-pending-points).\n\nThis **POST** method does not require a request body.\n\n>👍 Configuring pending points\n>\n>Pending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nActivate manually the pending points and add them to the loyalty card. The pending points are determined by the pending point ID.\n\nOnce activated, the pending point entry with that ID is not listed by the endpoints: List member ([with campaign ID](/api-reference/loyalties/list-member-pending-points-with-campaign-id), [without campaign ID](/api-reference/loyalties/list-member-pending-points)), [List campaign pending points](/api-reference/loyalties/list-campaign-pending-points).\n\nThis **POST** method does not require a request body.\n\n\n\nConfiguring pending points\n\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n\n",
"parameters": [],
"security": [
{
@@ -71652,11 +71665,12 @@
],
"post": {
"operationId": "adjust-member-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Adjust Member Pending Points",
- "description": "Adjusts the pending points with a given ID. You can add or subtract the number of points.\n\n>👍 Configuring pending points\n>\n>Pending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nAdjusts the pending points with a given ID. You can add or subtract the number of points.\n\n\n\nConfiguring pending points\n\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n\n",
"parameters": [],
"security": [
{
@@ -71806,11 +71820,12 @@
],
"post": {
"operationId": "cancel-member-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Cancel Member Pending Points",
- "description": "Cancel manually the pending points for the loyalty card. The pending points are determined by the pending point ID.\n\nOnce canceled, the pending point entry with that ID is not listed by the endpoints: List member ([with campaign ID](/api-reference/loyalties/list-member-pending-points-with-campaign-id), [without campaign ID](/api-reference/loyalties/list-member-pending-points)), [List campaign pending points](/api-reference/loyalties/list-campaign-pending-points).\n\nThis **POST** method does not require a request body and it returns an empty, 204, response.\n\n>👍 Configuring pending points\n>\n>Pending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nCancel manually the pending points for the loyalty card. The pending points are determined by the pending point ID.\n\nOnce canceled, the pending point entry with that ID is not listed by the endpoints: List member ([with campaign ID](/api-reference/loyalties/list-member-pending-points-with-campaign-id), [without campaign ID](/api-reference/loyalties/list-member-pending-points)), [List campaign pending points](/api-reference/loyalties/list-campaign-pending-points).\n\nThis **POST** method does not require a request body and it returns an empty, 204, response.\n\n\n\nConfiguring pending points\n\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n\n",
"parameters": [],
"security": [
{
@@ -71916,11 +71931,12 @@
],
"get": {
"operationId": "list-member-activity-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Activity with campaign ID",
- "description": "Retrieves the list of activities for the given member ID related to a voucher and customer who is the holder of the voucher.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieves the list of activities for the given member ID related to a voucher and customer who is the holder of the voucher.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -72014,11 +72030,12 @@
],
"get": {
"operationId": "list-member-activity",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Activity",
- "description": "\n> 📘 Alternative endpoint\n> This endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-member-activity-with-campaign-id). The URL was re-designed to allow you to get member activities without having to provide the `campaignId` as a path parameter.\n\nRetrieves the list of activities for the given member ID related to a voucher and customer who is the holder of the voucher.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\n\n\n\nAlternative endpoint\n\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-member-activity-with-campaign-id). The URL was re-designed to allow you to get member activities without having to provide the `campaignId` as a path parameter.\n\n\n\nRetrieves the list of activities for the given member ID related to a voucher and customer who is the holder of the voucher.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -72110,11 +72127,12 @@
],
"post": {
"operationId": "update-loyalty-card-balance-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Adjust Loyalty Card Balance with campaign ID",
- "description": "This method adds or removes balance to an existing loyalty card that is assigned to a holder. The removal of points will consume the points that expire the soonest. \n\n >🚧 Async Action\n> \n> This is an async action. If you want to perform several add or remove loyalty card balance actions in a short time and their order matters, set up sufficient time-out between the calls.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nThis method adds or removes balance to an existing loyalty card that is assigned to a holder. The removal of points will consume the points that expire the soonest. \n\n \n\nAsync Action\n\nThis is an async action. If you want to perform several add or remove loyalty card balance actions in a short time and their order matters, set up sufficient time-out between the calls.\n\n",
"parameters": [],
"security": [
{
@@ -72228,11 +72246,12 @@
],
"post": {
"operationId": "update-loyalty-card-balance",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Adjust Loyalty Card Balance",
- "description": "This method gives adds or removes balance to an existing loyalty card that is assigned to a holder. The removal of points will consume the points that expire the soonest. \n\n\n\n >🚧 Async Action\n> \n> This is an async action. If you want to perform several add or remove loyalty card balance actions in a short time and their order matters, set up sufficient time-out between the calls.\n\n\n> 📘 Alternative endpoint\n> This endpoint is an alternative to this [endpoint](/api-reference/loyalties/adjust-loyalty-card-balance-with-campaign-id). The URL was re-designed to allow you to add or remove loyalty card balance without having to provide the `campaignId` as a path parameter.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nThis method gives adds or removes balance to an existing loyalty card that is assigned to a holder. The removal of points will consume the points that expire the soonest. \n\n\n\n \n\nAsync Action\n\nThis is an async action. If you want to perform several add or remove loyalty card balance actions in a short time and their order matters, set up sufficient time-out between the calls.\n\n\n\n\n\n\nAlternative endpoint\n\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/adjust-loyalty-card-balance-with-campaign-id). The URL was re-designed to allow you to add or remove loyalty card balance without having to provide the `campaignId` as a path parameter.\n\n",
"parameters": [],
"security": [
{
@@ -72342,11 +72361,12 @@
],
"post": {
"operationId": "transfer-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Transfer Loyalty Points",
- "description": "Transfer points between different loyalty cards which have holders.\n\nProvide the campaign ID and the loyalty card ID you want the points to be transferred to as path parameters. In the request body, provide the loyalty cards you want the points to be transferred from and the number of points to transfer from each card.\n\nTransfer works only for loyalty cards that have holders, meaning the cards were published to customers.\n\nThe transferred points expire according to the target program expiration rules.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nTransfer points between different loyalty cards which have holders.\n\nProvide the campaign ID and the loyalty card ID you want the points to be transferred to as path parameters. In the request body, provide the loyalty cards you want the points to be transferred from and the number of points to transfer from each card.\n\nTransfer works only for loyalty cards that have holders, meaning the cards were published to customers.\n\nThe transferred points expire according to the target program expiration rules.",
"parameters": [],
"security": [
{
@@ -72467,11 +72487,12 @@
],
"get": {
"operationId": "list-loyalty-campaign-transactions",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Campaign Transactions",
- "description": "Retrieves all transactions for the campaign with the given campaign ID or campaign name.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieves all transactions for the campaign with the given campaign ID or campaign name.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -72618,6 +72639,7 @@
],
"post": {
"operationId": "export-loyalty-campaign-transactions",
+ "deprecated": true,
"tags": [
"Loyalties"
],
@@ -72633,7 +72655,7 @@
}
],
"summary": "Export Loyalty Campaign Transactions",
- "description": "Export transactions is an asynchronous process that generates a CSV file with the data about or point movements on all loyalty cards in a given campaign.\n\nTo export transactions:\n1. In the export request, use parameters to select which fields will be exported, in what order, and which data will be filtered.\n2. Use the returned `id` to track the export status with the [GET Export](/api-reference/exports/get-export) method.\n3. In the GET Export method, when the returned `status` field has the `DONE` value, the export file has been generated.\n4. Use the URL in the `result` property to download the file. You must be logged to your Voucherify account on a given cluster in the browser to be able to download the file.\n\nAn export request will almost always result in a single file being generated by the system. However, when the data volume is large, the system may split the results into multiple files.\n\nAn example export file can look as follows:\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| `id` | Unique transaction ID. | `vtx_0cb7811f1c07765800` |\n| `type` | Transaction type. | - `POINTS_ACCRUAL`
- `POINTS_REDEMPTION`
- `POINTS_REFUND`
- `POINTS_ADDITION`
- `POINTS_REMOVAL`
- `POINTS_EXPIRATION`
- `POINTS_TRANSFER_IN`
- `POINTS_TRANSFER_OUT` |\n| `source_id` | Unique transaction source ID. Optional and only in manual operations: `POINTS_ADDITION`, `POINTS_REMOVAL`, `POINTS_TRANSFER_OUT`. | 8638 |\n| `reason` | Contains the reason for the transaction if one was included originally. Optional and only in the following manual operations: `POINTS_ADDITION`, `POINTS_REMOVAL`, `POINTS_TRANSFER_OUT`, `POINTS_TRANSFER_IN`. | `Apology for sending a broken item` |\n| `balance` | The gift card or loyalty card balance after the transaction. | |\n| `amount` | The amount of gift card or loyalty card credits being allocated during the transaction. This value can either be negative or positive depending on the nature of the transaction. | |\n| `created_at` | Timestamp in ISO 8601 format representing the date and time when the transaction was created. | `2024-10-09T09:16:32.521Z` |\n| `voucher_id` | Unique voucher ID. | `v_dky7ksKfPX50Wb2Bxvcoeb1xT20b6tcp` |\n| `source`| Channel through which the transaction was initiated. | `API` |\n| `details` | More detailed information stored in the form of JSON. | Provides more details related to the transaction in the form of an object. |\n| `related_transaction_id` | Unique transaction ID related to a receiver/donor card in the case of a points transfer from/to another card. | `vtx_0c9afe802593b34b80` |\n\n> 👍 Export Campaign Transactions\n>\n> This method works in the same way the [POST Export Campaign Transactions](/api-reference/campaigns/export-campaign-transactions) does, but it is limited to loyalty campaigns only. The POST Export Campaign Transactions method can also export gift card campaign transactions.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nExport transactions is an asynchronous process that generates a CSV file with the data about or point movements on all loyalty cards in a given campaign.\n\nTo export transactions:\n1. In the export request, use parameters to select which fields will be exported, in what order, and which data will be filtered.\n2. Use the returned `id` to track the export status with the [GET Export](/api-reference/exports/get-export) method.\n3. In the GET Export method, when the returned `status` field has the `DONE` value, the export file has been generated.\n4. Use the URL in the `result` property to download the file. You must be logged to your Voucherify account on a given cluster in the browser to be able to download the file.\n\nAn export request will almost always result in a single file being generated by the system. However, when the data volume is large, the system may split the results into multiple files.\n\nAn example export file can look as follows:\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| `id` | Unique transaction ID. | `vtx_0cb7811f1c07765800` |\n| `type` | Transaction type. | - `POINTS_ACCRUAL`
- `POINTS_REDEMPTION`
- `POINTS_REFUND`
- `POINTS_ADDITION`
- `POINTS_REMOVAL`
- `POINTS_EXPIRATION`
- `POINTS_TRANSFER_IN`
- `POINTS_TRANSFER_OUT` |\n| `source_id` | Unique transaction source ID. Optional and only in manual operations: `POINTS_ADDITION`, `POINTS_REMOVAL`, `POINTS_TRANSFER_OUT`. | 8638 |\n| `reason` | Contains the reason for the transaction if one was included originally. Optional and only in the following manual operations: `POINTS_ADDITION`, `POINTS_REMOVAL`, `POINTS_TRANSFER_OUT`, `POINTS_TRANSFER_IN`. | `Apology for sending a broken item` |\n| `balance` | The gift card or loyalty card balance after the transaction. | |\n| `amount` | The amount of gift card or loyalty card credits being allocated during the transaction. This value can either be negative or positive depending on the nature of the transaction. | |\n| `created_at` | Timestamp in ISO 8601 format representing the date and time when the transaction was created. | `2024-10-09T09:16:32.521Z` |\n| `voucher_id` | Unique voucher ID. | `v_dky7ksKfPX50Wb2Bxvcoeb1xT20b6tcp` |\n| `source`| Channel through which the transaction was initiated. | `API` |\n| `details` | More detailed information stored in the form of JSON. | Provides more details related to the transaction in the form of an object. |\n| `related_transaction_id` | Unique transaction ID related to a receiver/donor card in the case of a points transfer from/to another card. | `vtx_0c9afe802593b34b80` |\n\n\n\nExport Campaign Transactions\n\nThis method works in the same way the [POST Export Campaign Transactions](/api-reference/campaigns/export-campaign-transactions) does, but it is limited to loyalty campaigns only. The POST Export Campaign Transactions method can also export gift card campaign transactions.\n\n",
"requestBody": {
"description": "Specify the parameters for the transaction export.",
"content": {
@@ -72812,11 +72834,12 @@
],
"get": {
"operationId": "list-loyalty-card-transactions-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Card Transactions with campaign ID",
- "description": "Retrieve transaction data related to point movements for a specific loyalty card.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieve transaction data related to point movements for a specific loyalty card.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -73181,11 +73204,12 @@
],
"get": {
"operationId": "list-loyalty-card-transactions",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Card Transactions",
- "description": "Retrieve transaction data related to point movements for a specific loyalty card.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieve transaction data related to point movements for a specific loyalty card.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -73550,11 +73574,12 @@
],
"post": {
"operationId": "export-loyalty-card-transactions",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Export Loyalty Card Transactions",
- "description": "Export transactions that are associated with point movements on a loyalty card.\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique transaction ID assigned by Voucherify. | vtx_0cb7811f1c07765800 |\n| type | Transaction type. | - `POINTS_EXPIRATION`
- `POINTS_ADDITION`
- `POINTS_REMOVAL`
- `POINTS_TRANSFER_OUT`
- `POINTS_ACCRUAL`
- `POINTS_REFUND`
- `POINTS_REDEMPTION` |\n| source_id | Custom source ID of the transaction if one was included originally. | source_id_custom |\n| reason | Contains the reason for the transaction if one was included originally. | |\n| balance | The loyalty card balance after the transaction. | |\n| amount | The amount of loyalty points being allocated during the transaction. This value can either be negative or positive depending on the nature of the transaction. | |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the transaction was created. | 2022-03-09T09:16:32.521Z |\n| voucher_id | Unique Voucher ID. | v_dky7ksKfPX50Wb2Bxvcoeb1xT20b6tcp |\n| campaign_id | Parent campaign ID. | camp_FNYR4jhqZBM9xTptxDGgeNBV |\n| source| Channel through which the transaction was initiated. | - `API`
- `voucherify-web-ui`
- `Automation` |\n| details | More detailed information stored in the form of a JSON. | Provides more details related to the transaction in the form of an object. |\n| related_transaction_id | Unique transaction ID related to a receiver/donor card in the case of a points transfer from/to another card. | vtx_0c9afe802593b34b80 |",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nExport transactions that are associated with point movements on a loyalty card.\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique transaction ID assigned by Voucherify. | vtx_0cb7811f1c07765800 |\n| type | Transaction type. | - `POINTS_EXPIRATION`
- `POINTS_ADDITION`
- `POINTS_REMOVAL`
- `POINTS_TRANSFER_OUT`
- `POINTS_ACCRUAL`
- `POINTS_REFUND`
- `POINTS_REDEMPTION` |\n| source_id | Custom source ID of the transaction if one was included originally. | source_id_custom |\n| reason | Contains the reason for the transaction if one was included originally. | |\n| balance | The loyalty card balance after the transaction. | |\n| amount | The amount of loyalty points being allocated during the transaction. This value can either be negative or positive depending on the nature of the transaction. | |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the transaction was created. | 2022-03-09T09:16:32.521Z |\n| voucher_id | Unique Voucher ID. | v_dky7ksKfPX50Wb2Bxvcoeb1xT20b6tcp |\n| campaign_id | Parent campaign ID. | camp_FNYR4jhqZBM9xTptxDGgeNBV |\n| source| Channel through which the transaction was initiated. | - `API`
- `voucherify-web-ui`
- `Automation` |\n| details | More detailed information stored in the form of a JSON. | Provides more details related to the transaction in the form of an object. |\n| related_transaction_id | Unique transaction ID related to a receiver/donor card in the case of a points transfer from/to another card. | vtx_0c9afe802593b34b80 |",
"parameters": [],
"security": [
{
@@ -73721,11 +73746,12 @@
],
"post": {
"operationId": "export-loyalty-card-transactions-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Export Loyalty Card Transactions with campaign ID",
- "description": "Export transactions that are associated with point movements on a loyalty card.\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique transaction ID assigned by Voucherify. | vtx_0cb7811f1c07765800 |\n| type | Transaction type. | - `POINTS_EXPIRATION`
- `POINTS_ADDITION`
- `POINTS_REMOVAL`
- `POINTS_TRANSFER_OUT`
- `POINTS_ACCRUAL`
- `POINTS_REFUND`
- `POINTS_REDEMPTION` |\n| source_id | Custom source ID of the transaction if one was included originally. | source_id_custom |\n| reason | Contains the reason for the transaction if one was included originally. | |\n| balance | The loyalty card balance after the transaction. | |\n| amount | The amount of loyalty points being allocated during the transaction. This value can either be negative or positive depending on the nature of the transaction. | |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the transaction was created. | 2022-03-09T09:16:32.521Z |\n| voucher_id | Unique Voucher ID. | v_dky7ksKfPX50Wb2Bxvcoeb1xT20b6tcp |\n| campaign_id | Parent campaign ID. | camp_FNYR4jhqZBM9xTptxDGgeNBV |\n| source| Channel through which the transaction was initiated. | - `API`
- `voucherify-web-ui`
- `Automation` |\n| details | More detailed information stored in the form of a JSON. | Provides more details related to the transaction in the form of an object. |\n| related_transaction_id | Unique transaction ID related to a receiver/donor card in the case of a points transfer from/to another card. | vtx_0c9afe802593b34b80 |",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nExport transactions that are associated with point movements on a loyalty card.\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique transaction ID assigned by Voucherify. | vtx_0cb7811f1c07765800 |\n| type | Transaction type. | - `POINTS_EXPIRATION`
- `POINTS_ADDITION`
- `POINTS_REMOVAL`
- `POINTS_TRANSFER_OUT`
- `POINTS_ACCRUAL`
- `POINTS_REFUND`
- `POINTS_REDEMPTION` |\n| source_id | Custom source ID of the transaction if one was included originally. | source_id_custom |\n| reason | Contains the reason for the transaction if one was included originally. | |\n| balance | The loyalty card balance after the transaction. | |\n| amount | The amount of loyalty points being allocated during the transaction. This value can either be negative or positive depending on the nature of the transaction. | |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the transaction was created. | 2022-03-09T09:16:32.521Z |\n| voucher_id | Unique Voucher ID. | v_dky7ksKfPX50Wb2Bxvcoeb1xT20b6tcp |\n| campaign_id | Parent campaign ID. | camp_FNYR4jhqZBM9xTptxDGgeNBV |\n| source| Channel through which the transaction was initiated. | - `API`
- `voucherify-web-ui`
- `Automation` |\n| details | More detailed information stored in the form of a JSON. | Provides more details related to the transaction in the form of an object. |\n| related_transaction_id | Unique transaction ID related to a receiver/donor card in the case of a points transfer from/to another card. | vtx_0c9afe802593b34b80 |",
"parameters": [],
"security": [
{
@@ -73892,11 +73918,12 @@
],
"get": {
"operationId": "list-points-expiration",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Card Point Expiration",
- "description": "Retrieve loyalty point expiration buckets for a given loyalty card. Expired point buckets are not returned in this endpoint. You can use the [Exports API](/api-reference/exports/create-export) to retrieve a list of both `ACTIVE` and `EXPIRED` point buckets.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieve loyalty point expiration buckets for a given loyalty card. Expired point buckets are not returned in this endpoint. You can use the [Exports API](/api-reference/exports/create-export) to retrieve a list of both `ACTIVE` and `EXPIRED` point buckets.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -74003,11 +74030,12 @@
],
"post": {
"operationId": "create-points-expiration-export",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Export Loyalty Campaign Point Expiration",
- "description": "Schedule the generation of a point expiration CSV file for a particular campaign. It can list point buckets, which can have an `ACTIVE` or `EXPIRED` status.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nSchedule the generation of a point expiration CSV file for a particular campaign. It can list point buckets, which can have an `ACTIVE` or `EXPIRED` status.",
"parameters": [],
"security": [
{
@@ -74176,11 +74204,12 @@
],
"get": {
"operationId": "list-earning-rules",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Earning Rules",
- "description": "Returns a list of all earning rules within a given campaign.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nReturns a list of all earning rules within a given campaign.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -74746,11 +74775,12 @@
},
"post": {
"operationId": "create-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Create Earning Rule",
- "description": "Create earning rules for a loyalty campaign.\n\n> 🚧 Maximum number of earning rules\n>\n> You can create up to 100 earning rules per project. The limit can be customized for clients with a single-tenant setup.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nCreate earning rules for a loyalty campaign.\n\n\n\nMaximum number of earning rules\n\nYou can create up to 100 earning rules per project. The limit can be customized for clients with a single-tenant setup.\n\n",
"parameters": [],
"security": [
{
@@ -75965,11 +75995,12 @@
],
"get": {
"operationId": "get-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Earning Rule",
- "description": "Retrieves an earning rule assigned to a campaign.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieves an earning rule assigned to a campaign.",
"parameters": [],
"security": [
{
@@ -76248,11 +76279,12 @@
},
"put": {
"operationId": "update-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Update Earning Rule",
- "description": "Update an earning rule definition.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nUpdate an earning rule definition.",
"parameters": [],
"security": [
{
@@ -76362,11 +76394,12 @@
},
"delete": {
"operationId": "delete-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Delete Earning Rule",
- "description": "This method deletes an earning rule for a specific loyalty campaign.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nThis method deletes an earning rule for a specific loyalty campaign.",
"parameters": [],
"security": [
{
@@ -76442,11 +76475,12 @@
],
"post": {
"operationId": "enable-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Enable Earning Rule",
- "description": "Enable an earning rule.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nEnable an earning rule.",
"parameters": [],
"security": [
{
@@ -76552,11 +76586,12 @@
],
"post": {
"operationId": "disable-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Disable Earning Rule",
- "description": "Disable an earning rule.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nDisable an earning rule.",
"parameters": [],
"security": [
{
@@ -76647,11 +76682,12 @@
],
"get": {
"operationId": "list-member-rewards",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Rewards",
- "description": "Retrieves the list of rewards that the given customer (identified by `member_id`, which is a loyalty card assigned to a particular customer) **can get in exchange for loyalty points**. \n\nYou can use the `affordable_only` parameter to limit the results to rewards that the customer can actually afford (only rewards whose price in points is not higher than the loyalty points balance on a loyalty card). \n\nPlease note that rewards that are disabled (i.e. set to `Not Available` in the Dashboard) for a given loyalty tier reward mapping will not be returned in this endpoint.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieves the list of rewards that the given customer (identified by `member_id`, which is a loyalty card assigned to a particular customer) **can get in exchange for loyalty points**. \n\nYou can use the `affordable_only` parameter to limit the results to rewards that the customer can actually afford (only rewards whose price in points is not higher than the loyalty points balance on a loyalty card). \n\nPlease note that rewards that are disabled (i.e. set to `Not Available` in the Dashboard) for a given loyalty tier reward mapping will not be returned in this endpoint.",
"parameters": [
{
"in": "query",
@@ -76899,11 +76935,12 @@
],
"get": {
"operationId": "get-reward-details",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Reward Details",
- "description": "Get reward details in the context of a loyalty campaign and reward assignment ID.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nGet reward details in the context of a loyalty campaign and reward assignment ID.",
"parameters": [],
"security": [
{
@@ -77007,11 +77044,12 @@
],
"get": {
"operationId": "list-reward-assignments-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Reward Assignments with campaign ID",
- "description": "Returns reward assignments from a given loyalty campaign.\n\n> 📘 Alternative endpoint\n>\n> This endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-campaign-rewards). The URL was re-designed to be more contextual to the type of data returned in the response.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nReturns reward assignments from a given loyalty campaign.\n\n\n\nAlternative endpoint\n\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-campaign-rewards). The URL was re-designed to be more contextual to the type of data returned in the response.\n\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -77207,11 +77245,12 @@
],
"get": {
"operationId": "list-reward-assignments-2",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Campaign Rewards",
- "description": "Returns active rewards from a given loyalty campaign.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nReturns active rewards from a given loyalty campaign.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -77301,11 +77340,12 @@
},
"post": {
"operationId": "create-reward-assignment-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Create Loyalty Campaign Reward Assignment",
- "description": "Add rewards to a loyalty campaign.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nAdd rewards to a loyalty campaign.",
"parameters": [],
"security": [
{
@@ -77444,11 +77484,12 @@
],
"get": {
"operationId": "get-reward-assignment-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Campaign Reward Assignments",
- "description": "Retrieve specific reward assignment.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieve specific reward assignment.",
"parameters": [],
"security": [
{
@@ -77515,11 +77556,12 @@
],
"get": {
"operationId": "get-reward-assignment-2",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Campaign Reward Assignment",
- "description": "Retrieve specific reward assignment.\n\n> 📘 Alternative endpoint\n>\n> This endpoint is an alternative to this [endpoint](/api-reference/loyalties/get-campaign-reward-assignments). ",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieve specific reward assignment.\n\n\n\nAlternative endpoint\n\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/get-campaign-reward-assignments).\n\n",
"parameters": [],
"security": [
{
@@ -77587,11 +77629,12 @@
},
"put": {
"operationId": "update-reward-assignment-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Update Campaign Reward Assignment",
- "description": "Updates rewards parameters, i.e. the points cost for the specific reward.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nUpdates rewards parameters, i.e. the points cost for the specific reward.",
"parameters": [],
"security": [
{
@@ -77658,11 +77701,12 @@
},
"delete": {
"operationId": "delete-reward-assignment-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Delete Campaign Reward Assignment",
- "description": "This method deletes a reward assignment for a particular loyalty campaign.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nThis method deletes a reward assignment for a particular loyalty campaign.",
"parameters": [],
"security": [
{
@@ -77738,11 +77782,12 @@
],
"post": {
"operationId": "redeem-reward-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Redeem Reward with campaign ID",
- "description": "Exchange points from a loyalty card for a specified reward. This API method returns an assigned award in the response. It means that if a requesting customer gets a coupon code with a discount for the next order, that discount code will be visible in response as part of the reward object definition.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nExchange points from a loyalty card for a specified reward. This API method returns an assigned award in the response. It means that if a requesting customer gets a coupon code with a discount for the next order, that discount code will be visible in response as part of the reward object definition.",
"parameters": [],
"security": [
{
@@ -79205,11 +79250,12 @@
],
"post": {
"operationId": "redeem-reward",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Redeem Reward",
- "description": "\n> 📘 Alternative endpoint\n>\n>This endpoint is an alternative to this [endpoint](/api-reference/loyalties/redeem-reward-with-campaign-id). The URL was re-designed to allow you to redeem a reward without having to provide the `campaignId` as a path parameter.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\n\n\n\nAlternative endpoint\n\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/redeem-reward-with-campaign-id). The URL was re-designed to allow you to redeem a reward without having to provide the `campaignId` as a path parameter.\n\n",
"parameters": [],
"security": [
{
@@ -79531,11 +79577,12 @@
],
"get": {
"operationId": "list-loyalty-tiers",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Tiers",
- "description": "Retrieve a list of loyalty tiers which were added to the loyalty program.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieve a list of loyalty tiers which were added to the loyalty program.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -79691,11 +79738,12 @@
},
"post": {
"operationId": "create-in-bulk-loyalty-tiers",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Create loyalty tiers",
- "description": "Creates loyalty tiers for desired campaign.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nCreates loyalty tiers for desired campaign.",
"parameters": [],
"security": [
{
@@ -79755,11 +79803,12 @@
],
"get": {
"operationId": "get-loyalty-tier",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Loyalty Tier",
- "description": "Retrieve a loyalty tier from a loyalty campaign by the loyalty tier ID.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieve a loyalty tier from a loyalty campaign by the loyalty tier ID.",
"parameters": [],
"security": [
{
@@ -79848,11 +79897,12 @@
],
"get": {
"operationId": "list-member-loyalty-tier",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member's Loyalty Tiers",
- "description": "Retrieve member tiers using the loyalty card ID.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieve member tiers using the loyalty card ID.",
"parameters": [],
"security": [
{
@@ -79966,11 +80016,12 @@
],
"get": {
"operationId": "list-loyalty-tier-earning-rules",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Tier Earning Rules",
- "description": "Retrieve available earning rules for a given tier and the calculation method for earning points.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nRetrieve available earning rules for a given tier and the calculation method for earning points.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -80582,11 +80633,12 @@
],
"get": {
"operationId": "list-loyalty-tier-rewards",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Tier Rewards",
- "description": "Get available rewards for a given tier.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nGet available rewards for a given tier.",
"parameters": [],
"security": [
{
@@ -80744,11 +80796,12 @@
],
"post": {
"operationId": "estimate-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Estimate loyalty points",
- "description": "Estimates the number of points a customer will receive for a given order in the loyalty campaign under its earning rules. This endpoint also returns point estimation for created transactions (orders with status `PAID`)\n\nThis endpoint returns only an estimation, not a precise point value.\n\nAlso, this estimation works only for the Order paid earning rules. If a campaign includes tiers, mappings, and multiple earning rules, the calculation becomes more complex. During final calculation, a customer may change tiers and earn more or fewer points depending on other factors.",
+ "description": "\n\nLegacy loyalty API\n\nThis endpoint belongs to the legacy loyalty API (`/v1/loyalties`).\n\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\n\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\n\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support \"Contact Voucherify support\").\n\n\n\nEstimates the number of points a customer will receive for a given order in the loyalty campaign under its earning rules. This endpoint also returns point estimation for created transactions (orders with status `PAID`)\n\nThis endpoint returns only an estimation, not a precise point value.\n\nAlso, this estimation works only for the Order paid earning rules. If a campaign includes tiers, mappings, and multiple earning rules, the calculation becomes more complex. During final calculation, a customer may change tiers and earn more or fewer points depending on other factors.",
"parameters": [],
"security": [
{
@@ -81220,7 +81273,7 @@
"Customers"
],
"summary": "Create Customer",
- "description": "Creates a customer object.\n\n\n\n> 📘 Upsert Mode\n>\n> If you pass an `id` or a `source_id` that already exists in the customer database, Voucherify will return a related customer object with updated fields.",
+ "description": "Creates a customer object.\n\n\n\n\n\nUpsert Mode\n\nIf you pass an `id` or a `source_id` that already exists in the customer database, Voucherify will return a related customer object with updated fields.\n\n",
"parameters": [],
"security": [
{
@@ -81778,7 +81831,7 @@
"Customers"
],
"summary": "Import and Update Customers using CSV",
- "description": "This API method lets you import or update customer data. To get a proper and valid response, please send a CSV file with data separated by commas. \n\n## Request Example\n\n```cURL\ncurl -X **POST** \\\n https://api.voucherify.io/v1/customers/importCSV \\\n -F file=@/path/to/customers.csv \\\n -H \"X-App-Id: c70a6f00-cf91-4756-9df5-47628850002b\" \\\n -H \"X-App-Token: 3266b9f8-e246-4f79-bdf0-833929b1380c\"\n```\n## CSV File Format\n\nThe CSV file has to include headers in the first line. All properties which cannot be mapped to standard customer fields will be added to the metadata object.\n\n\n> 📘 Standard customer fields mapping\n>\n> **No spaces allowed in field names** \n> `Id`, `Name`, `Email`, `Phone`, `Birthdate`, `Source_id`, `Address_line_1`, `Address_line_2`, `Address_Postal_Code`, `Address_City`, `Address_State`, `Address_Country`, `Description`, `Metadata_name_1`, `Metadata_name_2`\n\n## Update Customers using CSV\n\nIf you would like to update customer's data, you can do it using the CSV file with new data. However, remember to include a `source_id` in your CSV file to manage the update successfully.\n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
+ "description": "This API method lets you import or update customer data. To get a proper and valid response, please send a CSV file with data separated by commas. \n\n## Request Example\n\n```cURL\ncurl -X **POST** \\\n https://api.voucherify.io/v1/customers/importCSV \\\n -F file=@/path/to/customers.csv \\\n -H \"X-App-Id: c70a6f00-cf91-4756-9df5-47628850002b\" \\\n -H \"X-App-Token: 3266b9f8-e246-4f79-bdf0-833929b1380c\"\n```\n## CSV File Format\n\nThe CSV file has to include headers in the first line. All properties which cannot be mapped to standard customer fields will be added to the metadata object.\n\n\n\n\nStandard customer fields mapping\n\n**No spaces allowed in field names** `Id`, `Name`, `Email`, `Phone`, `Birthdate`, `Source_id`, `Address_line_1`, `Address_line_2`, `Address_Postal_Code`, `Address_City`, `Address_State`, `Address_Country`, `Description`, `Metadata_name_1`, `Metadata_name_2`\n\n\n\n## Update Customers using CSV\n\nIf you would like to update customer's data, you can do it using the CSV file with new data. However, remember to include a `source_id` in your CSV file to manage the update successfully.\n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
"parameters": [],
"security": [
{
@@ -82215,7 +82268,7 @@
"Customers"
],
"summary": "List Customer Activities",
- "description": "> ❗️ Deprecated \n>\n> This endpoint represents the deprecated version of the API responsible for listing customer activities and we do not recommend using it. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint.\n\nRetrieve customer activities.",
+ "description": "\n\nDeprecated\n\nThis endpoint represents the deprecated version of the API responsible for listing customer activities and we do not recommend using it. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint.\n\n\n\nRetrieve customer activities.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -83324,7 +83377,7 @@
"Orders"
],
"summary": "Create Order",
- "description": "Creates an order object and triggers an order creation event.\n\n\n\n> 📘 Upsert Mode\n>\n> If you pass an `id` or a `source_id` that already exists in the order database, Voucherify will return a related order object with updated fields.",
+ "description": "Creates an order object and triggers an order creation event.\n\n\n\n\n\nUpsert Mode\n\nIf you pass an `id` or a `source_id` that already exists in the order database, Voucherify will return a related order object with updated fields.\n\n",
"parameters": [],
"security": [
{
@@ -83793,7 +83846,7 @@
"Orders"
],
"summary": "Import Orders",
- "description": "\n\n> 🚧 Historical orders\n>\n> This endpoint should only be used to import historical orders into Voucherify. For on-going synchronization, the [update order](/api-reference/orders/update-order) endpoint should be used. This is critical because this endpoint does not store events or launch distributions.\nThe orders will also have a `created_at` date that's assigned when they've been imported to Voucherify. To keep track of the actual order creation date, add an order metadata in ISO 8601 date or date time format to each imported order.\n\n## Limitations\n\n### Import volume\n\nThere can be only a single on-going order import per tenant per project at a given time. The user can schedule more imports but those extra imports will be scheduled to run in sequence one by one. \n\n### Maximum count of orders in single import\n\nThere is a `2000` limit of orders per one request.\n\n## Notifications\n\nThere are no notifications on the Dashboard because this import is launched via the API.\n\n## Triggered actions\n \nIf you import orders with customers, then a logic will be scheduled responsible for placing these customers into segments and refreshing the segment's summary. Consequently, this update will trigger \n- Customers entering into segments\n- Distributions based on any rules tied to customer entering segment(s)\n- Earning rules based on the customer entering segment(s)\n\n## What is not triggered\n\n1. No webhooks are triggered during the import of orders - for both orders and upserted products / SKUs. \n\n2. Distributions based on Order Update, Order Paid, Order Created and Order Cancelled. In other words if you have a distribution based on Order Paid and you import an order with a `PAID` status, the distribution is not going to be triggered. \n\n3. No events are created during the import of orders - for both orders and upserted products / SKUs. In other words you won't see any events in the Activity tab in the Dashboard such as Order created or Order paid. If you are additionally upserting products / SKUs, then you won't see the Product created events listed, etc. \n\n4. Earning rules based on Order Paid won't be triggered.\n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request with [GET Async Action](/api-reference/async-actions/get-async-action) endpoint.",
+ "description": "\n\n\n\nHistorical orders\n\nThis endpoint should only be used to import historical orders into Voucherify. For on-going synchronization, the [update order](/api-reference/orders/update-order) endpoint should be used. This is critical because this endpoint does not store events or launch distributions.\n\n\nThe orders will also have a `created_at` date that's assigned when they've been imported to Voucherify. To keep track of the actual order creation date, add an order metadata in ISO 8601 date or date time format to each imported order.\n\n## Limitations\n\n### Import volume\n\nThere can be only a single on-going order import per tenant per project at a given time. The user can schedule more imports but those extra imports will be scheduled to run in sequence one by one. \n\n### Maximum count of orders in single import\n\nThere is a `2000` limit of orders per one request.\n\n## Notifications\n\nThere are no notifications on the Dashboard because this import is launched via the API.\n\n## Triggered actions\n \nIf you import orders with customers, then a logic will be scheduled responsible for placing these customers into segments and refreshing the segment's summary. Consequently, this update will trigger \n- Customers entering into segments\n- Distributions based on any rules tied to customer entering segment(s)\n- Earning rules based on the customer entering segment(s)\n\n## What is not triggered\n\n1. No webhooks are triggered during the import of orders - for both orders and upserted products / SKUs. \n\n2. Distributions based on Order Update, Order Paid, Order Created and Order Cancelled. In other words if you have a distribution based on Order Paid and you import an order with a `PAID` status, the distribution is not going to be triggered. \n\n3. No events are created during the import of orders - for both orders and upserted products / SKUs. In other words you won't see any events in the Activity tab in the Dashboard such as Order created or Order paid. If you are additionally upserting products / SKUs, then you won't see the Product created events listed, etc. \n\n4. Earning rules based on Order Paid won't be triggered.\n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request with [GET Async Action](/api-reference/async-actions/get-async-action) endpoint.",
"parameters": [],
"security": [
{
@@ -84437,7 +84490,7 @@
"Products"
],
"summary": "Create Product",
- "description": "Creates a product object.\n\n\n\n> 📘 Upsert Mode\n>\n> If you pass an `id` or a `source_id` that already exists in the product database, Voucherify will return a related product object with updated fields.",
+ "description": "Creates a product object.\n\n\n\n\n\nUpsert Mode\n\nIf you pass an `id` or a `source_id` that already exists in the product database, Voucherify will return a related product object with updated fields.\n\n",
"parameters": [],
"security": [
{
@@ -85227,7 +85280,7 @@
"Products"
],
"summary": "Create SKU",
- "description": "This method adds product variants to a [created product](/api-reference/products/create-product). \n\n> 📘 Upsert Mode\n>\n> If you pass an `id` or a `source_id` that already exists in the sku database, Voucherify will return a related sku object with updated fields.",
+ "description": "This method adds product variants to a [created product](/api-reference/products/create-product). \n\n\n\nUpsert Mode\n\nIf you pass an `id` or a `source_id` that already exists in the sku database, Voucherify will return a related sku object with updated fields.\n\n",
"parameters": [],
"security": [
{
@@ -85477,7 +85530,7 @@
"Products"
],
"summary": "Import Products using CSV",
- "description": "Import products into the repository using a CSV file.\n\nThe CSV file has to include headers in the first line.\n\n\n\n> 📘 Standard product fields mapping\n>\n> - Create a **comma separated value (CSV) file** or download our CSV import template. You can find an example template [here](https://s3.amazonaws.com/helpscout.net/docs/assets/5902f1c12c7d3a057f88a36d/attachments/627b82ed68d51e779443f550/Import_products_template.csv).\n> - Supported CSV file headers: `name,source_id,price,attributes,image_url,Metadata_property_name`\n> - **Name** is a **required** field. The remaining fields in the CSV template are optional.\n> - Override/Update products' **names** in Voucherify using this method. Data will be updated for each product included in the CSV file whose **source_id** matches a source ID in Voucherify. No other data can be updated other than the product name.\n> - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 standard**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11\n> - `YYYY-MM-DD`\n> - `YYYY-MM-DDTHH`\n> - `YYYY-MM-DDTHH:mm`\n> - `YYYY-MM-DDTHH:mm:ss`\n> - `YYYY-MM-DDTHH:mm:ssZ`\n> - `YYYY-MM-DDTHH:mm:ssZ`\n> - `YYYY-MM-DDTHH:mm:ss.SSSZ`\n> - Columns that cannot be mapped to standard fields, will be mapped to **Custom attributes** and added as **products' metadata**. There is no limit on the number of custom attributes that you can import as metadata. \n> - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](/prepare/metadata#add-metadata).\n> - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e \"attribute1,attribute2\".\n> - Headers with metadata names **can't contain white-space characters**.\n> - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: \n> - array of strings: \"subscribed,premium\" \n> - array of numbers: \"123,234\". \n> - array of dates: \"2000-01-01,2000-01-02\"\n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
+ "description": "Import products into the repository using a CSV file.\n\nThe CSV file has to include headers in the first line.\n\n\n\n\n\nStandard product fields mapping\n\n- Create a **comma separated value (CSV) file** or download our CSV import template. You can find an example template [here](https://s3.amazonaws.com/helpscout.net/docs/assets/5902f1c12c7d3a057f88a36d/attachments/627b82ed68d51e779443f550/Import_products_template.csv).\n- Supported CSV file headers: `name,source_id,price,attributes,image_url,Metadata_property_name`\n- **Name** is a **required** field. The remaining fields in the CSV template are optional.\n- Override/Update products' **names** in Voucherify using this method. Data will be updated for each product included in the CSV file whose **source_id** matches a source ID in Voucherify. No other data can be updated other than the product name.\n- Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 standard**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11\n - `YYYY-MM-DD`\n - `YYYY-MM-DDTHH`\n - `YYYY-MM-DDTHH:mm`\n - `YYYY-MM-DDTHH:mm:ss`\n - `YYYY-MM-DDTHH:mm:ssZ`\n - `YYYY-MM-DDTHH:mm:ssZ`\n - `YYYY-MM-DDTHH:mm:ss.SSSZ`\n- Columns that cannot be mapped to standard fields, will be mapped to **Custom attributes** and added as **products' metadata**. There is no limit on the number of custom attributes that you can import as metadata.\n- To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](/prepare/metadata#add-metadata).\n- **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e \"attribute1,attribute2\".\n- Headers with metadata names **can't contain white-space characters**.\n- If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example:\n - array of strings: \"subscribed,premium\"\n - array of numbers: \"123,234\".\n - array of dates: \"2000-01-01,2000-01-02\"\n\n\n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
"parameters": [],
"security": [
{
@@ -85549,7 +85602,7 @@
"Products"
],
"summary": "Import SKUs using CSV",
- "description": "Import SKUs into the repository using a CSV file.\n\nThe CSV file has to include headers in the first line. All properties which cannot be mapped to standard SKU fields will be added to the metadata object. You can find an example template [here](https://s3.amazonaws.com/helpscout.net/docs/assets/5902f1c12c7d3a057f88a36d/attachments/627b98d08c9b585083488a4c/Import_SKUS_template.csv). \n\n> 🚧 Import sequence\n>\n> First import products using the [dedicated endpoint](/api-reference/products/import-products-using-csv), then import SKUs using this endpoint to properly match SKUs to products.\n\n\n\n> 📘 Standard SKU fields mapping\n>\n> - **Required** fields are `source_id` and `product_id`.\n> - Supported CSV file headers: `product_id,sku,source_id,price,image_url,attributes`\n> - SKU **source_id** must be unique in the entire product catalog, no duplicates are allowed.\n> - SKU attributes need to be in the form of a stringy-fied json, i.e.`\"{'color':'blue'}\"`. These attributes must be defined in the **product** beforehand so you can import them to the SKU.\n> - You can use this method to update the following parameters in bulk: **sku** and the sku **price**.\n> - Columns that cannot be mapped to standard fields will be mapped to Custom attributes and added as product metadata. There is no limit on the number of custom attributes that you can import as metadata.\n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
+ "description": "Import SKUs into the repository using a CSV file.\n\nThe CSV file has to include headers in the first line. All properties which cannot be mapped to standard SKU fields will be added to the metadata object. You can find an example template [here](https://s3.amazonaws.com/helpscout.net/docs/assets/5902f1c12c7d3a057f88a36d/attachments/627b98d08c9b585083488a4c/Import_SKUS_template.csv). \n\n\n\nImport sequence\n\nFirst import products using the [dedicated endpoint](/api-reference/products/import-products-using-csv), then import SKUs using this endpoint to properly match SKUs to products.\n\n\n\n\n\n\n\nStandard SKU fields mapping\n\n- **Required** fields are `source_id` and `product_id`.\n- Supported CSV file headers: `product_id,sku,source_id,price,image_url,attributes`\n- SKU **source_id** must be unique in the entire product catalog, no duplicates are allowed.\n- SKU attributes need to be in the form of a stringy-fied json, i.e.`\"{'color':'blue'}\"`. These attributes must be defined in the **product** beforehand so you can import them to the SKU.\n- You can use this method to update the following parameters in bulk: **sku** and the sku **price**.\n- Columns that cannot be mapped to standard fields will be mapped to Custom attributes and added as product metadata. There is no limit on the number of custom attributes that you can import as metadata.\n\n\n\nThis API request starts a process that affects Voucherify data in bulk. \n\nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the `IN_PROGRESS` status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \n\nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
"parameters": [],
"security": [
{
@@ -86701,7 +86754,7 @@
"Validation Rules"
],
"summary": "Create Validation Rules",
- "description": "Create a validation rule.\n> 🚧 Managing validation rules\n>\n> It is recommended to [create or update validation rules](/personalize/create-validation-rules) in the Voucherify dashboard. The rule builder in the dashboard helps configuring the desired conditions in a convenient way. The API should not be used as a preferable way to create and manage validation rules.",
+ "description": "Create a validation rule.\n\n\nManaging validation rules\n\nIt is recommended to [create or update validation rules](/personalize/create-validation-rules) in the Voucherify dashboard. The rule builder in the dashboard helps configuring the desired conditions in a convenient way. The API should not be used as a preferable way to create and manage validation rules.\n\n",
"parameters": [],
"security": [
{
@@ -86985,7 +87038,7 @@
"Validation Rules"
],
"summary": "Update Validation Rule",
- "description": "Update validation rule parameters.\n> 🚧 Managing validation rules\n>\n> It is recommended to [create or update validation rules](/personalize/create-validation-rules) in the Voucherify dashboard. The rule builder in the dashboard helps configuring the desired conditions in a convenient way. The API should not be used as a preferable way to create and manage validation rules.",
+ "description": "Update validation rule parameters.\n\n\nManaging validation rules\n\nIt is recommended to [create or update validation rules](/personalize/create-validation-rules) in the Voucherify dashboard. The rule builder in the dashboard helps configuring the desired conditions in a convenient way. The API should not be used as a preferable way to create and manage validation rules.\n\n",
"parameters": [],
"security": [
{
@@ -87957,7 +88010,7 @@
"Segments"
],
"summary": "Create Segment",
- "description": "Create a customer segment.\n\n> 🚧 Limit on static segments\n>\n> There is a cap on the number of customers that you can assign to a static segment: **20,000**. If you would like to create a bigger segment, then you can use the unlimited `auto-update` or `passive` segment instead and use some customer metadata to build this segment.\n\n> 🚧 Limit on Active and Passive segments\n>\n> You can create a maximum of 100 passive and active segments.",
+ "description": "Create a customer segment.\n\n\n\nLimit on static segments\n\nThere is a cap on the number of customers that you can assign to a static segment: **20,000**. If you would like to create a bigger segment, then you can use the unlimited `auto-update` or `passive` segment instead and use some customer metadata to build this segment.\n\n\n\n\n\nLimit on Active and Passive segments\n\nYou can create a maximum of 100 passive and active segments.\n\n",
"parameters": [],
"security": [
{
@@ -88892,7 +88945,7 @@
"Exports"
],
"summary": "Create Export",
- "description": "Create export object. The export can be any of the following types: `voucher`, `redemption`, `publication`, `customer`, `order`, `points_expiration`, `voucher_transactions`, `product`, or `sku`. \n\n## Defaults\n\nIf you only specify the object type in the request body without specifying the fields, the API will return the following fields per export object:\n\n| **Export Object** | **Default fields returned** |\n|:---|:---|\n| order | `id`, `source_id`, `status` |\n| voucher | `code`, `voucher_type`, `value`, `discount_type` |\n| publication | `code`, `customer_id`, `date`, `channel` |\n| redemption | `id`, `object`, `voucher_code`, `customer_id`, `date`, `result` |\n| customer | `name`, `source_id` |\n| points_expiration | `id`, `campaign_id`, `voucher_id`, `status`, `expires_at`, `points` |\n| voucher_transactions | `id`, `type`, `source_id`, `status`, `reason`, `source`, `balance`, `amount`, `created_at` |\n| products | `id`, `name`, `price`, `image_url`, `source_id`, `attributes`, `created_at`|\n| SKU | `id`, `sku`, `product_id`, `currency`, `price`, `image_url`, `source_id`, `attributes`, `created_at`|\n\n> 📘 Date and time in the export API\n>\n> The exported date and times are always provided in the UTC time zone.\n## Fetching particular data sets\n\nUsing the `parameters` body parameter, you can narrow down which fields to export and how to filter the results. The fields are an array of strings containing the data that you would like to export. These fields define the headers in the CSV file. The array can be a combination of any of the following available fields:\n\n## Orders \n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique order ID. | ord_A69RIxEdRsPuC6i8gFGVHUft |\n| source_id | Unique order source ID. | 8638 |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the order was created. | 2022-03-09T09:16:32.521Z |\n| updated_at | Timestamp in ISO 8601 format representing the date and time when the order was last updated. | 2022-03-09T09:16:33.331Z |\n| status | Order status. | `PAID`, `CREATED`, `FULFILLED`, `CANCELED` |\n| amount | Total amount of order items. | 7700 |\n| discount_amount | Represents total amount of the discount applied to whole cart. | 500 |\n| items_discount_amount | Represents total amount of the discount applied to order line items. | 100 |\n| total_discount_amount | All discounts applied to the order including discounts applied to particular order line items and discounts applied to the whole cart. | 600 |\n| total_amount | Total order amount after applying all discounts. | 7100 |\n| customer_id | Customer unique ID. | cust_2G4fUQdCXUqp35nXNleav7bO |\n| referrer_id | Referrer unique ID. | cust_IkrTR674vvQvr9a4rDMiqglY |\n| metadata | Order metadata; expressed as metadata.X, where X is the name of the custom metadata property. | 1 |\n\n## Vouchers \n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique voucher ID. | v_HSnGD2vNIHYighTQxwcB4dtVAv8VOmZD |\n| code | Unique voucher code. | WELCOME100 |\n| voucher_type | Type of voucher. | `DISCOUNT_VOUCHER`, `GIFT_VOUCHER`, `LOYALTY_CARD` |\n| value | Value of voucher. | `DISCOUNT_VOUCHER` : amount, percent, unit
`GIFT_VOUCHER`: amount left to spend
`LOYALTY_CARD`: available usable points |\n| discount_type | The type of discount for a `DISCOUNT_VOUCHER`. | `AMOUNT`, `PERCENT`, `UNIT`, `FIXED` |\n| campaign | Unique campaign name. | Summer Discounts 20% off |\n| category | Tag defining the category that this voucher belongs to. | |\n| start_date | Start date defines when the code starts to be active. Activation timestamp is presented in the ISO 8601 format. Voucher is _inactive_ before this date. | 2020-12-10T23:00:00.000Z |\n| expiration_date | Expiration date defines when the code expires. Expiration timestamp is presented in the ISO 8601 format. Voucher is _inactive_ after this date. | 2023-12-31T23:00:00.000Z |\n| gift_balance | Amount left to spend. | 1000 |\n| loyalty_balance | Available usable points. | 2000 |\n| redemption_quantity | Maximum number of times a voucher can be redeemed. | 2 |\n| redemption_count | Total redemptions. | 59 |\n| active | Boolean indicating whether the voucher is available for use. | `true`, `false` |\n| qr_code | URL to QR representation of encrypted code. | |\n| bar_code | URL to barcode representation of encrypted code. | |\n| metadata | Custom voucher metadata. | |\n| is_referral_code | Boolean indicating whether the voucher is a referral code. | `true`, `false` |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the voucher was created. | 2022-04-14T09:55:46.814Z |\n| updated_at | Timestamp in ISO 8601 format representing the date and time when the voucher was last updated. | 2022-04-14T10:02:18.036Z |\n| validity_timeframe_interval | Defines the intervening time between two time points in ISO 8601 format, expressed as a duration. For example, a voucher with an interval of `P2D` will be active every other day. | P2D |\n| validity_timeframe_duration | Defines the amount of time the voucher will be active in ISO 8601 format. For example, a voucher with a duration of `PT1H` will be valid for a duration of one hour. | PT1H |\n| validity_day_of_week | Array corresponding to the particular days of the week in which the voucher is valid. | \"1,2,3,4,5\" |\n| discount_amount_limit | For `PERCENT` discount type, this is the maximum threshold allowed to be deducted. | 50 |\n| campaign_id | Parent campaign ID. | camp_7s3uXI44aKfIk5IhmeOPr6ic |\n| additional_info | An optional field to keep any extra textual information about the code such as a code description and details. | |\n| customer_id | Unique customer ID of the assigned owner to whom the voucher was published. | cust_7iUa6ICKyU6gH40dBU25kQU1 |\n| discount_unit_type | For `UNIT` discount type, either a shipping or product ID for a `UNIT` discount with one product. | prod_5h1pp1ng, prod_0a9f9aeddb019a42db |\n| discount_unit_effect | `UNIT` discount effect. | `ADD_MANY_ITEMS`, `ADD_MISSING_ITEMS`,`ADD_NEW_ITEMS` |\n| customer_source_id | Unique customer source id of the assigned owner to whom the voucher was published. | name.lastname@email.com |\n\n\n## Publications\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| voucher_code | Unique voucher code. | WELCOME100 |\n| customer_id | Customer unique ID. | cust_7iUa6ICKyU6gH40dBU25kQU1 |\n| customer_source_id | Unique customer source id of the assigned owner to whom the voucher was published. | name.lastname@email.com |\n| date | Timestamp in ISO 8601 format representing the date and time when the voucher was published. | 2022-04-28T10:19:30.792Z |\n| channel | Publication channel. | voucherify-website |\n| campaign | Unique campaign name. | Summer Discounts 20% off |\n| is_winner | | |\n| metadata | Custom publication metadata. | |\n\n## Redemptions\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique redemption ID. | r_0acf3a6dae00e679c8, rf_0acf3a495740e679b8 |\n| object | Object being exported; by default `redemption`. | redemption |\n| date | Timestamp in ISO 8601 format representing the date and time when the voucher was redeemed. | 2022-03-23T08:52:24.867Z |\n| voucher_code | Unique voucher code redeemed. | WELCOME100 |\n| campaign | Parent campaign name of voucher if applicable. | Summer Discounts 20% off |\n| promotion_tier_id | | promo_Mwy9XpA0TLctSGriM5kum0qp |\n| customer_id | Unique customer ID of redeeming customer. | cust_nk0N1uNQ1YnupAoJGOgvsODC |\n| customer_source_id | Unique source ID of redeeming customer. | name.lastname@email.com |\n| customer_name | Customer name. | John Smith |\n| tracking_id | | track_Pw6r3ejnml43kIwNS4Zj09KZ67xOfLUy |\n| order_amount | Total order amount before applying all discounts. | 1000 |\n| gift_amount | Gift credits used for redemption. | 10 |\n| loyalty_points | | 12 |\n| result | Tells you whether the redemption succeeded. | `SUCCESS`, `FAILURE` |\n| failure_code | Internal Voucherify code for reason why redemption failed. | invalid_customer |\n| failure_message | A human-readable message providing a short description explaining why the redemption failed. | Customer must be a holder of a loyalty card. |\n| metadata | Custom redemption metadata. | |\n\n## Customers\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| name | Customer name. | John Smith |\n| id | Unique customer ID. | cust_J1CDUdbqn5Exva8ASWk1Fq0j |\n| description | An arbitrary string that you can attach to a customer object. | Customer requesting to be added to VIP tier. |\n| email | Customer's email. | name.lastname@email.com |\n| source_id | Unique custom customer identifier. | name.lastname@email.com |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the customer was created. | 2022-02-03T13:10:11.928Z |\n| address_city | City | Houston |\n| address_state | State | TX |\n| address_line_1 | First line of customer's address. | 72738 Main St |\n| address_line_2 | Second line of customer's address. | Bld 2, Apt 4 |\n| address_country | Country | United States of America |\n| address_postal_code | Postal code (ZIP code) | 77042-4143 |\n| redemptions_total_redeemed | Total customer redemptions. | 5 |\n| redemptions_total_failed | Total customer failed redemptions. | 2 |\n| redemptions_total_succeeded | Total customer succeeded redemptions. | 3 |\n| redemptions_total_rolled_back | Total customer redemptions that were rolled back. | 3 |\n| redemptions_total_rollback_failed | Total customer redemptions that were unsuccessfully rolled back. | 2 |\n| redemptions_total_rollback_succeeded | Total customer redemptions that were successfully rolled back. | 1 |\n| orders_total_amount | Total sum of order amounts over customer lifetime. Value is multiplied by 100 to precisely represent 2 decimal places. | 10000 (represents $100) |\n| orders_total_count | Total number of customer orders. | 2 |\n| orders_average_amount | Average amount spent on orders. Value is multiplied by 100 to precisely represent 2 decimal places. | 5000 (represents $50) |\n| orders_last_order_amount | How much did the customer spend on their last order. Value is multiplied by 100 to precisely represent 2 decimal places. | 5000 (represents $50) |\n| orders_last_order_date | When was the last customer order; timestamp in ISO 8601 format representing the date and time. | 2022-02-03T13:17:30.630Z |\n| loyalty_points | Sum of customer's loyalty points to go across all loyalty cards. | 2000 |\n| loyalty_referred_customers | How many customers were referred by this customer. | 3 |\n| updated_at | Timestamp in ISO 8601 format representing the date and time when the customer was updated. | 2022-02-14T14:10:14.305Z |\n| phone | Customer's phone number. | +1 (294) 752-1846 |\n| birthday | `Deprecated`. ~~Customer's birthday~~. | 2022-01-01 |\n| metadata | Customer metadata. | All metadata fields defined in Metadata Schema for the Customer object. |\n| birthdate | Customer's birthdate. | 2022-01-01 |\n\n## Points Expirations\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Loyalty points bucket ID. | lopb_Wl1o3EjJIHSNjvO5BDLy4z1n |\n| campaign_id | Campaign ID of the parent loyalty campaign. | camp_7s3uXI44aKfIk5IhmeOPr6ic |\n| voucher_id | Voucher ID of the parent loyalty card. | v_YLn0WVWXSXbUfDvxgrgUbtfJ3SQIY655 |\n| status | Status of the loyalty point bucket. | `ACTIVE` or `EXPIRED` |\n| expires_at | Timestamp in ISO 8601 format representing the date when the points expire. | 2022-06-30 |\n| points | Number of points. | 1000 |\n\n ## Gift Card Transactions\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique transaction ID. | vtx_0cb7811f1c07765800 |\n| type | Transaction type. | - `CREDITS_REMOVAL`
- `CREDITS_ADDITION`
- `CREDITS_REFUND`
- `CREDITS_REDEMPTION` |\n| source_id | Unique transaction source ID. | 8638 |\n| reason | Contains the reason for the transaction if one was included originally. | |\n| balance | The gift card or loyalty card balance after the transaction. | |\n| amount | The amount of gift card or loyalty card credits being allocated during the transaction. This value can either be negative or positive depending on the nature of the transaction. | |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the transaction was created. | 2022-03-09T09:16:32.521Z |\n| voucher_id | Unique Voucher ID. | v_dky7ksKfPX50Wb2Bxvcoeb1xT20b6tcp |\n| campaign_id | Parent campaign ID. | camp_FNYR4jhqZBM9xTptxDGgeNBV |\n| source| Channel through which the transaction was initiated. | API |\n| details | More detailed information stored in the form of a JSON. | Provides more details related to the transaction in the form of an object. |\n\n ## Loyalty Card Transactions\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique transaction ID assigned by Voucherify. | vtx_0cb7811f1c07765800 |\n| type | Transaction type. | - `POINTS_EXPIRATION`
- `POINTS_ADDITION`
- `POINTS_REMOVAL`
- `POINTS_TRANSFER_OUT`
- `POINTS_ACCRUAL`
- `POINTS_REFUND`
- `POINTS_REDEMPTION` |\n| source_id | Custom source ID of the transaction if one was included originally. | source_id_custom |\n| reason | Contains the reason for the transaction if one was included originally. | |\n| balance | The loyalty card balance after the transaction. | |\n| amount | The amount of loyalty points being allocated during the transaction. This value can either be negative or positive depending on the nature of the transaction. | |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the transaction was created. | 2022-03-09T09:16:32.521Z |\n| voucher_id | Unique Voucher ID. | v_dky7ksKfPX50Wb2Bxvcoeb1xT20b6tcp |\n| campaign_id | Parent campaign ID. | camp_FNYR4jhqZBM9xTptxDGgeNBV |\n| source| Channel through which the transaction was initiated. | - `API`
- `voucherify-web-ui`
- `Automation` |\n| details | More detailed information stored in the form of a JSON. | Provides more details related to the transaction in the form of an object. |\n| related_transaction_id | Unique transaction ID related to a receiver/donor card in the case of a points transfer from/to another card. | vtx_0c9afe802593b34b80 |",
+ "description": "Create export object. The export can be any of the following types: `voucher`, `redemption`, `publication`, `customer`, `order`, `points_expiration`, `voucher_transactions`, `product`, or `sku`. \n\n## Defaults\n\nIf you only specify the object type in the request body without specifying the fields, the API will return the following fields per export object:\n\n| **Export Object** | **Default fields returned** |\n|:---|:---|\n| order | `id`, `source_id`, `status` |\n| voucher | `code`, `voucher_type`, `value`, `discount_type` |\n| publication | `code`, `customer_id`, `date`, `channel` |\n| redemption | `id`, `object`, `voucher_code`, `customer_id`, `date`, `result` |\n| customer | `name`, `source_id` |\n| points_expiration | `id`, `campaign_id`, `voucher_id`, `status`, `expires_at`, `points` |\n| voucher_transactions | `id`, `type`, `source_id`, `status`, `reason`, `source`, `balance`, `amount`, `created_at` |\n| products | `id`, `name`, `price`, `image_url`, `source_id`, `attributes`, `created_at`|\n| SKU | `id`, `sku`, `product_id`, `currency`, `price`, `image_url`, `source_id`, `attributes`, `created_at`|\n\n\n\nDate and time in the export API\n\nThe exported date and times are always provided in the UTC time zone.\n\n\n## Fetching particular data sets\n\nUsing the `parameters` body parameter, you can narrow down which fields to export and how to filter the results. The fields are an array of strings containing the data that you would like to export. These fields define the headers in the CSV file. The array can be a combination of any of the following available fields:\n\n## Orders \n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique order ID. | ord_A69RIxEdRsPuC6i8gFGVHUft |\n| source_id | Unique order source ID. | 8638 |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the order was created. | 2022-03-09T09:16:32.521Z |\n| updated_at | Timestamp in ISO 8601 format representing the date and time when the order was last updated. | 2022-03-09T09:16:33.331Z |\n| status | Order status. | `PAID`, `CREATED`, `FULFILLED`, `CANCELED` |\n| amount | Total amount of order items. | 7700 |\n| discount_amount | Represents total amount of the discount applied to whole cart. | 500 |\n| items_discount_amount | Represents total amount of the discount applied to order line items. | 100 |\n| total_discount_amount | All discounts applied to the order including discounts applied to particular order line items and discounts applied to the whole cart. | 600 |\n| total_amount | Total order amount after applying all discounts. | 7100 |\n| customer_id | Customer unique ID. | cust_2G4fUQdCXUqp35nXNleav7bO |\n| referrer_id | Referrer unique ID. | cust_IkrTR674vvQvr9a4rDMiqglY |\n| metadata | Order metadata; expressed as metadata.X, where X is the name of the custom metadata property. | 1 |\n\n## Vouchers \n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique voucher ID. | v_HSnGD2vNIHYighTQxwcB4dtVAv8VOmZD |\n| code | Unique voucher code. | WELCOME100 |\n| voucher_type | Type of voucher. | `DISCOUNT_VOUCHER`, `GIFT_VOUCHER`, `LOYALTY_CARD` |\n| value | Value of voucher. | `DISCOUNT_VOUCHER` : amount, percent, unit
`GIFT_VOUCHER`: amount left to spend
`LOYALTY_CARD`: available usable points |\n| discount_type | The type of discount for a `DISCOUNT_VOUCHER`. | `AMOUNT`, `PERCENT`, `UNIT`, `FIXED` |\n| campaign | Unique campaign name. | Summer Discounts 20% off |\n| category | Tag defining the category that this voucher belongs to. | |\n| start_date | Start date defines when the code starts to be active. Activation timestamp is presented in the ISO 8601 format. Voucher is _inactive_ before this date. | 2020-12-10T23:00:00.000Z |\n| expiration_date | Expiration date defines when the code expires. Expiration timestamp is presented in the ISO 8601 format. Voucher is _inactive_ after this date. | 2023-12-31T23:00:00.000Z |\n| gift_balance | Amount left to spend. | 1000 |\n| loyalty_balance | Available usable points. | 2000 |\n| redemption_quantity | Maximum number of times a voucher can be redeemed. | 2 |\n| redemption_count | Total redemptions. | 59 |\n| active | Boolean indicating whether the voucher is available for use. | `true`, `false` |\n| qr_code | URL to QR representation of encrypted code. | |\n| bar_code | URL to barcode representation of encrypted code. | |\n| metadata | Custom voucher metadata. | |\n| is_referral_code | Boolean indicating whether the voucher is a referral code. | `true`, `false` |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the voucher was created. | 2022-04-14T09:55:46.814Z |\n| updated_at | Timestamp in ISO 8601 format representing the date and time when the voucher was last updated. | 2022-04-14T10:02:18.036Z |\n| validity_timeframe_interval | Defines the intervening time between two time points in ISO 8601 format, expressed as a duration. For example, a voucher with an interval of `P2D` will be active every other day. | P2D |\n| validity_timeframe_duration | Defines the amount of time the voucher will be active in ISO 8601 format. For example, a voucher with a duration of `PT1H` will be valid for a duration of one hour. | PT1H |\n| validity_day_of_week | Array corresponding to the particular days of the week in which the voucher is valid. | \"1,2,3,4,5\" |\n| discount_amount_limit | For `PERCENT` discount type, this is the maximum threshold allowed to be deducted. | 50 |\n| campaign_id | Parent campaign ID. | camp_7s3uXI44aKfIk5IhmeOPr6ic |\n| additional_info | An optional field to keep any extra textual information about the code such as a code description and details. | |\n| customer_id | Unique customer ID of the assigned owner to whom the voucher was published. | cust_7iUa6ICKyU6gH40dBU25kQU1 |\n| discount_unit_type | For `UNIT` discount type, either a shipping or product ID for a `UNIT` discount with one product. | prod_5h1pp1ng, prod_0a9f9aeddb019a42db |\n| discount_unit_effect | `UNIT` discount effect. | `ADD_MANY_ITEMS`, `ADD_MISSING_ITEMS`,`ADD_NEW_ITEMS` |\n| customer_source_id | Unique customer source id of the assigned owner to whom the voucher was published. | name.lastname@email.com |\n\n\n## Publications\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| voucher_code | Unique voucher code. | WELCOME100 |\n| customer_id | Customer unique ID. | cust_7iUa6ICKyU6gH40dBU25kQU1 |\n| customer_source_id | Unique customer source id of the assigned owner to whom the voucher was published. | name.lastname@email.com |\n| date | Timestamp in ISO 8601 format representing the date and time when the voucher was published. | 2022-04-28T10:19:30.792Z |\n| channel | Publication channel. | voucherify-website |\n| campaign | Unique campaign name. | Summer Discounts 20% off |\n| is_winner | | |\n| metadata | Custom publication metadata. | |\n\n## Redemptions\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique redemption ID. | r_0acf3a6dae00e679c8, rf_0acf3a495740e679b8 |\n| object | Object being exported; by default `redemption`. | redemption |\n| date | Timestamp in ISO 8601 format representing the date and time when the voucher was redeemed. | 2022-03-23T08:52:24.867Z |\n| voucher_code | Unique voucher code redeemed. | WELCOME100 |\n| campaign | Parent campaign name of voucher if applicable. | Summer Discounts 20% off |\n| promotion_tier_id | | promo_Mwy9XpA0TLctSGriM5kum0qp |\n| customer_id | Unique customer ID of redeeming customer. | cust_nk0N1uNQ1YnupAoJGOgvsODC |\n| customer_source_id | Unique source ID of redeeming customer. | name.lastname@email.com |\n| customer_name | Customer name. | John Smith |\n| tracking_id | | track_Pw6r3ejnml43kIwNS4Zj09KZ67xOfLUy |\n| order_amount | Total order amount before applying all discounts. | 1000 |\n| gift_amount | Gift credits used for redemption. | 10 |\n| loyalty_points | | 12 |\n| result | Tells you whether the redemption succeeded. | `SUCCESS`, `FAILURE` |\n| failure_code | Internal Voucherify code for reason why redemption failed. | invalid_customer |\n| failure_message | A human-readable message providing a short description explaining why the redemption failed. | Customer must be a holder of a loyalty card. |\n| metadata | Custom redemption metadata. | |\n\n## Customers\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| name | Customer name. | John Smith |\n| id | Unique customer ID. | cust_J1CDUdbqn5Exva8ASWk1Fq0j |\n| description | An arbitrary string that you can attach to a customer object. | Customer requesting to be added to VIP tier. |\n| email | Customer's email. | name.lastname@email.com |\n| source_id | Unique custom customer identifier. | name.lastname@email.com |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the customer was created. | 2022-02-03T13:10:11.928Z |\n| address_city | City | Houston |\n| address_state | State | TX |\n| address_line_1 | First line of customer's address. | 72738 Main St |\n| address_line_2 | Second line of customer's address. | Bld 2, Apt 4 |\n| address_country | Country | United States of America |\n| address_postal_code | Postal code (ZIP code) | 77042-4143 |\n| redemptions_total_redeemed | Total customer redemptions. | 5 |\n| redemptions_total_failed | Total customer failed redemptions. | 2 |\n| redemptions_total_succeeded | Total customer succeeded redemptions. | 3 |\n| redemptions_total_rolled_back | Total customer redemptions that were rolled back. | 3 |\n| redemptions_total_rollback_failed | Total customer redemptions that were unsuccessfully rolled back. | 2 |\n| redemptions_total_rollback_succeeded | Total customer redemptions that were successfully rolled back. | 1 |\n| orders_total_amount | Total sum of order amounts over customer lifetime. Value is multiplied by 100 to precisely represent 2 decimal places. | 10000 (represents $100) |\n| orders_total_count | Total number of customer orders. | 2 |\n| orders_average_amount | Average amount spent on orders. Value is multiplied by 100 to precisely represent 2 decimal places. | 5000 (represents $50) |\n| orders_last_order_amount | How much did the customer spend on their last order. Value is multiplied by 100 to precisely represent 2 decimal places. | 5000 (represents $50) |\n| orders_last_order_date | When was the last customer order; timestamp in ISO 8601 format representing the date and time. | 2022-02-03T13:17:30.630Z |\n| loyalty_points | Sum of customer's loyalty points to go across all loyalty cards. | 2000 |\n| loyalty_referred_customers | How many customers were referred by this customer. | 3 |\n| updated_at | Timestamp in ISO 8601 format representing the date and time when the customer was updated. | 2022-02-14T14:10:14.305Z |\n| phone | Customer's phone number. | +1 (294) 752-1846 |\n| birthday | `Deprecated`. ~~Customer's birthday~~. | 2022-01-01 |\n| metadata | Customer metadata. | All metadata fields defined in Metadata Schema for the Customer object. |\n| birthdate | Customer's birthdate. | 2022-01-01 |\n\n## Points Expirations\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Loyalty points bucket ID. | lopb_Wl1o3EjJIHSNjvO5BDLy4z1n |\n| campaign_id | Campaign ID of the parent loyalty campaign. | camp_7s3uXI44aKfIk5IhmeOPr6ic |\n| voucher_id | Voucher ID of the parent loyalty card. | v_YLn0WVWXSXbUfDvxgrgUbtfJ3SQIY655 |\n| status | Status of the loyalty point bucket. | `ACTIVE` or `EXPIRED` |\n| expires_at | Timestamp in ISO 8601 format representing the date when the points expire. | 2022-06-30 |\n| points | Number of points. | 1000 |\n\n ## Gift Card Transactions\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique transaction ID. | vtx_0cb7811f1c07765800 |\n| type | Transaction type. | - `CREDITS_REMOVAL`
- `CREDITS_ADDITION`
- `CREDITS_REFUND`
- `CREDITS_REDEMPTION` |\n| source_id | Unique transaction source ID. | 8638 |\n| reason | Contains the reason for the transaction if one was included originally. | |\n| balance | The gift card or loyalty card balance after the transaction. | |\n| amount | The amount of gift card or loyalty card credits being allocated during the transaction. This value can either be negative or positive depending on the nature of the transaction. | |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the transaction was created. | 2022-03-09T09:16:32.521Z |\n| voucher_id | Unique Voucher ID. | v_dky7ksKfPX50Wb2Bxvcoeb1xT20b6tcp |\n| campaign_id | Parent campaign ID. | camp_FNYR4jhqZBM9xTptxDGgeNBV |\n| source| Channel through which the transaction was initiated. | API |\n| details | More detailed information stored in the form of a JSON. | Provides more details related to the transaction in the form of an object. |\n\n ## Loyalty Card Transactions\n\n| **Field** | **Definition** | **Example Export** |\n|:---|:---|:---|\n| id | Unique transaction ID assigned by Voucherify. | vtx_0cb7811f1c07765800 |\n| type | Transaction type. | - `POINTS_EXPIRATION`
- `POINTS_ADDITION`
- `POINTS_REMOVAL`
- `POINTS_TRANSFER_OUT`
- `POINTS_ACCRUAL`
- `POINTS_REFUND`
- `POINTS_REDEMPTION` |\n| source_id | Custom source ID of the transaction if one was included originally. | source_id_custom |\n| reason | Contains the reason for the transaction if one was included originally. | |\n| balance | The loyalty card balance after the transaction. | |\n| amount | The amount of loyalty points being allocated during the transaction. This value can either be negative or positive depending on the nature of the transaction. | |\n| created_at | Timestamp in ISO 8601 format representing the date and time when the transaction was created. | 2022-03-09T09:16:32.521Z |\n| voucher_id | Unique Voucher ID. | v_dky7ksKfPX50Wb2Bxvcoeb1xT20b6tcp |\n| campaign_id | Parent campaign ID. | camp_FNYR4jhqZBM9xTptxDGgeNBV |\n| source| Channel through which the transaction was initiated. | - `API`
- `voucherify-web-ui`
- `Automation` |\n| details | More detailed information stored in the form of a JSON. | Provides more details related to the transaction in the form of an object. |\n| related_transaction_id | Unique transaction ID related to a receiver/donor card in the case of a points transfer from/to another card. | vtx_0c9afe802593b34b80 |",
"parameters": [],
"security": [
{
@@ -89268,7 +89321,7 @@
"Exports"
],
"summary": "Download Export",
- "description": "Download the contents of the exported CSV file. \n\n\n\n> 📘 Important notes\n>\n> **Base URL:** \n> - `https://download.voucherify.io` (Europe) \n> - `https://us1.download.voucherify.io` (US) \n> - `https://as1.download.voucherify.io` (Asia) \n>\n> **Token:** Can be found within the `result` parameter of the [Get Export](/api-reference/exports/get-export) method response.",
+ "description": "Download the contents of the exported CSV file. \n\n\n\n\n\nImportant notes\n\n**Base URL:**\n\n- `https://download.voucherify.io` (Europe)\n- `https://us1.download.voucherify.io` (US)\n- `https://as1.download.voucherify.io` (Asia)\n\n**Token:** Can be found within the `result` parameter of the [Get Export](/api-reference/exports/get-export) method response.\n\n",
"parameters": [],
"security": [
{
@@ -89696,7 +89749,7 @@
"Metadata Schemas"
],
"summary": "List Metadata Schema Definitions",
- "description": "Retrieve metadata schema definitions.\n\n>📘 Management API\n>\n>If you have Management API enabled, you can also use the [List Metadata Schemas](/api-reference/management/list-metadata-schemas) endpoint to list all metadata schemas.",
+ "description": "Retrieve metadata schema definitions.\n\n\n\nManagement API\n\nIf you have Management API enabled, you can also use the [List Metadata Schemas](/api-reference/management/list-metadata-schemas) endpoint to list all metadata schemas.\n\n",
"parameters": [],
"security": [
{
@@ -90195,7 +90248,7 @@
"Vouchers"
],
"summary": "Examine Voucher Qualification",
- "description": "\n> ❗️ Deprecated \n>\n> This endpoint represents the deprecated version of the API responsible for qualification, and we do not recommend using it. The new [Qualifications API](/api-reference/qualifications/check-eligibility) introduces additional features and improvements while maintaining backward compatibility. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint. \n\nDisplay vouchers qualified to the given customer and context (e.g., order, loyalty reward). Checks up to 50 **generic (standalone) vouchers**. \n\n> 👍 Prevailing assumption\n> You data is synced with Voucherify.\n\n ## How does this endpoint work? \n\n A property's value that does not meet a validation rule requirement will disqualify that particular voucher and it will not be listed in the results.\n\nAs a sample use case, you can imagine a requirement of displaying coupons available for the customer below the shopping cart. The customer can choose and apply the proposed voucher.\n\n ## What's excluded? \n\n The verification logic won't run against _coupons from bulk unique code campaigns_. For campaigns with multiple unique codes, you should run a [dedicated function](/api-reference/campaigns/examine-campaign-qualification) for searching and identifying qualified campaigns.\n\n ## Customizing the response\n\n> 📘 Query parameters let you sort and filter the returned vouchers\n>\n> Customize your response:\n> - If you only care about verifying a customer, use `audienceRulesOnly` set to `true`. \n>- If you want to limit the number of vouchers to be returned from the entire pool of eligible vouchers, set a `limit`. This will return vouchers sorted by `-created_at`, by default beginning with the most recent vouchers listed at the top.\n> - If you have a preference on the sorting order of the returned vouchers, you can use `order` to customize your response.\n\n ## Sending the request body payload\n\n\n ## Customer\n\nYou have the option of sending customer data via the dedicated `customer` object in the request body or a nested `customer` object within the `order` object.\n ### Available options:\n\n - You can either pass a customer `id` (Voucherify system generated),\n\n - a `source_id` (your own unique internal customer identifier e.g., email, database ID, CRM id), \n\n - a combination of the remaining parameters in the customer object, \n\n - a combination of customer `id` and remaining parameters excluding `source_id`, or\n\n - a combination of `source_id` and remaining parameters excluding `id`\n\n #### Note:\n\n For the latter two options, if you pass the `source_id` or the `id` with the other parameters, the logic will run independently for parameters explicitly passed in the request body versus those not explicitly passed in the request body. For _parameters not explicitly listed in the payload_, the verification will be against the data stored for that customer in the system. On the other hand, for any _parameter values explicitly passed in the payload_, the logic will ignore those stored in the system and will use the new values provided in the qualification request body. \n\n The qualification runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard. [Read more](/personalize/create-validation-rules). \n\n## Order\n\n ### Available options:\n\n - You can either pass an order `id` (Voucherify system generated),\n\n - a `source_id` (your own unique internal order identifier), \n\n - a combination of the remaining parameters in the order object, \n\n - a combination of order `id` and remaining parameters excluding `source_id`, or\n\n - a combination of `source_id` and remaining parameters excluding `id`\n\n #### Note:\n\n For the latter two options, if you pass the `source_id` or the `id` with the other parameters, the logic will run independently for parameters explicitly passed in the request body versus those not explicitly passed in the request body. For _parameters not explicitly listed in the payload_, the verification will be against the data stored for that order in the system. On the other hand, for any _parameter values explicitly passed in the payload_, the logic will ignore those stored in the system and will use the new values provided in the qualification request body. \n\n The qualification runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard. [Read more](/personalize/create-validation-rules).\n\n## Guidelines:\n\nTo validate against vouchers with total order `amount` requirements, make sure to include the total order `amount` in the order object or alternatively the `amount` for _every_ order item (the application will then add each amount to get the total and perform the qualification checks). If the total order `amount` is provided along with the individual items' amounts, the total order `amount` will take precedence.\n\n\n| **Case** | **Order-Level Parameter Included** | **Item-Level Parameter Included** | **Precedence** | **Calculation Result** | **Parameter included in payload accounts for checks against requirements in these validation rules** |\n|:---:|:---:|:---:|:---:|---|---|\n| **1** | `amount` | `amount` | Order-level | Uses order-level `amount` | - Total order amount |\n| **2** | | `amount` | Item-level | Sums each item-level `amount` | - Total order amount
- subtotal of matched items |\n| **3** | | `price`
`quantity` | Item-level | Multiplies each item's (`price` x `quantity`) to get item `amount` and then adds each item's `amount` to get total order `amount` | - Total order amount
- Subtotal of matched items
- Unit price of any matching order line
- Price of each item/Price of any item |\n| **4** | | `amount`
`price`
`quantity` | Item-level `amount` | Uses item-level `amount` for total order `amount` calculation, ignores (`price` x `quantity`) calculation | - Total order amount (uses item `amount` if provided or `price` x `quantity` for items without `amount` property; `amount` takes precedence in case all 3 properties are provided for an item)
- Subtotal of matched items (uses item `amount`, takes precedence if all 3 properties are provided)
- Unit price of any matching order line
- Price of each item/Price of any item |\n| **5** | `amount` | `amount`
`price`
`quantity` | Order-level | Uses order-level `amount` for total order `amount` | - Total order amount (uses order-level `amount`).
- Subtotal of matched items (see case **4** for details).
- Unit price of any matching order line
- Price of each item/Price of any item |",
+ "description": "\n\n\nDeprecated\n\nThis endpoint represents the deprecated version of the API responsible for qualification, and we do not recommend using it. The new [Qualifications API](/api-reference/qualifications/check-eligibility) introduces additional features and improvements while maintaining backward compatibility. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint.\n\n\n\nDisplay vouchers qualified to the given customer and context (e.g., order, loyalty reward). Checks up to 50 **generic (standalone) vouchers**. \n\n\n\nPrevailing assumption\n\nYou data is synced with Voucherify.\n\n\n\n ## How does this endpoint work? \n\n A property's value that does not meet a validation rule requirement will disqualify that particular voucher and it will not be listed in the results.\n\nAs a sample use case, you can imagine a requirement of displaying coupons available for the customer below the shopping cart. The customer can choose and apply the proposed voucher.\n\n ## What's excluded? \n\n The verification logic won't run against _coupons from bulk unique code campaigns_. For campaigns with multiple unique codes, you should run a [dedicated function](/api-reference/campaigns/examine-campaign-qualification) for searching and identifying qualified campaigns.\n\n ## Customizing the response\n\n\n\nQuery parameters let you sort and filter the returned vouchers\n\nCustomize your response:\n\n- If you only care about verifying a customer, use `audienceRulesOnly` set to `true`.\n- If you want to limit the number of vouchers to be returned from the entire pool of eligible vouchers, set a `limit`. This will return vouchers sorted by `-created_at`, by default beginning with the most recent vouchers listed at the top.\n- If you have a preference on the sorting order of the returned vouchers, you can use `order` to customize your response.\n\n\n\n ## Sending the request body payload\n\n\n ## Customer\n\nYou have the option of sending customer data via the dedicated `customer` object in the request body or a nested `customer` object within the `order` object.\n ### Available options:\n\n - You can either pass a customer `id` (Voucherify system generated),\n\n - a `source_id` (your own unique internal customer identifier e.g., email, database ID, CRM id), \n\n - a combination of the remaining parameters in the customer object, \n\n - a combination of customer `id` and remaining parameters excluding `source_id`, or\n\n - a combination of `source_id` and remaining parameters excluding `id`\n\n #### Note:\n\n For the latter two options, if you pass the `source_id` or the `id` with the other parameters, the logic will run independently for parameters explicitly passed in the request body versus those not explicitly passed in the request body. For _parameters not explicitly listed in the payload_, the verification will be against the data stored for that customer in the system. On the other hand, for any _parameter values explicitly passed in the payload_, the logic will ignore those stored in the system and will use the new values provided in the qualification request body. \n\n The qualification runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard. [Read more](/personalize/create-validation-rules). \n\n## Order\n\n ### Available options:\n\n - You can either pass an order `id` (Voucherify system generated),\n\n - a `source_id` (your own unique internal order identifier), \n\n - a combination of the remaining parameters in the order object, \n\n - a combination of order `id` and remaining parameters excluding `source_id`, or\n\n - a combination of `source_id` and remaining parameters excluding `id`\n\n #### Note:\n\n For the latter two options, if you pass the `source_id` or the `id` with the other parameters, the logic will run independently for parameters explicitly passed in the request body versus those not explicitly passed in the request body. For _parameters not explicitly listed in the payload_, the verification will be against the data stored for that order in the system. On the other hand, for any _parameter values explicitly passed in the payload_, the logic will ignore those stored in the system and will use the new values provided in the qualification request body. \n\n The qualification runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard. [Read more](/personalize/create-validation-rules).\n\n## Guidelines:\n\nTo validate against vouchers with total order `amount` requirements, make sure to include the total order `amount` in the order object or alternatively the `amount` for _every_ order item (the application will then add each amount to get the total and perform the qualification checks). If the total order `amount` is provided along with the individual items' amounts, the total order `amount` will take precedence.\n\n\n| **Case** | **Order-Level Parameter Included** | **Item-Level Parameter Included** | **Precedence** | **Calculation Result** | **Parameter included in payload accounts for checks against requirements in these validation rules** |\n|:---:|:---:|:---:|:---:|---|---|\n| **1** | `amount` | `amount` | Order-level | Uses order-level `amount` | - Total order amount |\n| **2** | | `amount` | Item-level | Sums each item-level `amount` | - Total order amount
- subtotal of matched items |\n| **3** | | `price`
`quantity` | Item-level | Multiplies each item's (`price` x `quantity`) to get item `amount` and then adds each item's `amount` to get total order `amount` | - Total order amount
- Subtotal of matched items
- Unit price of any matching order line
- Price of each item/Price of any item |\n| **4** | | `amount`
`price`
`quantity` | Item-level `amount` | Uses item-level `amount` for total order `amount` calculation, ignores (`price` x `quantity`) calculation | - Total order amount (uses item `amount` if provided or `price` x `quantity` for items without `amount` property; `amount` takes precedence in case all 3 properties are provided for an item)
- Subtotal of matched items (uses item `amount`, takes precedence if all 3 properties are provided)
- Unit price of any matching order line
- Price of each item/Price of any item |\n| **5** | `amount` | `amount`
`price`
`quantity` | Order-level | Uses order-level `amount` for total order `amount` | - Total order amount (uses order-level `amount`).
- Subtotal of matched items (see case **4** for details).
- Unit price of any matching order line
- Price of each item/Price of any item |",
"parameters": [
{
"$ref": "#/components/parameters/audienceRulesOnly"
@@ -90685,7 +90738,7 @@
"Metadata Schemas"
],
"summary": "Get Metadata Schema",
- "description": "Retrieves a metadata schema per resource type.\n\n## Resource types\n\n### Standard\n\nYou can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter.\n\n- `campaign`\n- `customer`\n- `earning_rule`\n- `loyalty_tier`\n- `order`\n- `order_item`\n- `product`\n- `promotion_tier`\n- `publication`\n- `redemption`\n- `reward`\n- `voucher`\n\n### Custom\n\nIf you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the `\"resource\"` field to retrieve its details.\n\n>📘 Management API\n>\n>If you have Management API enabled, you can also use the [Get Metadata Schemas](/api-reference/management/get-metadata-schema) endpoint to retrieve a metadata schema using its ID.",
+ "description": "Retrieves a metadata schema per resource type.\n\n## Resource types\n\n### Standard\n\nYou can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter.\n\n- `campaign`\n- `customer`\n- `earning_rule`\n- `loyalty_tier`\n- `order`\n- `order_item`\n- `product`\n- `promotion_tier`\n- `publication`\n- `redemption`\n- `reward`\n- `voucher`\n\n### Custom\n\nIf you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the `\"resource\"` field to retrieve its details.\n\n\n\nManagement API\n\nIf you have Management API enabled, you can also use the [Get Metadata Schemas](/api-reference/management/get-metadata-schema) endpoint to retrieve a metadata schema using its ID.\n\n",
"parameters": [],
"security": [
{
@@ -91508,7 +91561,7 @@
"Referrals"
],
"summary": "Add Referral Code Holders with Campaign ID",
- "description": "Adds new holders to a referral code as **referees**. The data sent in the request is upserted into the customer data.\n\nIf the request returns an error even for one customer, you have to resend the whole request. Customer data is upserted if the data for all customers is correct.\n\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (`customers.modify`)\n- Publish Voucher (`vouchers.publish`)\n\n> 👍\n>To add a holder as a referrer, use the [Create Publication](/api-reference/publications/create-publication) endpoint.",
+ "description": "Adds new holders to a referral code as **referees**. The data sent in the request is upserted into the customer data.\n\nIf the request returns an error even for one customer, you have to resend the whole request. Customer data is upserted if the data for all customers is correct.\n\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (`customers.modify`)\n- Publish Voucher (`vouchers.publish`)\n\n\n\nTo add a holder as a referrer, use the [Create Publication](/api-reference/publications/create-publication) endpoint.\n\n",
"parameters": [],
"security": [
{
@@ -91988,7 +92041,7 @@
"Referrals"
],
"summary": "Add Referral Code Holders",
- "description": "Adds new holders to a referral code as **referees**. The data sent in the request is upserted into the customer data.\n\nIf the request returns an error even for one customer, you have to resend the whole request. Customer data is upserted if the data for all customers is correct.\n\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (`customers.modify`)\n- Publish Voucher (`vouchers.publish`)\n\n> 👍\n>To add a holder as a referrer, use the [Create Publication](/api-reference/publications/create-publication) endpoint.\n\n> 📘 Alternative endpoint\n>\n>This endpoint is an alternative to the [Add Referral Code Holders endpoint](/api-reference/referrals/add-referral-code-holders-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the `campaignId` as a path paremeter.",
+ "description": "Adds new holders to a referral code as **referees**. The data sent in the request is upserted into the customer data.\n\nIf the request returns an error even for one customer, you have to resend the whole request. Customer data is upserted if the data for all customers is correct.\n\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (`customers.modify`)\n- Publish Voucher (`vouchers.publish`)\n\n\n\nTo add a holder as a referrer, use the [Create Publication](/api-reference/publications/create-publication) endpoint.\n\n\n\n\n\nAlternative endpoint\n\nThis endpoint is an alternative to the [Add Referral Code Holders endpoint](/api-reference/referrals/add-referral-code-holders-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the `campaignId` as a path paremeter.\n\n",
"parameters": [],
"security": [
{
@@ -92195,7 +92248,7 @@
"Referrals"
],
"summary": "List Referral Code Holders",
- "description": "Retrieves the holders of the referral code from a referral campaign.\n\nTo use this endpoint, you must have the following permissions:\n\n- Read Customers (`customers.details.read`)\n\n> 📘 Alternative endpoint\n>\n>This endpoint is an alternative to the [List Member Holders endpoint](/api-reference/referrals/list-referral-code-holders-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the `campaignId` as a path paremeter.",
+ "description": "Retrieves the holders of the referral code from a referral campaign.\n\nTo use this endpoint, you must have the following permissions:\n\n- Read Customers (`customers.details.read`)\n\n\n\nAlternative endpoint\n\nThis endpoint is an alternative to the [List Member Holders endpoint](/api-reference/referrals/list-referral-code-holders-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the `campaignId` as a path paremeter.\n\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -92337,7 +92390,7 @@
"Referrals"
],
"summary": "Remove Referral Card Holder",
- "description": "Removes the holder from a referral card. You can remove a referee only.\n\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (`customers.modify`)\n- Publish Voucher (`vouchers.publish`)\n\n> 📘 Alternative endpoint\n>\n>This endpoint is an alternative to the [Remove Referral Card Holder endpoint](/api-reference/referrals/remove-referral-card-holder-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the `campaignId` as a path paremeter.",
+ "description": "Removes the holder from a referral card. You can remove a referee only.\n\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (`customers.modify`)\n- Publish Voucher (`vouchers.publish`)\n\n\n\nAlternative endpoint\n\nThis endpoint is an alternative to the [Remove Referral Card Holder endpoint](/api-reference/referrals/remove-referral-card-holder-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the `campaignId` as a path paremeter.\n\n",
"parameters": [],
"security": [
{
@@ -92599,7 +92652,7 @@
"Templates"
],
"summary": "List Campaign Templates",
- "description": "Lists all campaign templates available in the project.\n\n> 📘 Campaign Templates – Documentation\n>\n>Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Lists all campaign templates available in the project.\n\n\n\nCampaign Templates – Documentation\n\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -92696,7 +92749,7 @@
"Templates"
],
"summary": "Create Campaign Template",
- "description": "Creates a template for a discount or gift campaign, or a promotion tier.\n\nA template stores campaign configuration **without** the following details:\n- Campaign name\n- Category\n- Code count\n\nThe following elements are not supported by campaign templates:\n- Redeeming API keys\n- Redeeming users\n- Customer loyalty tier\n- Static segments\n\n> 👍 Promotion Tiers and Campaign Templates\n>\n>You can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the `DISCOUNT_COUPON` type. You can use this template to create:\n>- [Discount campaign](/api-reference/templates/create-campaign-from-template),\n>- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template).\n\n> 📘 Campaign Templates – Documentation\n>\n>Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Creates a template for a discount or gift campaign, or a promotion tier.\n\nA template stores campaign configuration **without** the following details:\n- Campaign name\n- Category\n- Code count\n\nThe following elements are not supported by campaign templates:\n- Redeeming API keys\n- Redeeming users\n- Customer loyalty tier\n- Static segments\n\n\n\nPromotion Tiers and Campaign Templates\n\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the `DISCOUNT_COUPON` type. You can use this template to create:\n\n- [Discount campaign](/api-reference/templates/create-campaign-from-template),\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template).\n\n\n\n\n\nCampaign Templates – Documentation\n\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n\n",
"parameters": [],
"security": [
{
@@ -92815,7 +92868,7 @@
"Templates"
],
"summary": "Get Campaign Template",
- "description": "Retrieves a campaign template available in the project.\n\n> 📘 Campaign Templates – Documentation\n>\n>Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Retrieves a campaign template available in the project.\n\n\n\nCampaign Templates – Documentation\n\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n\n",
"parameters": [
{
"schema": {
@@ -92893,7 +92946,7 @@
"Templates"
],
"summary": "Update Campaign Template",
- "description": "Updates the name or description of the campaign template.\n\n> 📘 Campaign Templates – Documentation\n>\n>Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Updates the name or description of the campaign template.\n\n\n\nCampaign Templates – Documentation\n\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n\n",
"parameters": [],
"security": [
{
@@ -93015,7 +93068,7 @@
"Templates"
],
"summary": "Delete Campaign Template",
- "description": "Deletes the campaign template permanently.\n\n> 📘 Campaign Templates – Documentation\n>\n>Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Deletes the campaign template permanently.\n\n\n\nCampaign Templates – Documentation\n\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n\n",
"parameters": [],
"security": [
{
@@ -93075,7 +93128,7 @@
"Templates"
],
"summary": "Create Campaign From Template",
- "description": "Creates a campaign out of a campaign template.\n\nTo create a campaign, you need to provide the name in the request, while other fields are optional. If no other fields are sent, the configuration from the template will be used.\n\nYou can send new values of the fields listed below to replace the settings saved in the template. However, you cannot assign an existing validation rule or create a new one in the request. If the template has a validation rule, a new validation rule is always created for the campaign. When the campaign has been created, then you can:\n- [Update the validation rule](/api-reference/validation-rules/update-validation-rule),\n- [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment),\n- [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments).\n\n> 👍 Promotion Tiers and Campaign Templates\n>\n>You can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the `DISCOUNT_COUPON` type. You can use this template to create:\n>- [Discount campaign](/api-reference/templates/create-campaign-from-template)\n>- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template)\n\n> 📘 Campaign Templates – Documentation\n>\n>Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Creates a campaign out of a campaign template.\n\nTo create a campaign, you need to provide the name in the request, while other fields are optional. If no other fields are sent, the configuration from the template will be used.\n\nYou can send new values of the fields listed below to replace the settings saved in the template. However, you cannot assign an existing validation rule or create a new one in the request. If the template has a validation rule, a new validation rule is always created for the campaign. When the campaign has been created, then you can:\n- [Update the validation rule](/api-reference/validation-rules/update-validation-rule),\n- [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment),\n- [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments).\n\n\n\nPromotion Tiers and Campaign Templates\n\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the `DISCOUNT_COUPON` type. You can use this template to create:\n\n- [Discount campaign](/api-reference/templates/create-campaign-from-template)\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template)\n\n\n\n\n\nCampaign Templates – Documentation\n\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n\n",
"parameters": [],
"security": [
{
@@ -93285,7 +93338,7 @@
"Templates"
],
"summary": "Add Promotion Tier From Template",
- "description": "Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign.\n\nTo add a promotion tier to a campaign, you need to provide the name in the request and the campaign ID. Other fields are optional. If no other fields are sent, the configuration from the template will be used.\n\nYou can send new values of the fields listed below to replace the settings saved in the template. However, you cannot assign an action or an existing validation rule or create a new one in the request. If the template has a validation rule, a new validation rule is always created for the promotion tier. When the promotion tier has been created, then you can:\n- [Update the validation rule](/api-reference/validation-rules/update-validation-rule),\n- [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment),\n- [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment).\n\n> 👍 Promotion Tiers and Campaign Templates\n>\n>You can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the `DISCOUNT_COUPON` type. You can use this template to create:\n>- [Discount campaign](/api-reference/templates/create-campaign-from-template)\n>- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template)\n\n> 📘 Campaign Templates – Documentation\n>\n>Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign.\n\nTo add a promotion tier to a campaign, you need to provide the name in the request and the campaign ID. Other fields are optional. If no other fields are sent, the configuration from the template will be used.\n\nYou can send new values of the fields listed below to replace the settings saved in the template. However, you cannot assign an action or an existing validation rule or create a new one in the request. If the template has a validation rule, a new validation rule is always created for the promotion tier. When the promotion tier has been created, then you can:\n- [Update the validation rule](/api-reference/validation-rules/update-validation-rule),\n- [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment),\n- [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment).\n\n\n\nPromotion Tiers and Campaign Templates\n\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the `DISCOUNT_COUPON` type. You can use this template to create:\n\n- [Discount campaign](/api-reference/templates/create-campaign-from-template)\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template)\n\n\n\n\n\nCampaign Templates – Documentation\n\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n\n",
"parameters": [],
"security": [
{
@@ -94295,7 +94348,7 @@
"Management"
],
"summary": "Delete Project",
- "description": "Deletes an existing project.\n\nThe users currently using the deleted project will be automatically logged out.\n\n> 🚧 Sandbox Project\n>\n>The sandbox project cannot be deleted.",
+ "description": "Deletes an existing project.\n\nThe users currently using the deleted project will be automatically logged out.\n\n\n\nSandbox Project\n\nThe sandbox project cannot be deleted.\n\n",
"parameters": [],
"security": [
{
@@ -94367,7 +94420,7 @@
"Management"
],
"summary": "Assign User",
- "description": "Assigns a user to a given project. The user must be an existing user in Voucherify.\n\n> 🚧 Correct Use of Data\n>\n>To avoid errors, use the `\"role\"` key with either `\"id\"` or `\"login\"` keys.",
+ "description": "Assigns a user to a given project. The user must be an existing user in Voucherify.\n\n\n\nCorrect Use of Data\n\nTo avoid errors, use the `\"role\"` key with either `\"id\"` or `\"login\"` keys.\n\n",
"parameters": [],
"security": [
{
@@ -95069,7 +95122,7 @@
"Management"
],
"summary": "List Campaign Templates",
- "description": "Lists all campaign templates available in the project.\n\n> 👍 List Campaign Templates\n>\n> This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates).\n\n> 📘 Campaign Templates – Documentation\n>\n>Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Lists all campaign templates available in the project.\n\n\n\nList Campaign Templates\n\nThis endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates).\n\n\n\n\n\nCampaign Templates – Documentation\n\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -95242,7 +95295,7 @@
"Management"
],
"summary": "Copy Campaign Template to a Project",
- "description": "Copies a campaign template to another project.\n\nThe resources, like validation rules or products, will not be copied to the destination project yet. When the template is used to create a new campaign or add a new promotion tier, the resources will be created in the destination project.\n\n> 📘 Campaign Templates – Documentation\n>\n>Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Copies a campaign template to another project.\n\nThe resources, like validation rules or products, will not be copied to the destination project yet. When the template is used to create a new campaign or add a new promotion tier, the resources will be created in the destination project.\n\n\n\nCampaign Templates – Documentation\n\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n\n",
"parameters": [],
"security": [
{
@@ -95382,7 +95435,7 @@
"Management"
],
"summary": "Create Stacking Rules",
- "description": "Overwrites the default stacking rules.\n\nIf new stacking rules have been created for the project earlier (e.g. in the user interface), it returns an error. Use [Update stacking rules](/api-reference/management/update-stacking-rules) endpoint to change the rules.\n\n> 📘 Stacking rules documentation\n>\n> Read [the Stacking rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Overwrites the default stacking rules.\n\nIf new stacking rules have been created for the project earlier (e.g. in the user interface), it returns an error. Use [Update stacking rules](/api-reference/management/update-stacking-rules) endpoint to change the rules.\n\n\n\nStacking rules documentation\n\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n\n",
"parameters": [],
"security": [
{
@@ -95564,7 +95617,7 @@
"Management"
],
"summary": "List Stacking Rules",
- "description": "Lists all stacking rules.\n\nReturns always a list with one item.\n\nThis endpoint can be used to retrieve the default stacking rules. The default stacking rules do not have an ID that could be used with the [Get Stacking Rules](/api-reference/management/get-stacking-rules) or [Update Stacking Rules](/api-reference/management/update-stacking-rules) endpoints.\n\n> 📘 Stacking Rules Documentation\n>\n> Read [the Stacking Rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Lists all stacking rules.\n\nReturns always a list with one item.\n\nThis endpoint can be used to retrieve the default stacking rules. The default stacking rules do not have an ID that could be used with the [Get Stacking Rules](/api-reference/management/get-stacking-rules) or [Update Stacking Rules](/api-reference/management/update-stacking-rules) endpoints.\n\n\n\nStacking Rules Documentation\n\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n\n",
"parameters": [],
"security": [
{
@@ -95719,7 +95772,7 @@
"Management"
],
"summary": "Get Stacking Rules",
- "description": "Retrieves the stacking rules for the project.\n\n> 📘 Stacking Rules Documentation\n>\n> Read [the Stacking Rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Retrieves the stacking rules for the project.\n\n\n\nStacking Rules Documentation\n\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n\n",
"parameters": [],
"security": [
{
@@ -95849,7 +95902,7 @@
"Management"
],
"summary": "Update Stacking Rules",
- "description": "Updates the stacking rules.\n\nOnly the provided fields will be updated. However, if you update an array, the content of the array is overwritten. This means that if you want to add new values to an array and retain existing ones, you need to provide both the existing and new values in the request.\n\n> 📘 Stacking Rules Documentation\n>\n> Read [the Stacking Rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Updates the stacking rules.\n\nOnly the provided fields will be updated. However, if you update an array, the content of the array is overwritten. This means that if you want to add new values to an array and retain existing ones, you need to provide both the existing and new values in the request.\n\n\n\nStacking Rules Documentation\n\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n\n",
"parameters": [],
"security": [
{
@@ -96011,7 +96064,7 @@
"Management"
],
"summary": "Delete Stacking Rules",
- "description": "Deletes permanently the current settings for the stacking rules.\n\nThe stacking rules are restored to default values.\n\n> 📘 Stacking Rules Documentation\n>\n> Read [the Stacking Rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Deletes permanently the current settings for the stacking rules.\n\nThe stacking rules are restored to default values.\n\n\n\nStacking Rules Documentation\n\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n\n",
"parameters": [],
"security": [
{
@@ -96102,7 +96155,7 @@
"Management"
],
"summary": "Create Metadata Schema",
- "description": "Creates a new metadata (custom attribute) schema for a given resource.\n\nThe schema consists of a set of key-value pairs to customize Voucherify resources. \n\nYou can nest your object within a standard metadata schema, e.g. within a campaign or customer schema. However, your nested object can't include another nested object. The standard metadata schemas are:\n- Campaign\n- Voucher\n- Publication\n- Redemption\n- Product\n- Customer\n- Order\n- Order line item\n- Loyalty Tier\n- Promotion Tier\n- Earning rule\n- Reward\n\nUse this endpoint to define a metadata schema of a given resource for the first time. Once you configure a metadata schema for a given `related_object`, use the PUT [Update metadata schema](/api-reference/management/update-metadata-schema) endpoint to either update or add new metadata key-value pairs. For example, use this endpoint to define a metadata schema for `related_object: campaign` for the first time. If you want define a new metadata property for `campaign`, use the [PUT Update metadata schema](/api-reference/management/update-metadata-schema) endpoint.\n\n> 📘 Metadata Documentation\n>\n> Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Creates a new metadata (custom attribute) schema for a given resource.\n\nThe schema consists of a set of key-value pairs to customize Voucherify resources. \n\nYou can nest your object within a standard metadata schema, e.g. within a campaign or customer schema. However, your nested object can't include another nested object. The standard metadata schemas are:\n- Campaign\n- Voucher\n- Publication\n- Redemption\n- Product\n- Customer\n- Order\n- Order line item\n- Loyalty Tier\n- Promotion Tier\n- Earning rule\n- Reward\n\nUse this endpoint to define a metadata schema of a given resource for the first time. Once you configure a metadata schema for a given `related_object`, use the PUT [Update metadata schema](/api-reference/management/update-metadata-schema) endpoint to either update or add new metadata key-value pairs. For example, use this endpoint to define a metadata schema for `related_object: campaign` for the first time. If you want define a new metadata property for `campaign`, use the [PUT Update metadata schema](/api-reference/management/update-metadata-schema) endpoint.\n\n\n\nMetadata Documentation\n\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n\n",
"parameters": [],
"security": [
{
@@ -96266,7 +96319,7 @@
"Management"
],
"summary": "List Metadata Schemas",
- "description": "Lists all metadata schemas available in the project.\n\n> 📘 Metadata Documentation\n>\n> Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Lists all metadata schemas available in the project.\n\n\n\nMetadata Documentation\n\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n\n",
"parameters": [],
"security": [
{
@@ -96636,7 +96689,7 @@
"Management"
],
"summary": "Get Metadata Schema",
- "description": "Retrieves a metadata schema.\n\n> 📘 Metadata Documentation\n>\n> Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Retrieves a metadata schema.\n\n\n\nMetadata Documentation\n\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n\n",
"parameters": [],
"security": [
{
@@ -96781,7 +96834,7 @@
"Management"
],
"summary": "Update Metadata Schema",
- "description": "Updates a metadata schema.\n\nWith this request, you can:\n- Add a nonexistent attribute definition to the metadata schema.\n- Update an existing attribute definition by overwriting its current values.\n\nIn the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged.\n\nHowever, if you want to update a definition, you will have to add all its current key-value pairs as well. Only the pairs sent in the request are saved for this definition. This means that the key-value pairs that are not sent in a request are restored to default values. For example, if your definition has an array with values and it is not sent in an update request, the array values will be deleted.\n\n> 👍 Additional Notes\n>\n>- You cannot change the type of an existing schema, e.g. from `\"string\"` to `\"number\"`.\n>\n>- You can remove a definition with this endpoint by providing `\"deleted\": true` in the request. It will be moved to the Removed definitions section in the user interface. However, you cannot permanently remove a definition with this endpoint.\n\n> 📘 Metadata Documentation\n>\n> Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Updates a metadata schema.\n\nWith this request, you can:\n- Add a nonexistent attribute definition to the metadata schema.\n- Update an existing attribute definition by overwriting its current values.\n\nIn the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged.\n\nHowever, if you want to update a definition, you will have to add all its current key-value pairs as well. Only the pairs sent in the request are saved for this definition. This means that the key-value pairs that are not sent in a request are restored to default values. For example, if your definition has an array with values and it is not sent in an update request, the array values will be deleted.\n\n\n\nAdditional Notes\n\n- You cannot change the type of an existing schema, e.g. from `\"string\"` to `\"number\"`.\n\n- You can remove a definition with this endpoint by providing `\"deleted\": true` in the request. It will be moved to the Removed definitions section in the user interface. However, you cannot permanently remove a definition with this endpoint.\n\n\n\n\n\nMetadata Documentation\n\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n\n",
"parameters": [],
"security": [
{
@@ -96924,7 +96977,7 @@
"Management"
],
"summary": "Delete Metadata Schema",
- "description": "Deletes permanently the metadata schema.\n\nIn standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are:\n- Campaign\n- Voucher\n- Publication\n- Redemption\n- Product\n- Customer\n- Order\n- Order line item\n- Loyalty Tier\n- Promotion Tier\n- Earning rule\n- Reward\n\nIf you want to delete only one definition, use the [Update Metadata Schema](/api-reference/management/update-metadata-schema) endpoint. In the request, provide the `\"deleted\": true` pair in the definition object. This definition will be moved to Removed definitions.\n\nIf you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint.\n\n> 🚧 Metadata Purging\n>\n>This endpoint deletes permanently the metadata schemas only. However, it does not purge the metadata from associated entities, so the metadata added to those entities will remain.\n>\n>If you want to purge metadata from the entities:\n>1. Remove all the definitions you want to purge. You can do this either in Voucherify Project Settings > Metadata Schema tab or with the [Update Metadata Schema](/api-reference/management/update-metadata-schema) endpoint.\n>2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema.\n>3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities.\n>Note:\n>- This is an asynchronous action. You will be notified when it has been completed.\n>- You cannot purge metadata for the Redemption and Publication schemas.\n>4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify.\n\n> 📘 Metadata Documentation\n>\n> Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Deletes permanently the metadata schema.\n\nIn standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are:\n- Campaign\n- Voucher\n- Publication\n- Redemption\n- Product\n- Customer\n- Order\n- Order line item\n- Loyalty Tier\n- Promotion Tier\n- Earning rule\n- Reward\n\nIf you want to delete only one definition, use the [Update Metadata Schema](/api-reference/management/update-metadata-schema) endpoint. In the request, provide the `\"deleted\": true` pair in the definition object. This definition will be moved to Removed definitions.\n\nIf you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint.\n\n\n\nMetadata Purging\n\nThis endpoint deletes permanently the metadata schemas only. However, it does not purge the metadata from associated entities, so the metadata added to those entities will remain.\n\nIf you want to purge metadata from the entities:\n\n1. Remove all the definitions you want to purge. You can do this either in Voucherify Project Settings > Metadata Schema tab or with the [Update Metadata Schema](/api-reference/management/update-metadata-schema) endpoint.\n2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema.\n3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities.\n\nNote:\n\n- This is an asynchronous action. You will be notified when it has been completed.\n- You cannot purge metadata for the Redemption and Publication schemas.\n\n4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify.\n\n\n\n\n\nMetadata Documentation\n\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n\n",
"parameters": [],
"security": [
{
@@ -97015,7 +97068,7 @@
"Management"
],
"summary": "Create Custom Event Schema",
- "description": "Creates a custom event schema.\n\nThe `\"properties\"` object is required, but it can be empty, however. This object is for optional custom properties (metadata).\n\n> 📘 Custom Event Documentation\n>\n> Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\n>\n>Read also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Creates a custom event schema.\n\nThe `\"properties\"` object is required, but it can be empty, however. This object is for optional custom properties (metadata).\n\n\n\nCustom Event Documentation\n\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\n\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n\n",
"parameters": [],
"security": [
{
@@ -97171,7 +97224,7 @@
"Management"
],
"summary": "List Custom Event Schemas",
- "description": "Lists all custom event schemas available in the project.\n\n> 📘 Custom Event Documentation\n>\n> Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\n>\n>Read also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Lists all custom event schemas available in the project.\n\n\n\nCustom Event Documentation\n\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\n\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n\n",
"parameters": [],
"security": [
{
@@ -97317,7 +97370,7 @@
"Management"
],
"summary": "Get Custom Event Schema",
- "description": "Retrieves a custom event schema.\n\n> 📘 Custom Event Documentation\n>\n> Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\n>\n>Read also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Retrieves a custom event schema.\n\n\n\nCustom Event Documentation\n\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\n\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n\n",
"parameters": [],
"security": [
{
@@ -97418,7 +97471,7 @@
"Management"
],
"summary": "Update Custom Event Schema",
- "description": "Updates a custom event schema.\n\nWith this request, you can:\n- Add a nonexistent property to a custom event schema.\n- Update an existing property.\n\nIn the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged.\n\n> 👍 Additional Notes\n>\n>- You can change the type of an existing property, e.g. from `\"string\"` to `\"number\"`.\n>\n>- You can remove a custom property with this endpoint by providing `\"deleted\": true` in the request. However, you cannot permanently remove an event definition or its property with this endpoint.\n\n> 📘 Custom Event Documentation\n>\n> Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\n>\n>Read also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Updates a custom event schema.\n\nWith this request, you can:\n- Add a nonexistent property to a custom event schema.\n- Update an existing property.\n\nIn the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged.\n\n\n\nAdditional Notes\n\n- You can change the type of an existing property, e.g. from `\"string\"` to `\"number\"`.\n\n- You can remove a custom property with this endpoint by providing `\"deleted\": true` in the request. However, you cannot permanently remove an event definition or its property with this endpoint.\n\n\n\n\n\nCustom Event Documentation\n\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\n\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n\n",
"parameters": [],
"security": [
{
@@ -97562,7 +97615,7 @@
"Management"
],
"summary": "Delete Custom Event Schema",
- "description": "Deletes permanently the custom event schema with its custom properties (metadata).\n\n> 📘 Custom Event Documentation\n>\n> Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\n>\n>Read also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Deletes permanently the custom event schema with its custom properties (metadata).\n\n\n\nCustom Event Documentation\n\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\n\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n\n",
"parameters": [],
"security": [
{
@@ -97653,7 +97706,7 @@
"Management"
],
"summary": "Create Webhook",
- "description": "Creates a new webhook configuration.\n\n> 📘 Webhook Documentation\n>\n> Read [Webhooks v2024-01-01](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Creates a new webhook configuration.\n\n\n\nWebhook Documentation\n\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n\n",
"parameters": [],
"security": [
{
@@ -97782,7 +97835,7 @@
"Management"
],
"summary": "List Webhooks",
- "description": "Lists all webhook configurations for the project.\n\n> 📘 Webhook Documentation\n>\n> Read [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Lists all webhook configurations for the project.\n\n\n\nWebhook Documentation\n\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n\n",
"parameters": [],
"security": [
{
@@ -97956,7 +98009,7 @@
"Management"
],
"summary": "Get Webhook",
- "description": "Retrieves a webhook configuration.\n\n> 📘 Webhook Documentation\n>\n> Read [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Retrieves a webhook configuration.\n\n\n\nWebhook Documentation\n\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n\n",
"parameters": [],
"security": [
{
@@ -98059,7 +98112,7 @@
"Management"
],
"summary": "Update Webhook",
- "description": "Updates a webhook configuration.\n\nThe `\"events\"` listed in the request are overwritten. If you want to add more events, provide also the events that are already in the webhook configuration.\n\n> 📘 Webhook Documentation\n>\n> Read [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Updates a webhook configuration.\n\nThe `\"events\"` listed in the request are overwritten. If you want to add more events, provide also the events that are already in the webhook configuration.\n\n\n\nWebhook Documentation\n\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n\n",
"parameters": [],
"security": [
{
@@ -98194,7 +98247,7 @@
"Management"
],
"summary": "Delete Webhook",
- "description": "Deletes a webhook configuration.\n\n> 📘 Webhook Documentation\n>\n> Read [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Deletes a webhook configuration.\n\n\n\nWebhook Documentation\n\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n\n",
"parameters": [],
"security": [
{
@@ -98289,7 +98342,7 @@
"Management"
],
"summary": "Create Brand",
- "description": "Creates a new brand configuration.\n\nYou can have only one brand configured for a project.\n\n> 📘 White Labelling\n>\n> The white labelling settings which can be found in Project Settings > Brand Details and which are available only for Enterprise clients as a separate service can be configured only in the user interface.",
+ "description": "Creates a new brand configuration.\n\nYou can have only one brand configured for a project.\n\n\n\nWhite Labelling\n\nThe white labelling settings which can be found in Project Settings > Brand Details and which are available only for Enterprise clients as a separate service can be configured only in the user interface.\n\n",
"parameters": [],
"security": [
{
@@ -98727,7 +98780,7 @@
"Management"
],
"summary": "Update Brand",
- "description": "Updates a brand configuration.\n\nOnly the fields sent in the request will be updated. The fields omitted in the request will remain unchanged.\n\n> 📘 White Labelling\n>\n> The white labelling settings which can be found in Project Settings > Brand Details and which are available only for Enterprise clients as a separate service can be configured only in the user interface.",
+ "description": "Updates a brand configuration.\n\nOnly the fields sent in the request will be updated. The fields omitted in the request will remain unchanged.\n\n\n\nWhite Labelling\n\nThe white labelling settings which can be found in Project Settings > Brand Details and which are available only for Enterprise clients as a separate service can be configured only in the user interface.\n\n",
"parameters": [],
"security": [
{
@@ -98958,7 +99011,7 @@
"OAuth"
],
"summary": "Generate OAuth 2.0 Token",
- "description": "Generate an OAuth 2.0 token for an API client. The token can be used to authorize access to the Voucherify API. The token inherits the permissions and IP whitelists of the API key that is used to generate the OAuth token. You can define the scope that limits its usage. You can generate up to 1000 OAuth tokens per project. The token expires in 900 seconds (15 minutes).\n\nIf the API key that is used to generate the OAuth token is deleted or blocked, you cannot generate new OAuth tokens and the existing ones will stop working within one minute.\n\nIf the API key used to generate an OAuth token is regenerated, the OAuth token can still be used.\n\n>🚧 Format of scope values\n>\n>Separate the values of the `scope` property with spaces.",
+ "description": "Generate an OAuth 2.0 token for an API client. The token can be used to authorize access to the Voucherify API. The token inherits the permissions and IP whitelists of the API key that is used to generate the OAuth token. You can define the scope that limits its usage. You can generate up to 1000 OAuth tokens per project. The token expires in 900 seconds (15 minutes).\n\nIf the API key that is used to generate the OAuth token is deleted or blocked, you cannot generate new OAuth tokens and the existing ones will stop working within one minute.\n\nIf the API key used to generate an OAuth token is regenerated, the OAuth token can still be used.\n\n\n\nFormat of scope values\n\nSeparate the values of the `scope` property with spaces.\n\n",
"parameters": [],
"security": [
{
@@ -99173,7 +99226,7 @@
"Client-side"
],
"summary": "Check Eligibility (client-side)",
- "description": "Generate a list of redeemables that are applicable in the context of the customer and order.\n\nThe new qualifications method is an improved version of [Campaign Qualifications](/api-reference/campaigns/examine-campaign-qualification), [Voucher Qualifications](/api-reference/vouchers/examine-voucher-qualification) API requests. The new qualification method introduces the following improvements:\n\n- Qualification results are returned faster\n- No limit on the number of returned redeemables\n- Introduces new qualification scenarios, not available in the previous version\n\n> 👍 Scenario Guide\n>\n> Read our dedicated guide to learn about some use cases this endpoint can cover [here](/guides/checking-eligibility).\n\n## Paging \n\nThe Voucherify Qualifications API request will return to you all of the redeemables available for the customer in batches of up to 50 redeemables per page. To get the next batch of redeemables, you need to use the `starting_after` cursor.\n\nTo process of paging the redeemables works in the following manner:\n\n- You send the first API request for Qualifications without the `starting_after` parameter.\n- The response will contain a parameter named `has_more`. If the parameter's value is set to `true`, then more redeemables are available.\n- Get the value of the `created_at` parameter of the last returned redeemable. The value of this parameter will be used as a cursor to retrieve the next page of redeemables.\n- Send another API request for Qualification with the `starting_after` parameter set to the value taken from the `created_at` parameter from the last returned redeemable.\n- Voucherify will return the next page of redeemables.\n- If the `has_more` parameter is set to `true`, apply steps 3-5 to get the next page of redeemables.\n\n## Caching\n\nQualification has a 5-minute cache for the returned results. If you change your campaign settings or validation rules, the changes will apply to qualification results after the cache refreshes.",
+ "description": "Generate a list of redeemables that are applicable in the context of the customer and order.\n\nThe new qualifications method is an improved version of [Campaign Qualifications](/api-reference/campaigns/examine-campaign-qualification), [Voucher Qualifications](/api-reference/vouchers/examine-voucher-qualification) API requests. The new qualification method introduces the following improvements:\n\n- Qualification results are returned faster\n- No limit on the number of returned redeemables\n- Introduces new qualification scenarios, not available in the previous version\n\n\n\nScenario Guide\n\nRead our dedicated guide to learn about some use cases this endpoint can cover [here](/guides/checking-eligibility).\n\n\n\n## Paging \n\nThe Voucherify Qualifications API request will return to you all of the redeemables available for the customer in batches of up to 50 redeemables per page. To get the next batch of redeemables, you need to use the `starting_after` cursor.\n\nTo process of paging the redeemables works in the following manner:\n\n- You send the first API request for Qualifications without the `starting_after` parameter.\n- The response will contain a parameter named `has_more`. If the parameter's value is set to `true`, then more redeemables are available.\n- Get the value of the `created_at` parameter of the last returned redeemable. The value of this parameter will be used as a cursor to retrieve the next page of redeemables.\n- Send another API request for Qualification with the `starting_after` parameter set to the value taken from the `created_at` parameter from the last returned redeemable.\n- Voucherify will return the next page of redeemables.\n- If the `has_more` parameter is set to `true`, apply steps 3-5 to get the next page of redeemables.\n\n## Caching\n\nQualification has a 5-minute cache for the returned results. If you change your campaign settings or validation rules, the changes will apply to qualification results after the cache refreshes.",
"parameters": [],
"security": [
{
@@ -99461,7 +99514,7 @@
"Client-side"
],
"summary": "Redeem Stackable Discounts (client-side)",
- "description": "This method is accessible through public keys which you can use in client side requests coming from mobile and web browser applications.\n\n## How API returns calculated discounts and order amounts in the response\n\nIn the table below, you can see the logic the API follows to calculate discounts and amounts:\n\n| **Field** | **Calculation** | **Description** |\n|:---|:---|:---|\n| amount | N/A | This field shows the order amount before applying any discount |\n| total_amount | `total_amount` = `amount` - `total_discount_amount` | This field shows the order amount after applying all the discounts |\n| discount_amount | `discount_amount` = `previous_discount_amount` + `applied_discount_amount` | This field sums up all order-level discounts up to and including the specific discount being calculated for the stacked redemption. |\n| items_discount_amount | sum(items, i => i.discount_amount) | This field sums up all product-specific discounts |\n| total_discount_amount | `total_discount_amount` = `discount_amount` + `items_discount_amount` | This field sums up all order-level and all product-specific discounts |\n| applied_discount_amount | N/A | This field shows the order-level discount applied in a particular request |\n| items_applied_discount_amount | sum(items, i => i.applied_discount_amount) | This field sums up all product-specific discounts applied in a particular request |\n| total_applied_discount_amount | `total_applied_discount_amount` = `applied_discount_amount` + `items_applied_discount_amount` | This field sums up all order-level and all product-specific discounts applied in a particular request |\n\n\n> 📘 Rollbacks\n>\n> You can't roll back a child redemption. When you call rollback on a stacked redemption, all child redemptions will be rolled back. You need to refer to a parent redemption ID in your [rollback request](/api-reference/redemptions/rollback-stackable-redemptions).",
+ "description": "This method is accessible through public keys which you can use in client side requests coming from mobile and web browser applications.\n\n## How API returns calculated discounts and order amounts in the response\n\nIn the table below, you can see the logic the API follows to calculate discounts and amounts:\n\n| **Field** | **Calculation** | **Description** |\n|:---|:---|:---|\n| amount | N/A | This field shows the order amount before applying any discount |\n| total_amount | `total_amount` = `amount` - `total_discount_amount` | This field shows the order amount after applying all the discounts |\n| discount_amount | `discount_amount` = `previous_discount_amount` + `applied_discount_amount` | This field sums up all order-level discounts up to and including the specific discount being calculated for the stacked redemption. |\n| items_discount_amount | sum(items, i => i.discount_amount) | This field sums up all product-specific discounts |\n| total_discount_amount | `total_discount_amount` = `discount_amount` + `items_discount_amount` | This field sums up all order-level and all product-specific discounts |\n| applied_discount_amount | N/A | This field shows the order-level discount applied in a particular request |\n| items_applied_discount_amount | sum(items, i => i.applied_discount_amount) | This field sums up all product-specific discounts applied in a particular request |\n| total_applied_discount_amount | `total_applied_discount_amount` = `applied_discount_amount` + `items_applied_discount_amount` | This field sums up all order-level and all product-specific discounts applied in a particular request |\n\n\n\n\nRollbacks\n\nYou can't roll back a child redemption. When you call rollback on a stacked redemption, all child redemptions will be rolled back. You need to refer to a parent redemption ID in your [rollback request](/api-reference/redemptions/rollback-stackable-redemptions).\n\n",
"parameters": [
{
"$ref": "#/components/parameters/origin"
@@ -99897,7 +99950,7 @@
"Client-side"
],
"summary": "Validate Voucher (client-side)",
- "description": "> ❗️ Deprecated \n>\n> This endpoint represents the deprecated version of the API responsible for voucher validation, and we do not recommend using it. The new [Stackable Discounts API](/api-reference/client-side/validate-stackable-discounts-client-side) introduces additional features and improvements while maintaining backward compatibility, including applying a combination of coupon codes and promotion tiers. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint. \n\nTo verify a voucher code given by customer, you can use this method. It is designed for client side integration which means that is accessible only through public keys. This method is designed to be run directly either in web browsers or mobile apps.\n\n> ❗️ Specifying gift credits and loyalty points\n>\n> This endpoint does not support specifying the specific amount of gift credits to apply to an order nor the specific amount of loyalty points to an order. It calculates the amount that is available on the card and applies as much credits or points as possible to cover the total amount. \n\n### Set customer identity (optional)\n\nVoucherify can help you track anonymous customers. Once you integrate Voucherify into your web app and call the validate method, Voucherify will return a tracking ID and the script will store it in a cookie. Each subsequent validate call will use the same tracking ID.\n\nVoucherify tracks a user using a tracking ID to see if the user who is validating vouchers is the same as the one who consuming them. Voucherify does this by setting up an identity for the user. A `tracking_id` will be generated on the server side, unless you specify your own `tracking_id`. In both cases, you will receive the `tracking_id` in the validation response.\n\nThe returned `tracking_id` field should be used as the customer `source_id` in subsequent redemption requests. Moreover, the `tracking_id` returned from Validation API is encoded. Voucherify will recognize both values for identifying customer - the one before encryption sent as a query parameter to the **GET** `v1/validate` request, and the version encrypted and returned as part of the validation request.\n\n### Sample workflow\n\nCustomer tracking workflow in a nutshell:\n\n**Client-side:**\n * A customer visits your website.\n * A customer validates a voucher code. That triggers a validate request to be sent to Voucherify. In the request, you pass the tracking_id or customer.source_id. As a result, the API call to this endpoint returns an **encoded** `tracking_id`.\n\n**Backend:**\n * Once the customer finishes the checkout process, your website passes the `tracking_id` to your backend during a redemption call. The `tracking_id` is sent as a value assigned to the property *source_id* in a customer object.\n * A customer object is created and within the redemption response, you get a customer `id`.\n * You can use the customer `id` or the customer `source_id` to fetch or modify the customer details.\n \nA customer is created (upserted) automatically with a redemption call. Alternatively, you can create a new profile by creating a customer via a dedicated API method. Take a look at the customer object to understand the [entity's structure](/api-reference/customers/customer-object). \n\n\n\n> 📘 Customer identifier\n>\n> The source id of the customer may either be an already hashed version of the `tracking_id`, which you received in a response from a validation request or a custom ID you predefined (i.e. an email address). Nevertheless, we recommend using identifiers delivered by Voucherify API.\n\n\n\n\n### Examples with Query Parameters\n\n| **Query Parameters** | **Example URL** |\n|:---|:---|\n| Shortcut - `customer` query param instead of `customer[source_id]` | `https://api.voucherify.io/client/v1/validate?code=sKKFCKLZ&amount=10100&customer=customer_id` |\n| Pass `customer`'s and `redemption`'s context `metadata` in query parameters | `https://api.voucherify.io/client/v1/validate?code=sKKFCKLZ&amount=10100&customer=sure_he_is_new&metadata[shop]=1&customer[metadata][propsy]=2&metadata[test]=true` |\n| Use `tracking_id` instead of `source_id` | `https://api.voucherify.io/client/v1/validate?code=IKU-mvS-JOG&amount=10100&tracking_id=sure_he_is_new_5&metadata[shop]=1&metadata[test]=true` |\n\n### Reasons why a validation might fail\n\nVoucher validation might fail because of one of these reasons:\n\n* `voucher not found` - voucher doesn't exist or was [deleted](/api-reference/vouchers/delete-voucher)\n* `voucher expired` - voucher is out of [start date - expiration date] timeframe\n* `voucher is disabled` - learn more about [disabled vouchers](/api-reference/vouchers/disable-voucher)\n* `customer does not match segment rules` - learn more about [customer tracking](/api-reference/customers/customer-object)\n* `order does not match validation rules` - learn more about [validation rules](/api-reference/validations/validation-object)",
+ "description": "\n\nDeprecated\n\nThis endpoint represents the deprecated version of the API responsible for voucher validation, and we do not recommend using it. The new [Stackable Discounts API](/api-reference/client-side/validate-stackable-discounts-client-side) introduces additional features and improvements while maintaining backward compatibility, including applying a combination of coupon codes and promotion tiers. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint.\n\n\n\nTo verify a voucher code given by customer, you can use this method. It is designed for client side integration which means that is accessible only through public keys. This method is designed to be run directly either in web browsers or mobile apps.\n\n\n\nSpecifying gift credits and loyalty points\n\nThis endpoint does not support specifying the specific amount of gift credits to apply to an order nor the specific amount of loyalty points to an order. It calculates the amount that is available on the card and applies as much credits or points as possible to cover the total amount.\n\n\n\n### Set customer identity (optional)\n\nVoucherify can help you track anonymous customers. Once you integrate Voucherify into your web app and call the validate method, Voucherify will return a tracking ID and the script will store it in a cookie. Each subsequent validate call will use the same tracking ID.\n\nVoucherify tracks a user using a tracking ID to see if the user who is validating vouchers is the same as the one who consuming them. Voucherify does this by setting up an identity for the user. A `tracking_id` will be generated on the server side, unless you specify your own `tracking_id`. In both cases, you will receive the `tracking_id` in the validation response.\n\nThe returned `tracking_id` field should be used as the customer `source_id` in subsequent redemption requests. Moreover, the `tracking_id` returned from Validation API is encoded. Voucherify will recognize both values for identifying customer - the one before encryption sent as a query parameter to the **GET** `v1/validate` request, and the version encrypted and returned as part of the validation request.\n\n### Sample workflow\n\nCustomer tracking workflow in a nutshell:\n\n**Client-side:**\n * A customer visits your website.\n * A customer validates a voucher code. That triggers a validate request to be sent to Voucherify. In the request, you pass the tracking_id or customer.source_id. As a result, the API call to this endpoint returns an **encoded** `tracking_id`.\n\n**Backend:**\n * Once the customer finishes the checkout process, your website passes the `tracking_id` to your backend during a redemption call. The `tracking_id` is sent as a value assigned to the property *source_id* in a customer object.\n * A customer object is created and within the redemption response, you get a customer `id`.\n * You can use the customer `id` or the customer `source_id` to fetch or modify the customer details.\n \nA customer is created (upserted) automatically with a redemption call. Alternatively, you can create a new profile by creating a customer via a dedicated API method. Take a look at the customer object to understand the [entity's structure](/api-reference/customers/customer-object). \n\n\n\n\n\nCustomer identifier\n\nThe source id of the customer may either be an already hashed version of the `tracking_id`, which you received in a response from a validation request or a custom ID you predefined (i.e. an email address). Nevertheless, we recommend using identifiers delivered by Voucherify API.\n\n\n\n\n\n\n### Examples with Query Parameters\n\n| **Query Parameters** | **Example URL** |\n|:---|:---|\n| Shortcut - `customer` query param instead of `customer[source_id]` | `https://api.voucherify.io/client/v1/validate?code=sKKFCKLZ&amount=10100&customer=customer_id` |\n| Pass `customer`'s and `redemption`'s context `metadata` in query parameters | `https://api.voucherify.io/client/v1/validate?code=sKKFCKLZ&amount=10100&customer=sure_he_is_new&metadata[shop]=1&customer[metadata][propsy]=2&metadata[test]=true` |\n| Use `tracking_id` instead of `source_id` | `https://api.voucherify.io/client/v1/validate?code=IKU-mvS-JOG&amount=10100&tracking_id=sure_he_is_new_5&metadata[shop]=1&metadata[test]=true` |\n\n### Reasons why a validation might fail\n\nVoucher validation might fail because of one of these reasons:\n\n* `voucher not found` - voucher doesn't exist or was [deleted](/api-reference/vouchers/delete-voucher)\n* `voucher expired` - voucher is out of [start date - expiration date] timeframe\n* `voucher is disabled` - learn more about [disabled vouchers](/api-reference/vouchers/disable-voucher)\n* `customer does not match segment rules` - learn more about [customer tracking](/api-reference/customers/customer-object)\n* `order does not match validation rules` - learn more about [validation rules](/api-reference/validations/validation-object)",
"parameters": [
{
"$ref": "#/components/parameters/origin"
@@ -100444,7 +100497,7 @@
"Client-side"
],
"summary": "Redeem Voucher (client-side)",
- "description": "\n> ❗️ Deprecated \n>\n> This endpoint represents the deprecated version of the API responsible for voucher redemption, and we do not recommend using it. The new [Stackable Discounts API](/api-reference/client-side/redeem-stackable-discounts-client-side) introduces additional features and improvements while maintaining backward compatibility, including applying a combination of coupon codes and promotion tiers. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint. \n\nTo redeem a voucher, you need to create a redemption object. It increments the redemption counter and updates the history of the voucher. This method is accessible through public keys, which you can use in client-side apps (mobile and web browser apps). \n\nThe client-side redemption works similar to the server-side [voucher redemption](/api-reference/redemptions/redeem-voucher) endpoint. The difference lies in the authorization. For the client-side, you can use client-side keys.\n\n\n> 📘 Opt-in \n>\n> By default this feature is disabled. If you want to use it, you will need to enable the function explicitly in **Project Settings**.\n\n\n> ❗️ Security Threat \n>\n> Be careful if you want to include the voucher redemption functionality directly on your client side (website or mobile app). In this configuration, there is a chance that discounts can be modified before being sent to the server.\n\n### Expand Response\nYou may expand the response by adding the following object to your request body. The expanded response will include the category details of the voucher.\n\n```json\n{\n \"options\": {\n \"expand\": [\n \"category\"\n ]\n }\n}\n```",
+ "description": "\n\n\nDeprecated\n\nThis endpoint represents the deprecated version of the API responsible for voucher redemption, and we do not recommend using it. The new [Stackable Discounts API](/api-reference/client-side/redeem-stackable-discounts-client-side) introduces additional features and improvements while maintaining backward compatibility, including applying a combination of coupon codes and promotion tiers. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint.\n\n\n\nTo redeem a voucher, you need to create a redemption object. It increments the redemption counter and updates the history of the voucher. This method is accessible through public keys, which you can use in client-side apps (mobile and web browser apps). \n\nThe client-side redemption works similar to the server-side [voucher redemption](/api-reference/redemptions/redeem-voucher) endpoint. The difference lies in the authorization. For the client-side, you can use client-side keys.\n\n\n\n\nOpt-in\n\nBy default this feature is disabled. If you want to use it, you will need to enable the function explicitly in **Project Settings**.\n\n\n\n\n\n\nSecurity Threat\n\nBe careful if you want to include the voucher redemption functionality directly on your client side (website or mobile app). In this configuration, there is a chance that discounts can be modified before being sent to the server.\n\n\n\n### Expand Response\nYou may expand the response by adding the following object to your request body. The expanded response will include the category details of the voucher.\n\n```json\n{\n \"options\": {\n \"expand\": [\n \"category\"\n ]\n }\n}\n```",
"parameters": [
{
"$ref": "#/components/parameters/origin"
@@ -101081,7 +101134,7 @@
"Client-side"
],
"summary": "Create Publication (client-side)",
- "description": "This method selects vouchers that are suitable for publication, adds a publish entry and returns the publication.\n\nA voucher is suitable for publication when it's active and hasn't been published yet. \n\n\n> 🚧 Clearly define the source of the voucher\n>\n> You must clearly define which source you want to publish the voucher code from. It can either be a code from a campaign or a specific voucher identified by a code. \n\n> 🚧 Publish multiple vouchers\n> In case you want to publish multiple vouchers within a single publication, you need to specify the campaign name and number of vouchers you want to publish. \n\n\n> 📘 Auto-update campaign\n>\n> In case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use an **auto-update** campaign.",
+ "description": "This method selects vouchers that are suitable for publication, adds a publish entry and returns the publication.\n\nA voucher is suitable for publication when it's active and hasn't been published yet. \n\n\n\n\nClearly define the source of the voucher\n\nYou must clearly define which source you want to publish the voucher code from. It can either be a code from a campaign or a specific voucher identified by a code.\n\n\n\n\n\nPublish multiple vouchers\n\nIn case you want to publish multiple vouchers within a single publication, you need to specify the campaign name and number of vouchers you want to publish.\n\n\n\n\n\n\nAuto-update campaign\n\nIn case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use an **auto-update** campaign.\n\n",
"parameters": [
{
"schema": {
diff --git a/reference/readonly-sdks/dotnet/OpenAPI.json b/reference/readonly-sdks/dotnet/OpenAPI.json
index 9922f8765..7bdd7abeb 100644
--- a/reference/readonly-sdks/dotnet/OpenAPI.json
+++ b/reference/readonly-sdks/dotnet/OpenAPI.json
@@ -52393,7 +52393,7 @@
"Publications"
],
"summary": "Create Publication with GET",
- "description": "This method selects vouchers that are suitable for publication, adds a publish entry and returns the publication.\nA voucher is suitable for publication when its active and hasnt been published yet.\n ❗️ Limited access\n Access to this endpoint is limited. This endpoint is designed for specific integrations and the API keys need to be configured to access this endpoint. Navigate to the **Dashboard** → **Project Settings** → **General** → **Integration Keys** to set up a pair of API keys and use them to send the request. \n 🚧 Clearly define the source of the voucher\n You must clearly define which source you want to publish the voucher code from. It can either be a code from a campaign or a specific voucher identified by a code. \n 🚧 Publish multiple vouchers\n This endpoint does not support the publishing of multiple vouchers from a single campaign. In case you want to publish multiple vouchers within a single publication, you need to use a [dedicated endpoint](/api-reference/publications/create-publication). \n 📘 Auto-update campaign\n In case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use an **auto-update** campaign. \n# Example Request \n \n ❗️ Required \n Query param voucher OR campaign MUST be filled out. If you provide both, campaign param will be skipped.",
+ "description": "This method selects vouchers that are suitable for publication, adds a publish entry and returns the publication.\nA voucher is suitable for publication when its active and hasnt been published yet.\n\nLimited access\nAccess to this endpoint is limited. This endpoint is designed for specific integrations and the API keys need to be configured to access this endpoint. Navigate to the **Dashboard** → **Project Settings** → **General** → **Integration Keys** to set up a pair of API keys and use them to send the request.\n\n\nClearly define the source of the voucher\nYou must clearly define which source you want to publish the voucher code from. It can either be a code from a campaign or a specific voucher identified by a code.\n\n\nPublish multiple vouchers\nThis endpoint does not support the publishing of multiple vouchers from a single campaign. In case you want to publish multiple vouchers within a single publication, you need to use a [dedicated endpoint](/api-reference/publications/create-publication).\n\n\nAuto-update campaign\nIn case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use an **auto-update** campaign.\n\n# Example Request \n \n\nRequired\nQuery param voucher OR campaign MUST be filled out. If you provide both, campaign param will be skipped.\n",
"parameters": [
{
"schema": {
@@ -52562,7 +52562,7 @@
"Qualifications"
],
"summary": "Check Eligibility",
- "description": "\n 🚧 The Qualifications endpoint ignores the rules checking:\n \n - Limit of total redeemed discount amount per campaign\n - Limit of total redemptions count per campaign\n - Redemptions per customer\n - Redemptions per customer in a campaign\n- Total amount before discount \nGenerate a list of redeemables that are applicable in the context of the customer and order.\nThe new qualifications method is an improved version of [Campaign Qualifications](/api-reference/campaigns/examine-campaign-qualification), [Voucher Qualifications](/api-reference/vouchers/examine-voucher-qualification) API requests. The new qualification method introduces the following improvements:\n- Qualification results are returned faster\n- No limit on the number of returned redeemables\n- Introduces new qualification scenarios, not available in the previous version\n 👍 Scenario Guide\n Read [the dedicated guide](/guides/checking-eligibility) to learn about some use cases this endpoint can cover.\n# Paging \nThe Voucherify Qualifications API request will return to you all of the redeemables available for the customer in batches of up to 50 redeemables per page. To get the next batch of redeemables, you need to use the starting_after cursor.\nTo process of paging the redeemables works in the following manner:\n- You send the first API request for Qualifications without the starting_after parameter.\n- The response will contain a parameter named has_more. If the parameters value is set to true, then more redeemables are available.\n- Get the value of the created_at parameter of the last returned redeemable. The value of this parameter will be used as a cursor to retrieve the next page of redeemables.\n- Send another API request for Qualification with the starting_after parameter set to the value taken from the created_at parameter from the last returned redeemable.\n- Voucherify will return the next page of redeemables.\n- If the has_more parameter is set to true, apply steps 3-5 to get the next page of redeemables.\n# Caching\nQualification has a 5-minute cache for the returned results. If you change your campaign settings or validation rules, the changes will apply to qualification results after the cache refreshes.",
+ "description": "\n\nThe Qualifications endpoint ignores the rules checking:\n- Limit of total redeemed discount amount per campaign\n- Limit of total redemptions count per campaign\n- Redemptions per customer\n- Redemptions per customer in a campaign\n- Total amount before discount\n\nGenerate a list of redeemables that are applicable in the context of the customer and order.\nThe new qualifications method is an improved version of [Campaign Qualifications](/api-reference/campaigns/examine-campaign-qualification), [Voucher Qualifications](/api-reference/vouchers/examine-voucher-qualification) API requests. The new qualification method introduces the following improvements:\n- Qualification results are returned faster\n- No limit on the number of returned redeemables\n- Introduces new qualification scenarios, not available in the previous version\n\nScenario Guide\nRead [the dedicated guide](/guides/checking-eligibility) to learn about some use cases this endpoint can cover.\n\n# Paging \nThe Voucherify Qualifications API request will return to you all of the redeemables available for the customer in batches of up to 50 redeemables per page. To get the next batch of redeemables, you need to use the starting_after cursor.\nTo process of paging the redeemables works in the following manner:\n- You send the first API request for Qualifications without the starting_after parameter.\n- The response will contain a parameter named has_more. If the parameters value is set to true, then more redeemables are available.\n- Get the value of the created_at parameter of the last returned redeemable. The value of this parameter will be used as a cursor to retrieve the next page of redeemables.\n- Send another API request for Qualification with the starting_after parameter set to the value taken from the created_at parameter from the last returned redeemable.\n- Voucherify will return the next page of redeemables.\n- If the has_more parameter is set to true, apply steps 3-5 to get the next page of redeemables.\n# Caching\nQualification has a 5-minute cache for the returned results. If you change your campaign settings or validation rules, the changes will apply to qualification results after the cache refreshes.",
"parameters": [],
"security": [
{
@@ -54125,7 +54125,7 @@
"Redemptions"
],
"summary": "Redeem Stackable Discounts",
- "description": "In the table below, you can see the logic the API follows to calculate discounts and amounts:\n\n\nAPI keys with a Merchant role cant use this endpoint.\n 📘 Rollbacks\n You cant roll back a child redemption. When you call rollback on a stacked redemption, all child redemptions will be rolled back. You need to refer to a parent redemption ID in your [rollback request](/api-reference/redemptions/rollback-stackable-redemptions). \n 📘 Also available on client-side\n This method is also accessible through public keys which you can use in client-side apps: mobile and web browser apps. Go to the dedicated [endpoint](/api-reference/client-side/redeem-stackable-discounts-client-side) to learn more.",
+ "description": "In the table below, you can see the logic the API follows to calculate discounts and amounts:\n\n\nAPI keys with a Merchant role cant use this endpoint.\n\nRollbacks\nYou cant roll back a child redemption. When you call rollback on a stacked redemption, all child redemptions will be rolled back. You need to refer to a parent redemption ID in your [rollback request](/api-reference/redemptions/rollback-stackable-redemptions).\n\n\nAlso available on client-side\nThis method is also accessible through public keys which you can use in client-side apps: mobile and web browser apps. Go to the dedicated [endpoint](/api-reference/client-side/redeem-stackable-discounts-client-side) to learn more.\n",
"parameters": [],
"security": [
{
@@ -54473,7 +54473,7 @@
"Vouchers"
],
"summary": "Generate Random Code",
- "description": "Create a generic (standalone) vouchers. You can choose to create a GIFT_VOUCHER, a DISCOUNT_VOUCHER, or a LOYALTY_CARD. \nWhen you create a new voucher, you can specify a type to create it.\nCreating a new voucher will create a new generic (standalone) vouchers if no campaign name or campaign_id is provided. However, if an ID or name of a campaign with the type set to STANDALONE is provided, the voucher will be added to such campaign. In case of the loyalty card, a campaign name is required.\nYou can optionally use the code parameter to define a specific code or the code_config parameter to design rules for Voucherify API to create a random code. If neither of the two parameters are passed, then a random code is generated by the Voucherify API.\nThis method will return an error when trying to create a voucher that already exists.\n🚧 Standalone Vouchers and Campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. The vouchers created with POST Create voucher and POST Generate random code endpoints do not have a campaign attached, so the values for campaign and campaign_id are null.\nTo create a generic (standalone) voucher with a type: STANDALONE, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.",
+ "description": "Create a generic (standalone) vouchers. You can choose to create a GIFT_VOUCHER, a DISCOUNT_VOUCHER, or a LOYALTY_CARD. \nWhen you create a new voucher, you can specify a type to create it.\nCreating a new voucher will create a new generic (standalone) vouchers if no campaign name or campaign_id is provided. However, if an ID or name of a campaign with the type set to STANDALONE is provided, the voucher will be added to such campaign. In case of the loyalty card, a campaign name is required.\nYou can optionally use the code parameter to define a specific code or the code_config parameter to design rules for Voucherify API to create a random code. If neither of the two parameters are passed, then a random code is generated by the Voucherify API.\nThis method will return an error when trying to create a voucher that already exists.\n\nStandalone Vouchers and Campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. The vouchers created with POST Create voucher and POST Generate random code endpoints do not have a campaign attached, so the values for campaign and campaign_id are null.\nTo create a generic (standalone) voucher with a type: STANDALONE, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.\n",
"parameters": [],
"security": [
{
@@ -56112,7 +56112,7 @@
"Vouchers"
],
"summary": "Create Voucher",
- "description": "Create a generic (standalone) voucher or a voucher in a campaign. You can choose to create a GIFT_VOUCHER, a DISCOUNT_VOUCHER, or a LOYALTY_CARD. The code path parameter can use all letters of the English alphabet, Arabic numerals and special characters.\nWhen you create a new voucher, you can specify a type to create it.\nIf no campaign name or campaign_id is provided, the new voucher will be a generic (standalone) one. However, if an ID or name of a campaign with the type set to STANDALONE is provided, the voucher will be added to this campaign. For a loyalty card, a campaign name or ID is required.\n🚧 Standalone Vouchers and Campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers created through The vouchers created with POST Create voucher and POST Generate random code endpoints do not have a campaign attached, so the values for campaign and campaign_id are null.\nTo create a generic (standalone) voucher with a type: STANDALONE, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.",
+ "description": "Create a generic (standalone) voucher or a voucher in a campaign. You can choose to create a GIFT_VOUCHER, a DISCOUNT_VOUCHER, or a LOYALTY_CARD. The code path parameter can use all letters of the English alphabet, Arabic numerals and special characters.\nWhen you create a new voucher, you can specify a type to create it.\nIf no campaign name or campaign_id is provided, the new voucher will be a generic (standalone) one. However, if an ID or name of a campaign with the type set to STANDALONE is provided, the voucher will be added to this campaign. For a loyalty card, a campaign name or ID is required.\n\nStandalone Vouchers and Campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers created through The vouchers created with POST Create voucher and POST Generate random code endpoints do not have a campaign attached, so the values for campaign and campaign_id are null.\nTo create a generic (standalone) voucher with a type: STANDALONE, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.\n",
"parameters": [],
"security": [
{
@@ -56624,7 +56624,7 @@
"Vouchers"
],
"summary": "Enable Voucher",
- "description": "There are various times when youll want to manage a vouchers accessibility. This can be done by two API methods for managing the voucher state - *enable* and *disable*. \n___\nThe method sets the voucher state to **active**. The voucher can be redeemed - only if the redemption occurs after the start date and the voucher is not expired.",
+ "description": "The method sets the voucher state to **active**. The voucher can be redeemed - only if the redemption occurs after the start date and the voucher is not expired.",
"parameters": [],
"security": [
{
@@ -56735,7 +56735,7 @@
"Vouchers"
],
"summary": "Disable Voucher",
- "description": "There are various times when youll want to manage a vouchers accessibility. This can be done by two API methods for managing the voucher state - *enable* and *disable*. \n___\nThis method sets the voucher state to **inactive**. The voucher cannot be redeemed.",
+ "description": "This method sets the voucher state to **inactive**. The voucher cannot be redeemed.",
"parameters": [],
"security": [
{
@@ -57345,7 +57345,7 @@
"Vouchers"
],
"summary": "Import Vouchers",
- "description": "Import generic (standalone) vouchers and gift cards into the repository.\nYou can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. \n Also, the request can include up to **10 MB** of data.\n 📘 Important notes\n - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z.\n - Custom code attributes (not supported by-default) need to be added as code **metadata**.\n - You **cannot import the same codes** to a single Voucherify Project.\nAny parameters not provided in the payload will be left blank or null.\nFor both **standalone discount vouchers and gift cards**, you can import the following fields: \n- code\n- category\n- active\n- type\n- start_date\n- expiration_date\n- redemption.quantity\n- additional_info\n- metadata\nFor **gift cards**, you can also import the following field:\n- gift.amount\nFor **discount vouchers**, you can import the discount object. The object will slightly vary depending on the type of discount. Each discount type **requires** the type to be defined in the import.\n\n\nFields other than the ones listed above wont be imported. Even if provided, they will be silently skipped.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).\n🚧 Standalone Vouchers and Campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers imported through the dashboard in the Vouchers section or through the API do not have a campaign attached, so the values for campaign and campaign_id are null.\nTo create a generic (standalone) voucher with a type: STANDALONE, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.",
+ "description": "Import generic (standalone) vouchers and gift cards into the repository.\nYou can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. \n Also, the request can include up to **10 MB** of data.\n\nImportant notes\n- **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z.\n- Custom code attributes (not supported by-default) need to be added as code **metadata**.\n- You **cannot import the same codes** to a single Voucherify Project.\n\nAny parameters not provided in the payload will be left blank or null.\nFor both **standalone discount vouchers and gift cards**, you can import the following fields: \n- code\n- category\n- active\n- type\n- start_date\n- expiration_date\n- redemption.quantity\n- additional_info\n- metadata\nFor **gift cards**, you can also import the following field:\n- gift.amount\nFor **discount vouchers**, you can import the discount object. The object will slightly vary depending on the type of discount. Each discount type **requires** the type to be defined in the import.\n\n\nFields other than the ones listed above wont be imported. Even if provided, they will be silently skipped.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).\n\nStandalone Vouchers and Campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers imported through the dashboard in the Vouchers section or through the API do not have a campaign attached, so the values for campaign and campaign_id are null.\nTo create a generic (standalone) voucher with a type: STANDALONE, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.\n",
"parameters": [],
"security": [
{
@@ -57622,7 +57622,7 @@
"Vouchers"
],
"summary": "Import Vouchers using CSV",
- "description": "Import generic (standalone) vouchers into the repository using a CSV file.\nThe CSV file has to include headers in the first line. All properties listed in the file headers that cannot be mapped to standard voucher fields will be added to the metadata object.\nYou can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. \n Also, the request can include a max. **10 MB** CSV file.\nYou can find an example CSV file [here](/build/discount-code-import).\n___\n 📘 Standard voucher fields mapping\n - Go to the [import vouchers](/api-reference/vouchers/import-vouchers) endpoint to see all standard CSV fields description (body params section).\n - Supported CSV file headers: Code,Voucher Type,Value,Discount Type,Category,Start Date,Expiration Date,Redemption Limit,Redeemed Quantity, Redeemed Amount,Active,Additional Info,Custom Metadata Property Name\n- **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. \n - YYYY-MM-DD\n - YYYY-MM-DDTHH\n - YYYY-MM-DDTHH:mm\n - YYYY-MM-DDTHH:mm:ss\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ss.SSSZ\n - Custom code attributes (not supported by-default) need to be added as code **metadata**.\n - You **cannot import the same codes** to a single Voucherify project.\n - You can, however, upload the same codes to update them.\n 📘 Categories\n In the structure representing your data, you can define a category that the voucher belongs to. You can later use the category of a voucher to group and search by specific criteria in the Dashboard and using the [List Vouchers](/api-reference/vouchers/list-vouchers) endpoint.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).\nYou can pass the webhooks_enable true parameter to trigger a webhook sendout for created or updated vouchers. Configure the [respective webhooks](/api-reference/introduction-to-webhooks) in Project settings. For updated webhooks, a webhook is sent even if the voucher hasnt been changed in the CSV file.\n🚧 Generic (standalone) vouchers and campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers imported through the dashboard in the Vouchers section or through the API do not have a campaign attached, so the values for campaign and campaign_id are null.",
+ "description": "Import generic (standalone) vouchers into the repository using a CSV file.\nThe CSV file has to include headers in the first line. All properties listed in the file headers that cannot be mapped to standard voucher fields will be added to the metadata object.\nYou can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. \n Also, the request can include a max. **10 MB** CSV file.\nYou can find an example CSV file [here](/build/discount-code-import).\n___\n\nStandard voucher fields mapping\n- Go to the [import vouchers](/api-reference/vouchers/import-vouchers) endpoint to see all standard CSV fields description (body params section).\n- Supported CSV file headers: Code,Voucher Type,Value,Discount Type,Category,Start Date,Expiration Date,Redemption Limit,Redeemed Quantity, Redeemed Amount,Active,Additional Info,Custom Metadata Property Name\n- **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z.\n - YYYY-MM-DD\n - YYYY-MM-DDTHH\n - YYYY-MM-DDTHH:mm\n - YYYY-MM-DDTHH:mm:ss\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ss.SSSZ\n- Custom code attributes (not supported by-default) need to be added as code **metadata**.\n- You **cannot import the same codes** to a single Voucherify project.\n- You can, however, upload the same codes to update them.\n\n\nCategories\nIn the structure representing your data, you can define a category that the voucher belongs to. You can later use the category of a voucher to group and search by specific criteria in the Dashboard and using the [List Vouchers](/api-reference/vouchers/list-vouchers) endpoint.\n\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).\nYou can pass the webhooks_enable true parameter to trigger a webhook sendout for created or updated vouchers. Configure the [respective webhooks](/api-reference/introduction-to-webhooks) in Project settings. For updated webhooks, a webhook is sent even if the voucher hasnt been changed in the CSV file.\n\nGeneric (standalone) vouchers and campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers imported through the dashboard in the Vouchers section or through the API do not have a campaign attached, so the values for campaign and campaign_id are null.\n",
"parameters": [],
"security": [
{
@@ -57673,7 +57673,7 @@
"Vouchers"
],
"summary": "Update Vouchers in Bulk",
- "description": "Updates specific metadata parameters for each code, respectively, in one asynchronous operation.\nThe request can include up to **10 MB** of data.\nUpserts are not supported.\n 🚧 Currently, only **metadata** updates are supported.\nThe response returns a unique asynchronous action ID. Use this ID in the query paramater of the [GET Async Action](/api-reference/async-actions/get-async-action) endpoint to check, e.g.:\n- The status of your request (in queue, in progress, done, or failed)\n- Resources that failed to be updated\n- The report file with details about the update\nThis API request starts a process that affects Voucherify data in bulk. In the case of small jobs (like bulk update), the request is put into a queue and processed when every other bulk request placed in the queue prior to this request is finished.",
+ "description": "Updates specific metadata parameters for each code, respectively, in one asynchronous operation.\nThe request can include up to **10 MB** of data.\nUpserts are not supported.\n\nCurrently, only **metadata** updates are supported.\n\nThe response returns a unique asynchronous action ID. Use this ID in the query paramater of the [GET Async Action](/api-reference/async-actions/get-async-action) endpoint to check, e.g.:\n- The status of your request (in queue, in progress, done, or failed)\n- Resources that failed to be updated\n- The report file with details about the update\nThis API request starts a process that affects Voucherify data in bulk. In the case of small jobs (like bulk update), the request is put into a queue and processed when every other bulk request placed in the queue prior to this request is finished.",
"parameters": [],
"security": [
{
@@ -57831,7 +57831,7 @@
"Vouchers"
],
"summary": "Release Validation Session",
- "description": "Manually release a validation session that has been set up for the voucher. This method undoes the actions that are explained in the [Locking validation session](/guides/locking-validation-session) guide. \n 📘 Release session in the Dashboard\n You can also use the [Validations Manager](/optimize/validations-and-redemptions#sessions) in the Dashboard to unlock sessions.",
+ "description": "Manually release a validation session that has been set up for the voucher. This method undoes the actions that are explained in the [Locking validation session](/guides/locking-validation-session) guide. \n\nRelease session in the Dashboard\nYou can also use the [Validations Manager](/optimize/validations-and-redemptions#sessions) in the Dashboard to unlock sessions.\n",
"parameters": [],
"security": [
{
@@ -57857,7 +57857,7 @@
"Campaigns"
],
"summary": "Create Campaign",
- "description": "Method to create a batch of vouchers aggregated in one campaign. You can choose a variety of voucher types and define a unique pattern for generating codes. \n 📘 Global uniqueness\n All campaign codes are unique across the whole project. Voucherify will not allow you to generate 2 campaigns with the same coupon code. \n 🚧 Code generation status\n This is an asynchronous action; you cant read or modify a newly created campaign until the code generation is completed. See the creation_status field in the [campaign object](/api-reference/campaigns/campaign-object) description.",
+ "description": "Method to create a batch of vouchers aggregated in one campaign. You can choose a variety of voucher types and define a unique pattern for generating codes. \n\nGlobal uniqueness\nAll campaign codes are unique across the whole project. Voucherify will not allow you to generate 2 campaigns with the same coupon code.\n\n\nCode generation status\nThis is an asynchronous action; you cant read or modify a newly created campaign until the code generation is completed. See the creation_status field in the [campaign object](/api-reference/campaigns/campaign-object) description.\n",
"parameters": [],
"security": [
{
@@ -59091,7 +59091,7 @@
"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. \nFields other than the ones listed in the request body wont be modified. Even if provided, they will be silently skipped. \n 🚧 Vouchers will be affected\n This method will update vouchers aggregated in the campaign. It will affect all vouchers that are not published or redeemed yet.",
+ "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. \nFields other than the ones listed in the request body wont be modified. Even if provided, they will be silently skipped. \n\nVouchers will be affected\nThis method will update vouchers aggregated in the campaign. It will affect all vouchers that are not published or redeemed yet.\n",
"parameters": [],
"security": [
{
@@ -59731,7 +59731,7 @@
"Campaigns"
],
"summary": "Enable Campaign",
- "description": "There are various times when youll want to manage a campaigns accessibility. This can be done by two API methods for managing the campaign state - *enable* and *disable*. \nSets campaign state to **active**. The vouchers in this campaign can be redeemed - only if the redemption occurs after the start date of the campaign and voucher and the voucher and campaign are not expired.",
+ "description": "Sets campaign state to **active**. The vouchers in this campaign can be redeemed - only if the redemption occurs after the start date of the campaign and voucher and the voucher and campaign are not expired.",
"parameters": [],
"security": [
{
@@ -59780,7 +59780,7 @@
"Campaigns"
],
"summary": "Disable Campaign",
- "description": "There are various times when youll want to manage a campaigns accessibility. This can be done by two API methods for managing the campaign state - *enable* and *disable*. \nSets campaign state to **inactive**. The vouchers in this campaign can no longer be redeemed.",
+ "description": "Sets campaign state to **inactive**. The vouchers in this campaign can no longer be redeemed.",
"parameters": [],
"security": [
{
@@ -59829,7 +59829,7 @@
"Campaigns"
],
"summary": "List Campaign Transactions",
- "description": "Retrieves all transactions for the campaign with the given campaign ID or campaign name. The id filter denotes the unique transaction identifier.\n 🚧\n The endpoint works only for gift card and loyalty campaigns.",
+ "description": "Retrieves all transactions for the campaign with the given campaign ID or campaign name. The id filter denotes the unique transaction identifier.\n\nThe endpoint works only for gift card and loyalty campaigns.\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -59991,7 +59991,7 @@
}
],
"summary": "Export Campaign Transactions",
- "description": "Export transactions is an asynchronous process that generates a CSV file with the data about credit movements on all gift cards or point movements on all loyalty cards in a given campaign.\nTo export transactions:\n1. In the export request, use parameters to select which fields will be exported, in what order, and which data will be filtered.\n2. Use the returned id to track the export status with the [GET Export](/api-reference/exports/get-export) method.\n3. In the GET Export method, when the returned status field has the DONE value, the export file has been generated.\n4. Use the URL in the result property to download the file. You must be logged to your Voucherify account on a given cluster in the browser to be able to download the file.\nAn export request will almost always result in a single file being generated by the system. However, when the data volume is large, the system may split the results into multiple files.\nAn example export file can look as follows:\n\n\n 👍 Export Loyalty Campaign Transactions\n For loyalty campaigns, this method works in the same way the [POST Export Loyalty Campaign Transactions](/api-reference/loyalties/export-loyalty-campaign-transactions) does.",
+ "description": "Export transactions is an asynchronous process that generates a CSV file with the data about credit movements on all gift cards or point movements on all loyalty cards in a given campaign.\nTo export transactions:\n1. In the export request, use parameters to select which fields will be exported, in what order, and which data will be filtered.\n2. Use the returned id to track the export status with the [GET Export](/api-reference/exports/get-export) method.\n3. In the GET Export method, when the returned status field has the DONE value, the export file has been generated.\n4. Use the URL in the result property to download the file. You must be logged to your Voucherify account on a given cluster in the browser to be able to download the file.\nAn export request will almost always result in a single file being generated by the system. However, when the data volume is large, the system may split the results into multiple files.\nAn example export file can look as follows:\n\n\n\nExport Loyalty Campaign Transactions\nFor loyalty campaigns, this method works in the same way the [POST Export Loyalty Campaign Transactions](/api-reference/loyalties/export-loyalty-campaign-transactions) does.\n",
"requestBody": {
"description": "Specify the parameters for the transaction export.",
"content": {
@@ -60121,7 +60121,7 @@
"Campaigns"
],
"summary": "Get Campaign Summary",
- "description": "Returns data for campaign analytics, covering validations, redemptions, publications, and other details specific to a given campaign type.\nUse start_date and end_date to narrow down the data to specific periods.\n🚧 Campaigns created before 17 June 2025\nThis endpoint returns analytics data for campaigns that were created after 17 June 2025. Older campaigns return empty data.",
+ "description": "Returns data for campaign analytics, covering validations, redemptions, publications, and other details specific to a given campaign type.\nUse start_date and end_date to narrow down the data to specific periods.\n\nCampaigns created before 17 June 2025\nThis endpoint returns analytics data for campaigns that were created after 17 June 2025. Older campaigns return empty data.\n",
"parameters": [
{
"name": "start_date",
@@ -62530,7 +62530,7 @@
"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.\n# Pagination\n 🚧 Important!\n 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.\n# Filter Query\nThe filters query parameter allows for joining multiple parameters with logical operators. The syntax looks as follows:\n\n## Examples\n\n",
+ "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.\n# Pagination\n\nImportant!\nIf 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.\n\n# Filter Query\nThe filters query parameter allows for joining multiple parameters with logical operators. The syntax looks as follows:\n\n## Examples\n\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -62761,7 +62761,7 @@
"Publications"
],
"summary": "Create Publication",
- "description": "This method selects vouchers that are suitable for publication, adds a publish entry and returns the publication.\nA voucher is suitable for publication when its active and hasnt been published yet. \n 🚧 Clearly define the source of the voucher\n You must clearly define which source you want to publish the voucher code from. It can either be a code from a campaign or a specific voucher identified by a code. \n 🚧 Publish multiple vouchers\n In case you want to publish multiple vouchers within a single publication, you need to specify the campaign name and number of vouchers you want to publish. \n 📘 Auto-update campaign\n In case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use an **auto-update** campaign.",
+ "description": "This method selects vouchers that are suitable for publication, adds a publish entry and returns the publication.\nA voucher is suitable for publication when its active and hasnt been published yet. \n\nClearly define the source of the voucher\nYou must clearly define which source you want to publish the voucher code from. It can either be a code from a campaign or a specific voucher identified by a code.\n\n\nPublish multiple vouchers\nIn case you want to publish multiple vouchers within a single publication, you need to specify the campaign name and number of vouchers you want to publish.\n\n\nAuto-update campaign\nIn case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use an **auto-update** campaign.\n",
"parameters": [
{
"schema": {
@@ -64916,7 +64916,7 @@
"Redemptions"
],
"summary": "Rollback Redemption",
- "description": "Your business logic may include a case when you need to undo a redemption. You can revert a redemption by calling this API endpoint. This endpoint rolls back only single redemptions, meaning those that are not stacked. Stacked redemptions belong to a parent redemption. To roll back a parent redemption, including all of its individual redemptions, use the [POST Rollback Stackable Redemptions](/api-reference/redemptions/rollback-stackable-redemptions) \n🚧 \nYou can roll back a redemption up to 3 months back. \n # Effect \nThe operation \n- creates a rollback entry in vouchers redemption history (redemption.redemption_entries) and \n- gives 1 redemption back to the pool (decreases redeemed_quantity by 1). \n# Returned funds \nIn case of *gift card vouchers*, this method returns funds back according to the source redemption. In case of *loyalty card vouchers*, this method returns points back according to the source redemption.",
+ "description": "Your business logic may include a case when you need to undo a redemption. You can revert a redemption by calling this API endpoint. This endpoint rolls back only single redemptions, meaning those that are not stacked. Stacked redemptions belong to a parent redemption. To roll back a parent redemption, including all of its individual redemptions, use the [POST Rollback Stackable Redemptions](/api-reference/redemptions/rollback-stackable-redemptions) \n\nYou can roll back a redemption up to 3 months back.\n\n # Effect \nThe operation \n- creates a rollback entry in vouchers redemption history (redemption.redemption_entries) and \n- gives 1 redemption back to the pool (decreases redeemed_quantity by 1). \n# Returned funds \nIn case of *gift card vouchers*, this method returns funds back according to the source redemption. In case of *loyalty card vouchers*, this method returns points back according to the source redemption.",
"parameters": [
{
"schema": {
@@ -65608,7 +65608,7 @@
"Redemptions"
],
"summary": "Rollback Stackable Redemptions",
- "description": "Rollback a stackable redemption. When you roll back a stacked redemption, all child redemptions will be rolled back. Provide the parent redemption ID as the path parameter. However, you can use this endpoint to roll back a single redemption that does not have a parent, similarly to [POST Rollback redemption](/api-reference/redemptions/rollback-redemption).\n🚧 \n You can roll back a redemption up to 3 months back.",
+ "description": "Rollback a stackable redemption. When you roll back a stacked redemption, all child redemptions will be rolled back. Provide the parent redemption ID as the path parameter. However, you can use this endpoint to roll back a single redemption that does not have a parent, similarly to [POST Rollback redemption](/api-reference/redemptions/rollback-redemption).\n\nYou can roll back a redemption up to 3 months back.\n",
"parameters": [
{
"schema": {
@@ -65698,11 +65698,12 @@
"/v1/loyalties": {
"get": {
"operationId": "list-loyalty-programs",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Campaigns",
- "description": "Returns a list of your loyalty campaigns.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nReturns a list of your loyalty campaigns.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -65917,11 +65918,12 @@
},
"post": {
"operationId": "create-loyalty-program",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Create Loyalty Campaign",
- "description": "Creates a batch of [loyalty cards](/api-reference/loyalties/get-member) aggregated in a single loyalty campaign. It also allows you to define a custom codes pattern. \n 📘 Global uniqueness\n All codes are unique across the whole project. Voucherify wont allow to generate the same codes in any of your campaigns.\n 🚧 Asynchronous action!\n This is an asynchronous action, you cant read or modify a newly created campaign until the code generation is completed. See creation_status field in the [loyalty campaign object](/api-reference/loyalties/loyalty-campaign-object) description.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nCreates a batch of [loyalty cards](/api-reference/loyalties/get-member) aggregated in a single loyalty campaign. It also allows you to define a custom codes pattern. \n\nGlobal uniqueness\nAll codes are unique across the whole project. Voucherify wont allow to generate the same codes in any of your campaigns.\n\n\nAsynchronous action!\nThis is an asynchronous action, you cant read or modify a newly created campaign until the code generation is completed. See creation_status field in the [loyalty campaign object](/api-reference/loyalties/loyalty-campaign-object) description.\n",
"parameters": [],
"security": [
{
@@ -66131,11 +66133,12 @@
],
"get": {
"operationId": "get-loyalty-program",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Loyalty Campaign",
- "description": "Retrieve a specific loyalty campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve a specific loyalty campaign.",
"parameters": [],
"security": [
{
@@ -66242,11 +66245,12 @@
},
"put": {
"operationId": "update-loyalty-program",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Update Loyalty Campaign",
- "description": "Updates a loyalty program. \nFields other than those specified in the allowed request body payload wont be modified (even if provided they are silently skipped). Any parameters not provided will be left unchanged. \nThis method will update the [loyalty cards](/api-reference/loyalties/get-member) which have not been published or redeemed yet.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nUpdates a loyalty program. \nFields other than those specified in the allowed request body payload wont be modified (even if provided they are silently skipped). Any parameters not provided will be left unchanged. \nThis method will update the [loyalty cards](/api-reference/loyalties/get-member) which have not been published or redeemed yet.",
"parameters": [],
"security": [
{
@@ -66437,11 +66441,12 @@
},
"delete": {
"operationId": "delete-loyalty-program",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Delete Loyalty Campaign",
- "description": "Deletes a loyalty campaign and all related loyalty cards. This action cannot be undone. Also, it immediately removes any redemptions on loyalty cards.\nIf the force parameter is set to false or not set at all, the loyalty campaign and all related loyalty cards will be moved to [the bin](/api-reference/bin/list-bin-entries).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nDeletes a loyalty campaign and all related loyalty cards. This action cannot be undone. Also, it immediately removes any redemptions on loyalty cards.\nIf the force parameter is set to false or not set at all, the loyalty campaign and all related loyalty cards will be moved to [the bin](/api-reference/bin/list-bin-entries).",
"parameters": [
{
"schema": {
@@ -66497,11 +66502,12 @@
],
"get": {
"operationId": "list-members",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Members",
- "description": "Returns a list of your loyalty cards. The loyalty cards are sorted by creation date, with the most recent loyalty cards appearing first.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nReturns a list of your loyalty cards. The loyalty cards are sorted by creation date, with the most recent loyalty cards appearing first.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -66676,11 +66682,12 @@
},
"post": {
"operationId": "add-member",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Add Member",
- "description": "This method assigns a loyalty card to a customer. It selects a [loyalty card](/api-reference/vouchers/get-voucher) suitable for publication, adds a publish entry, and returns the published voucher. \nA voucher is suitable for publication when its active and hasnt been published yet. \n 📘 Auto-update campaign\n In case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use **auto-update** campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nThis method assigns a loyalty card to a customer. It selects a [loyalty card](/api-reference/vouchers/get-voucher) suitable for publication, adds a publish entry, and returns the published voucher. \nA voucher is suitable for publication when its active and hasnt been published yet. \n\nAuto-update campaign\nIn case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use **auto-update** campaign.\n",
"parameters": [],
"security": [
{
@@ -66850,11 +66857,12 @@
],
"get": {
"operationId": "get-member-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Member with campaign ID",
- "description": "Retrieves the loyalty card with the given member ID (i.e. voucher code).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieves the loyalty card with the given member ID (i.e. voucher code).",
"parameters": [],
"security": [
{
@@ -66950,11 +66958,12 @@
],
"get": {
"operationId": "get-member",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Member",
- "description": "Retrieve loyalty card with the given member ID (i.e. voucher code). \n 📘 Alternative endpoint\n This endpoint is an alternative to this [endpoint](/api-reference/loyalties/get-member-with-campaign-id). The URL was re-designed to allow you to retrieve loyalty card details without having to provide the campaignId as a path parameter.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve loyalty card with the given member ID (i.e. voucher code). \n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/get-member-with-campaign-id). The URL was re-designed to allow you to retrieve loyalty card details without having to provide the campaignId as a path parameter.\n",
"parameters": [],
"security": [
{
@@ -67050,11 +67059,12 @@
],
"get": {
"operationId": "list-campaign-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Campaign Pending Points",
- "description": "Lists all pending points that are currently assigned to all loyalty cards in a campaign. Once the points are added to the card, the entry is no longer returned.\n👍 Configuring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nLists all pending points that are currently assigned to all loyalty cards in a campaign. Once the points are added to the card, the entry is no longer returned.\n\nConfiguring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n",
"parameters": [
{
"schema": {
@@ -67262,11 +67272,12 @@
],
"get": {
"operationId": "list-member-pending-points-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Pending Points with campaign ID",
- "description": "Lists all pending points that are currently assigned to the loyalty card. Once the points are added to the card, the entry is no longer returned.\n👍 Configuring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nLists all pending points that are currently assigned to the loyalty card. Once the points are added to the card, the entry is no longer returned.\n\nConfiguring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n",
"parameters": [
{
"schema": {
@@ -67465,11 +67476,12 @@
],
"get": {
"operationId": "list-member-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Pending Points",
- "description": "\n 📘 Alternative endpoint\n This endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-member-pending-points-with-campaign-id). The URL was re-designed to list member pending points without having to provide the campaignId as a path parameter.\nLists all pending points that are currently assigned to the loyalty card. Once the points are added to the card, the entry is no longer returned.\n👍 Configuring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-member-pending-points-with-campaign-id). The URL was re-designed to list member pending points without having to provide the campaignId as a path parameter.\n\nLists all pending points that are currently assigned to the loyalty card. Once the points are added to the card, the entry is no longer returned.\n\nConfiguring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n",
"parameters": [
{
"schema": {
@@ -67677,11 +67689,12 @@
],
"post": {
"operationId": "activate-member-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Activate Member Pending Points",
- "description": "Activate manually the pending points and add them to the loyalty card. The pending points are determined by the pending point ID.\nOnce activated, the pending point entry with that ID is not listed by the endpoints: List member ([with campaign ID](/api-reference/loyalties/list-member-pending-points-with-campaign-id), [without campaign ID](/api-reference/loyalties/list-member-pending-points)), [List campaign pending points](/api-reference/loyalties/list-campaign-pending-points).\nThis **POST** method does not require a request body.\n👍 Configuring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nActivate manually the pending points and add them to the loyalty card. The pending points are determined by the pending point ID.\nOnce activated, the pending point entry with that ID is not listed by the endpoints: List member ([with campaign ID](/api-reference/loyalties/list-member-pending-points-with-campaign-id), [without campaign ID](/api-reference/loyalties/list-member-pending-points)), [List campaign pending points](/api-reference/loyalties/list-campaign-pending-points).\nThis **POST** method does not require a request body.\n\nConfiguring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n",
"parameters": [],
"security": [
{
@@ -67746,11 +67759,12 @@
],
"post": {
"operationId": "adjust-member-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Adjust Member Pending Points",
- "description": "Adjusts the pending points with a given ID. You can add or subtract the number of points.\n👍 Configuring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nAdjusts the pending points with a given ID. You can add or subtract the number of points.\n\nConfiguring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n",
"parameters": [],
"security": [
{
@@ -67836,11 +67850,12 @@
],
"post": {
"operationId": "cancel-member-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Cancel Member Pending Points",
- "description": "Cancel manually the pending points for the loyalty card. The pending points are determined by the pending point ID.\nOnce canceled, the pending point entry with that ID is not listed by the endpoints: List member ([with campaign ID](/api-reference/loyalties/list-member-pending-points-with-campaign-id), [without campaign ID](/api-reference/loyalties/list-member-pending-points)), [List campaign pending points](/api-reference/loyalties/list-campaign-pending-points).\nThis **POST** method does not require a request body and it returns an empty, 204, response.\n👍 Configuring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nCancel manually the pending points for the loyalty card. The pending points are determined by the pending point ID.\nOnce canceled, the pending point entry with that ID is not listed by the endpoints: List member ([with campaign ID](/api-reference/loyalties/list-member-pending-points-with-campaign-id), [without campaign ID](/api-reference/loyalties/list-member-pending-points)), [List campaign pending points](/api-reference/loyalties/list-campaign-pending-points).\nThis **POST** method does not require a request body and it returns an empty, 204, response.\n\nConfiguring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n",
"parameters": [],
"security": [
{
@@ -67882,11 +67897,12 @@
],
"get": {
"operationId": "list-member-activity-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Activity with campaign ID",
- "description": "Retrieves the list of activities for the given member ID related to a voucher and customer who is the holder of the voucher.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieves the list of activities for the given member ID related to a voucher and customer who is the holder of the voucher.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -67946,11 +67962,12 @@
],
"get": {
"operationId": "list-member-activity",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Activity",
- "description": "\n 📘 Alternative endpoint\n This endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-member-activity-with-campaign-id). The URL was re-designed to allow you to get member activities without having to provide the campaignId as a path parameter.\nRetrieves the list of activities for the given member ID related to a voucher and customer who is the holder of the voucher.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-member-activity-with-campaign-id). The URL was re-designed to allow you to get member activities without having to provide the campaignId as a path parameter.\n\nRetrieves the list of activities for the given member ID related to a voucher and customer who is the holder of the voucher.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -68019,11 +68036,12 @@
],
"post": {
"operationId": "update-loyalty-card-balance-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Adjust Loyalty Card Balance with campaign ID",
- "description": "This method adds or removes balance to an existing loyalty card that is assigned to a holder. The removal of points will consume the points that expire the soonest. \n >🚧 Async Action\n \n This is an async action. If you want to perform several add or remove loyalty card balance actions in a short time and their order matters, set up sufficient time-out between the calls.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nThis method adds or removes balance to an existing loyalty card that is assigned to a holder. The removal of points will consume the points that expire the soonest. \n \nAsync Action\nThis is an async action. If you want to perform several add or remove loyalty card balance actions in a short time and their order matters, set up sufficient time-out between the calls.\n",
"parameters": [],
"security": [
{
@@ -68116,11 +68134,12 @@
],
"post": {
"operationId": "update-loyalty-card-balance",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Adjust Loyalty Card Balance",
- "description": "This method gives adds or removes balance to an existing loyalty card that is assigned to a holder. The removal of points will consume the points that expire the soonest. \n >🚧 Async Action\n \n This is an async action. If you want to perform several add or remove loyalty card balance actions in a short time and their order matters, set up sufficient time-out between the calls.\n 📘 Alternative endpoint\n This endpoint is an alternative to this [endpoint](/api-reference/loyalties/adjust-loyalty-card-balance-with-campaign-id). The URL was re-designed to allow you to add or remove loyalty card balance without having to provide the campaignId as a path parameter.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nThis method gives adds or removes balance to an existing loyalty card that is assigned to a holder. The removal of points will consume the points that expire the soonest. \n \nAsync Action\nThis is an async action. If you want to perform several add or remove loyalty card balance actions in a short time and their order matters, set up sufficient time-out between the calls.\n\n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/adjust-loyalty-card-balance-with-campaign-id). The URL was re-designed to allow you to add or remove loyalty card balance without having to provide the campaignId as a path parameter.\n",
"parameters": [],
"security": [
{
@@ -68209,11 +68228,12 @@
],
"post": {
"operationId": "transfer-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Transfer Loyalty Points",
- "description": "Transfer points between different loyalty cards which have holders.\nProvide the campaign ID and the loyalty card ID you want the points to be transferred to as path parameters. In the request body, provide the loyalty cards you want the points to be transferred from and the number of points to transfer from each card.\nTransfer works only for loyalty cards that have holders, meaning the cards were published to customers.\nThe transferred points expire according to the target program expiration rules.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nTransfer points between different loyalty cards which have holders.\nProvide the campaign ID and the loyalty card ID you want the points to be transferred to as path parameters. In the request body, provide the loyalty cards you want the points to be transferred from and the number of points to transfer from each card.\nTransfer works only for loyalty cards that have holders, meaning the cards were published to customers.\nThe transferred points expire according to the target program expiration rules.",
"parameters": [],
"security": [
{
@@ -68334,11 +68354,12 @@
],
"get": {
"operationId": "list-loyalty-campaign-transactions",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Campaign Transactions",
- "description": "Retrieves all transactions for the campaign with the given campaign ID or campaign name.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieves all transactions for the campaign with the given campaign ID or campaign name.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -68485,6 +68506,7 @@
],
"post": {
"operationId": "export-loyalty-campaign-transactions",
+ "deprecated": true,
"tags": [
"Loyalties"
],
@@ -68500,7 +68522,7 @@
}
],
"summary": "Export Loyalty Campaign Transactions",
- "description": "Export transactions is an asynchronous process that generates a CSV file with the data about or point movements on all loyalty cards in a given campaign.\nTo export transactions:\n1. In the export request, use parameters to select which fields will be exported, in what order, and which data will be filtered.\n2. Use the returned id to track the export status with the [GET Export](/api-reference/exports/get-export) method.\n3. In the GET Export method, when the returned status field has the DONE value, the export file has been generated.\n4. Use the URL in the result property to download the file. You must be logged to your Voucherify account on a given cluster in the browser to be able to download the file.\nAn export request will almost always result in a single file being generated by the system. However, when the data volume is large, the system may split the results into multiple files.\nAn example export file can look as follows:\n\n\n 👍 Export Campaign Transactions\n This method works in the same way the [POST Export Campaign Transactions](/api-reference/campaigns/export-campaign-transactions) does, but it is limited to loyalty campaigns only. The POST Export Campaign Transactions method can also export gift card campaign transactions.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nExport transactions is an asynchronous process that generates a CSV file with the data about or point movements on all loyalty cards in a given campaign.\nTo export transactions:\n1. In the export request, use parameters to select which fields will be exported, in what order, and which data will be filtered.\n2. Use the returned id to track the export status with the [GET Export](/api-reference/exports/get-export) method.\n3. In the GET Export method, when the returned status field has the DONE value, the export file has been generated.\n4. Use the URL in the result property to download the file. You must be logged to your Voucherify account on a given cluster in the browser to be able to download the file.\nAn export request will almost always result in a single file being generated by the system. However, when the data volume is large, the system may split the results into multiple files.\nAn example export file can look as follows:\n\n\n\nExport Campaign Transactions\nThis method works in the same way the [POST Export Campaign Transactions](/api-reference/campaigns/export-campaign-transactions) does, but it is limited to loyalty campaigns only. The POST Export Campaign Transactions method can also export gift card campaign transactions.\n",
"requestBody": {
"description": "Specify the parameters for the transaction export.",
"content": {
@@ -68635,11 +68657,12 @@
],
"get": {
"operationId": "list-loyalty-card-transactions-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Card Transactions with campaign ID",
- "description": "Retrieve transaction data related to point movements for a specific loyalty card.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve transaction data related to point movements for a specific loyalty card.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -69004,11 +69027,12 @@
],
"get": {
"operationId": "list-loyalty-card-transactions",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Card Transactions",
- "description": "Retrieve transaction data related to point movements for a specific loyalty card.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve transaction data related to point movements for a specific loyalty card.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -69373,11 +69397,12 @@
],
"post": {
"operationId": "export-loyalty-card-transactions",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Export Loyalty Card Transactions",
- "description": "Export transactions that are associated with point movements on a loyalty card.\n\n\n",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nExport transactions that are associated with point movements on a loyalty card.\n\n\n",
"parameters": [],
"security": [
{
@@ -69521,11 +69546,12 @@
],
"post": {
"operationId": "export-loyalty-card-transactions-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Export Loyalty Card Transactions with campaign ID",
- "description": "Export transactions that are associated with point movements on a loyalty card.\n\n\n",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nExport transactions that are associated with point movements on a loyalty card.\n\n\n",
"parameters": [],
"security": [
{
@@ -69669,11 +69695,12 @@
],
"get": {
"operationId": "list-points-expiration",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Card Point Expiration",
- "description": "Retrieve loyalty point expiration buckets for a given loyalty card. Expired point buckets are not returned in this endpoint. You can use the [Exports API](/api-reference/exports/create-export) to retrieve a list of both ACTIVE and EXPIRED point buckets.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve loyalty point expiration buckets for a given loyalty card. Expired point buckets are not returned in this endpoint. You can use the [Exports API](/api-reference/exports/create-export) to retrieve a list of both ACTIVE and EXPIRED point buckets.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -69780,11 +69807,12 @@
],
"post": {
"operationId": "create-points-expiration-export",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Export Loyalty Campaign Point Expiration",
- "description": "Schedule the generation of a point expiration CSV file for a particular campaign. It can list point buckets, which can have an ACTIVE or EXPIRED status.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nSchedule the generation of a point expiration CSV file for a particular campaign. It can list point buckets, which can have an ACTIVE or EXPIRED status.",
"parameters": [],
"security": [
{
@@ -69953,11 +69981,12 @@
],
"get": {
"operationId": "list-earning-rules",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Earning Rules",
- "description": "Returns a list of all earning rules within a given campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nReturns a list of all earning rules within a given campaign.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -70523,11 +70552,12 @@
},
"post": {
"operationId": "create-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Create Earning Rule",
- "description": "Create earning rules for a loyalty campaign.\n 🚧 Maximum number of earning rules\n You can create up to 100 earning rules per project. The limit can be customized for clients with a single-tenant setup.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nCreate earning rules for a loyalty campaign.\n\nMaximum number of earning rules\nYou can create up to 100 earning rules per project. The limit can be customized for clients with a single-tenant setup.\n",
"parameters": [],
"security": [
{
@@ -71698,11 +71728,12 @@
],
"get": {
"operationId": "get-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Earning Rule",
- "description": "Retrieves an earning rule assigned to a campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieves an earning rule assigned to a campaign.",
"parameters": [],
"security": [
{
@@ -71981,11 +72012,12 @@
},
"put": {
"operationId": "update-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Update Earning Rule",
- "description": "Update an earning rule definition.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nUpdate an earning rule definition.",
"parameters": [],
"security": [
{
@@ -72095,11 +72127,12 @@
},
"delete": {
"operationId": "delete-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Delete Earning Rule",
- "description": "This method deletes an earning rule for a specific loyalty campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nThis method deletes an earning rule for a specific loyalty campaign.",
"parameters": [],
"security": [
{
@@ -72141,11 +72174,12 @@
],
"post": {
"operationId": "enable-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Enable Earning Rule",
- "description": "Enable an earning rule.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nEnable an earning rule.",
"parameters": [],
"security": [
{
@@ -72228,11 +72262,12 @@
],
"post": {
"operationId": "disable-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Disable Earning Rule",
- "description": "Disable an earning rule.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nDisable an earning rule.",
"parameters": [],
"security": [
{
@@ -72300,11 +72335,12 @@
],
"get": {
"operationId": "list-member-rewards",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Rewards",
- "description": "Retrieves the list of rewards that the given customer (identified by member_id, which is a loyalty card assigned to a particular customer) **can get in exchange for loyalty points**. \nYou can use the affordable_only parameter to limit the results to rewards that the customer can actually afford (only rewards whose price in points is not higher than the loyalty points balance on a loyalty card). \nPlease note that rewards that are disabled (i.e. set to Not Available in the Dashboard) for a given loyalty tier reward mapping will not be returned in this endpoint.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieves the list of rewards that the given customer (identified by member_id, which is a loyalty card assigned to a particular customer) **can get in exchange for loyalty points**. \nYou can use the affordable_only parameter to limit the results to rewards that the customer can actually afford (only rewards whose price in points is not higher than the loyalty points balance on a loyalty card). \nPlease note that rewards that are disabled (i.e. set to Not Available in the Dashboard) for a given loyalty tier reward mapping will not be returned in this endpoint.",
"parameters": [
{
"in": "query",
@@ -72552,11 +72588,12 @@
],
"get": {
"operationId": "get-reward-details",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Reward Details",
- "description": "Get reward details in the context of a loyalty campaign and reward assignment ID.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nGet reward details in the context of a loyalty campaign and reward assignment ID.",
"parameters": [],
"security": [
{
@@ -72660,11 +72697,12 @@
],
"get": {
"operationId": "list-reward-assignments-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Reward Assignments with campaign ID",
- "description": "Returns reward assignments from a given loyalty campaign.\n 📘 Alternative endpoint\n This endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-campaign-rewards). The URL was re-designed to be more contextual to the type of data returned in the response.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nReturns reward assignments from a given loyalty campaign.\n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-campaign-rewards). The URL was re-designed to be more contextual to the type of data returned in the response.\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -72860,11 +72898,12 @@
],
"get": {
"operationId": "list-reward-assignments-2",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Campaign Rewards",
- "description": "Returns active rewards from a given loyalty campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nReturns active rewards from a given loyalty campaign.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -72954,11 +72993,12 @@
},
"post": {
"operationId": "create-reward-assignment-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Create Loyalty Campaign Reward Assignment",
- "description": "Add rewards to a loyalty campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nAdd rewards to a loyalty campaign.",
"parameters": [],
"security": [
{
@@ -73074,11 +73114,12 @@
],
"get": {
"operationId": "get-reward-assignment-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Campaign Reward Assignments",
- "description": "Retrieve specific reward assignment.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve specific reward assignment.",
"parameters": [],
"security": [
{
@@ -73145,11 +73186,12 @@
],
"get": {
"operationId": "get-reward-assignment-2",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Campaign Reward Assignment",
- "description": "Retrieve specific reward assignment.\n 📘 Alternative endpoint\n This endpoint is an alternative to this [endpoint](/api-reference/loyalties/get-campaign-reward-assignments). ",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve specific reward assignment.\n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/get-campaign-reward-assignments).\n",
"parameters": [],
"security": [
{
@@ -73194,11 +73236,12 @@
},
"put": {
"operationId": "update-reward-assignment-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Update Campaign Reward Assignment",
- "description": "Updates rewards parameters, i.e. the points cost for the specific reward.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nUpdates rewards parameters, i.e. the points cost for the specific reward.",
"parameters": [],
"security": [
{
@@ -73265,11 +73308,12 @@
},
"delete": {
"operationId": "delete-reward-assignment-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Delete Campaign Reward Assignment",
- "description": "This method deletes a reward assignment for a particular loyalty campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nThis method deletes a reward assignment for a particular loyalty campaign.",
"parameters": [],
"security": [
{
@@ -73311,11 +73355,12 @@
],
"post": {
"operationId": "redeem-reward-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Redeem Reward with campaign ID",
- "description": "Exchange points from a loyalty card for a specified reward. This API method returns an assigned award in the response. It means that if a requesting customer gets a coupon code with a discount for the next order, that discount code will be visible in response as part of the reward object definition.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nExchange points from a loyalty card for a specified reward. This API method returns an assigned award in the response. It means that if a requesting customer gets a coupon code with a discount for the next order, that discount code will be visible in response as part of the reward object definition.",
"parameters": [],
"security": [
{
@@ -74755,11 +74800,12 @@
],
"post": {
"operationId": "redeem-reward",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Redeem Reward",
- "description": "\n 📘 Alternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/redeem-reward-with-campaign-id). The URL was re-designed to allow you to redeem a reward without having to provide the campaignId as a path parameter.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/redeem-reward-with-campaign-id). The URL was re-designed to allow you to redeem a reward without having to provide the campaignId as a path parameter.\n",
"parameters": [],
"security": [
{
@@ -75038,11 +75084,12 @@
],
"get": {
"operationId": "list-loyalty-tiers",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Tiers",
- "description": "Retrieve a list of loyalty tiers which were added to the loyalty program.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve a list of loyalty tiers which were added to the loyalty program.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -75198,11 +75245,12 @@
},
"post": {
"operationId": "create-in-bulk-loyalty-tiers",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Create loyalty tiers",
- "description": "Creates loyalty tiers for desired campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nCreates loyalty tiers for desired campaign.",
"parameters": [],
"security": [
{
@@ -75262,11 +75310,12 @@
],
"get": {
"operationId": "get-loyalty-tier",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Loyalty Tier",
- "description": "Retrieve a loyalty tier from a loyalty campaign by the loyalty tier ID.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve a loyalty tier from a loyalty campaign by the loyalty tier ID.",
"parameters": [],
"security": [
{
@@ -75355,11 +75404,12 @@
],
"get": {
"operationId": "list-member-loyalty-tier",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member's Loyalty Tiers",
- "description": "Retrieve member tiers using the loyalty card ID.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve member tiers using the loyalty card ID.",
"parameters": [],
"security": [
{
@@ -75473,11 +75523,12 @@
],
"get": {
"operationId": "list-loyalty-tier-earning-rules",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Tier Earning Rules",
- "description": "Retrieve available earning rules for a given tier and the calculation method for earning points.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve available earning rules for a given tier and the calculation method for earning points.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -76089,11 +76140,12 @@
],
"get": {
"operationId": "list-loyalty-tier-rewards",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Tier Rewards",
- "description": "Get available rewards for a given tier.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nGet available rewards for a given tier.",
"parameters": [],
"security": [
{
@@ -76562,7 +76614,7 @@
"Customers"
],
"summary": "Create Customer",
- "description": "Creates a customer object.\n 📘 Upsert Mode\n If you pass an id or a source_id that already exists in the customer database, Voucherify will return a related customer object with updated fields.",
+ "description": "Creates a customer object.\n\nUpsert Mode\nIf you pass an id or a source_id that already exists in the customer database, Voucherify will return a related customer object with updated fields.\n",
"parameters": [],
"security": [
{
@@ -77028,7 +77080,7 @@
"Customers"
],
"summary": "Import and Update Customers using CSV",
- "description": "This API method lets you import or update customer data. To get a proper and valid response, please send a CSV file with data separated by commas. \n# Request Example\n# CSV File Format\nThe CSV file has to include headers in the first line. All properties which cannot be mapped to standard customer fields will be added to the metadata object.\n 📘 Standard customer fields mapping\n **No spaces allowed in field names** \n Id, Name, Email, Phone, Birthdate, Source_id, Address_line_1, Address_line_2, Address_Postal_Code, Address_City, Address_State, Address_Country, Description, Metadata_name_1, Metadata_name_2\n# Update Customers using CSV\nIf you would like to update customers data, you can do it using the CSV file with new data. However, remember to include a source_id in your CSV file to manage the update successfully.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
+ "description": "This API method lets you import or update customer data. To get a proper and valid response, please send a CSV file with data separated by commas. \n# Request Example\n# CSV File Format\nThe CSV file has to include headers in the first line. All properties which cannot be mapped to standard customer fields will be added to the metadata object.\n\nStandard customer fields mapping\n**No spaces allowed in field names** Id, Name, Email, Phone, Birthdate, Source_id, Address_line_1, Address_line_2, Address_Postal_Code, Address_City, Address_State, Address_Country, Description, Metadata_name_1, Metadata_name_2\n\n# Update Customers using CSV\nIf you would like to update customers data, you can do it using the CSV file with new data. However, remember to include a source_id in your CSV file to manage the update successfully.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
"parameters": [],
"security": [
{
@@ -78362,7 +78414,7 @@
"Orders"
],
"summary": "Create Order",
- "description": "Creates an order object and triggers an order creation event.\n 📘 Upsert Mode\n If you pass an id or a source_id that already exists in the order database, Voucherify will return a related order object with updated fields.",
+ "description": "Creates an order object and triggers an order creation event.\n\nUpsert Mode\nIf you pass an id or a source_id that already exists in the order database, Voucherify will return a related order object with updated fields.\n",
"parameters": [],
"security": [
{
@@ -78808,7 +78860,7 @@
"Orders"
],
"summary": "Import Orders",
- "description": "\n 🚧 Historical orders\n This endpoint should only be used to import historical orders into Voucherify. For on-going synchronization, the [update order](/api-reference/orders/update-order) endpoint should be used. This is critical because this endpoint does not store events or launch distributions.\nThe orders will also have a created_at date thats assigned when theyve been imported to Voucherify. To keep track of the actual order creation date, add an order metadata in ISO 8601 date or date time format to each imported order.\n# Limitations\n## Import volume\nThere can be only a single on-going order import per tenant per project at a given time. The user can schedule more imports but those extra imports will be scheduled to run in sequence one by one. \n## Maximum count of orders in single import\nThere is a 2000 limit of orders per one request.\n# Notifications\nThere are no notifications on the Dashboard because this import is launched via the API.\n# Triggered actions\n \nIf you import orders with customers, then a logic will be scheduled responsible for placing these customers into segments and refreshing the segments summary. Consequently, this update will trigger \n- Customers entering into segments\n- Distributions based on any rules tied to customer entering segment(s)\n- Earning rules based on the customer entering segment(s)\n# What is not triggered\n1. No webhooks are triggered during the import of orders - for both orders and upserted products / SKUs. \n2. Distributions based on Order Update, Order Paid, Order Created and Order Cancelled. In other words if you have a distribution based on Order Paid and you import an order with a PAID status, the distribution is not going to be triggered. \n3. No events are created during the import of orders - for both orders and upserted products / SKUs. In other words you wont see any events in the Activity tab in the Dashboard such as Order created or Order paid. If you are additionally upserting products / SKUs, then you wont see the Product created events listed, etc. \n4. Earning rules based on Order Paid wont be triggered.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request with [GET Async Action](/api-reference/async-actions/get-async-action) endpoint.",
+ "description": "\n\nHistorical orders\nThis endpoint should only be used to import historical orders into Voucherify. For on-going synchronization, the [update order](/api-reference/orders/update-order) endpoint should be used. This is critical because this endpoint does not store events or launch distributions.\n\nThe orders will also have a created_at date thats assigned when theyve been imported to Voucherify. To keep track of the actual order creation date, add an order metadata in ISO 8601 date or date time format to each imported order.\n# Limitations\n## Import volume\nThere can be only a single on-going order import per tenant per project at a given time. The user can schedule more imports but those extra imports will be scheduled to run in sequence one by one. \n## Maximum count of orders in single import\nThere is a 2000 limit of orders per one request.\n# Notifications\nThere are no notifications on the Dashboard because this import is launched via the API.\n# Triggered actions\n \nIf you import orders with customers, then a logic will be scheduled responsible for placing these customers into segments and refreshing the segments summary. Consequently, this update will trigger \n- Customers entering into segments\n- Distributions based on any rules tied to customer entering segment(s)\n- Earning rules based on the customer entering segment(s)\n# What is not triggered\n1. No webhooks are triggered during the import of orders - for both orders and upserted products / SKUs. \n2. Distributions based on Order Update, Order Paid, Order Created and Order Cancelled. In other words if you have a distribution based on Order Paid and you import an order with a PAID status, the distribution is not going to be triggered. \n3. No events are created during the import of orders - for both orders and upserted products / SKUs. In other words you wont see any events in the Activity tab in the Dashboard such as Order created or Order paid. If you are additionally upserting products / SKUs, then you wont see the Product created events listed, etc. \n4. Earning rules based on Order Paid wont be triggered.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request with [GET Async Action](/api-reference/async-actions/get-async-action) endpoint.",
"parameters": [],
"security": [
{
@@ -79410,7 +79462,7 @@
"Products"
],
"summary": "Create Product",
- "description": "Creates a product object.\n 📘 Upsert Mode\n If you pass an id or a source_id that already exists in the product database, Voucherify will return a related product object with updated fields.",
+ "description": "Creates a product object.\n\nUpsert Mode\nIf you pass an id or a source_id that already exists in the product database, Voucherify will return a related product object with updated fields.\n",
"parameters": [],
"security": [
{
@@ -80070,7 +80122,7 @@
"Products"
],
"summary": "Create SKU",
- "description": "This method adds product variants to a [created product](/api-reference/products/create-product). \n 📘 Upsert Mode\n If you pass an id or a source_id that already exists in the sku database, Voucherify will return a related sku object with updated fields.",
+ "description": "This method adds product variants to a [created product](/api-reference/products/create-product). \n\nUpsert Mode\nIf you pass an id or a source_id that already exists in the sku database, Voucherify will return a related sku object with updated fields.\n",
"parameters": [],
"security": [
{
@@ -80286,7 +80338,7 @@
"Products"
],
"summary": "Import Products using CSV",
- "description": "Import products into the repository using a CSV file.\nThe CSV file has to include headers in the first line.\n 📘 Standard product fields mapping\n - Create a **comma separated value (CSV) file** or download our CSV import template. You can find an example template [here](https://s3.amazonaws.com/helpscout.net/docs/assets/5902f1c12c7d3a057f88a36d/attachments/627b82ed68d51e779443f550/Import_products_template.csv).\n - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name\n - **Name** is a **required** field. The remaining fields in the CSV template are optional.\n - Override/Update products **names** in Voucherify using this method. Data will be updated for each product included in the CSV file whose **source_id** matches a source ID in Voucherify. No other data can be updated other than the product name.\n - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 standard**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11\n - YYYY-MM-DD\n - YYYY-MM-DDTHH\n - YYYY-MM-DDTHH:mm\n - YYYY-MM-DDTHH:mm:ss\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ss.SSSZ\n - Columns that cannot be mapped to standard fields, will be mapped to **Custom attributes** and added as **products metadata**. There is no limit on the number of custom attributes that you can import as metadata. \n - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](/prepare/metadata#add-metadata).\n - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2.\n - Headers with metadata names **cant contain white-space characters**.\n - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: \n - array of strings: subscribed,premium \n - array of numbers: 123,234. \n - array of dates: 2000-01-01,2000-01-02\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
+ "description": "Import products into the repository using a CSV file.\nThe CSV file has to include headers in the first line.\n\nStandard product fields mapping\n- Create a **comma separated value (CSV) file** or download our CSV import template. You can find an example template [here](https://s3.amazonaws.com/helpscout.net/docs/assets/5902f1c12c7d3a057f88a36d/attachments/627b82ed68d51e779443f550/Import_products_template.csv).\n- Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name\n- **Name** is a **required** field. The remaining fields in the CSV template are optional.\n- Override/Update products **names** in Voucherify using this method. Data will be updated for each product included in the CSV file whose **source_id** matches a source ID in Voucherify. No other data can be updated other than the product name.\n- Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 standard**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11\n - YYYY-MM-DD\n - YYYY-MM-DDTHH\n - YYYY-MM-DDTHH:mm\n - YYYY-MM-DDTHH:mm:ss\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ss.SSSZ\n- Columns that cannot be mapped to standard fields, will be mapped to **Custom attributes** and added as **products metadata**. There is no limit on the number of custom attributes that you can import as metadata.\n- To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](/prepare/metadata#add-metadata).\n- **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2.\n- Headers with metadata names **cant contain white-space characters**.\n- If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example:\n - array of strings: subscribed,premium\n - array of numbers: 123,234.\n - array of dates: 2000-01-01,2000-01-02\n\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
"parameters": [],
"security": [
{
@@ -80337,7 +80389,7 @@
"Products"
],
"summary": "Import SKUs using CSV",
- "description": "Import SKUs into the repository using a CSV file.\nThe CSV file has to include headers in the first line. All properties which cannot be mapped to standard SKU fields will be added to the metadata object. You can find an example template [here](https://s3.amazonaws.com/helpscout.net/docs/assets/5902f1c12c7d3a057f88a36d/attachments/627b98d08c9b585083488a4c/Import_SKUS_template.csv). \n 🚧 Import sequence\n First import products using the [dedicated endpoint](/api-reference/products/import-products-using-csv), then import SKUs using this endpoint to properly match SKUs to products.\n 📘 Standard SKU fields mapping\n - **Required** fields are source_id and product_id.\n - Supported CSV file headers: product_id,sku,source_id,price,image_url,attributes\n - SKU **source_id** must be unique in the entire product catalog, no duplicates are allowed.\n - SKU attributes need to be in the form of a stringy-fied json, i.e.{color:blue}. These attributes must be defined in the **product** beforehand so you can import them to the SKU.\n - You can use this method to update the following parameters in bulk: **sku** and the sku **price**.\n - Columns that cannot be mapped to standard fields will be mapped to Custom attributes and added as product metadata. There is no limit on the number of custom attributes that you can import as metadata.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
+ "description": "Import SKUs into the repository using a CSV file.\nThe CSV file has to include headers in the first line. All properties which cannot be mapped to standard SKU fields will be added to the metadata object. You can find an example template [here](https://s3.amazonaws.com/helpscout.net/docs/assets/5902f1c12c7d3a057f88a36d/attachments/627b98d08c9b585083488a4c/Import_SKUS_template.csv). \n\nImport sequence\nFirst import products using the [dedicated endpoint](/api-reference/products/import-products-using-csv), then import SKUs using this endpoint to properly match SKUs to products.\n\n\nStandard SKU fields mapping\n- **Required** fields are source_id and product_id.\n- Supported CSV file headers: product_id,sku,source_id,price,image_url,attributes\n- SKU **source_id** must be unique in the entire product catalog, no duplicates are allowed.\n- SKU attributes need to be in the form of a stringy-fied json, i.e.{color:blue}. These attributes must be defined in the **product** beforehand so you can import them to the SKU.\n- You can use this method to update the following parameters in bulk: **sku** and the sku **price**.\n- Columns that cannot be mapped to standard fields will be mapped to Custom attributes and added as product metadata. There is no limit on the number of custom attributes that you can import as metadata.\n\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
"parameters": [],
"security": [
{
@@ -81208,7 +81260,7 @@
"Validation Rules"
],
"summary": "Create Validation Rules",
- "description": "Create a validation rule.\n 🚧 Managing validation rules\n It is recommended to [create or update validation rules](/personalize/create-validation-rules) in the Voucherify dashboard. The rule builder in the dashboard helps configuring the desired conditions in a convenient way. The API should not be used as a preferable way to create and manage validation rules.",
+ "description": "Create a validation rule.\n\nManaging validation rules\nIt is recommended to [create or update validation rules](/personalize/create-validation-rules) in the Voucherify dashboard. The rule builder in the dashboard helps configuring the desired conditions in a convenient way. The API should not be used as a preferable way to create and manage validation rules.\n",
"parameters": [],
"security": [
{
@@ -81472,7 +81524,7 @@
"Validation Rules"
],
"summary": "Update Validation Rule",
- "description": "Update validation rule parameters.\n 🚧 Managing validation rules\n It is recommended to [create or update validation rules](/personalize/create-validation-rules) in the Voucherify dashboard. The rule builder in the dashboard helps configuring the desired conditions in a convenient way. The API should not be used as a preferable way to create and manage validation rules.",
+ "description": "Update validation rule parameters.\n\nManaging validation rules\nIt is recommended to [create or update validation rules](/personalize/create-validation-rules) in the Voucherify dashboard. The rule builder in the dashboard helps configuring the desired conditions in a convenient way. The API should not be used as a preferable way to create and manage validation rules.\n",
"parameters": [],
"security": [
{
@@ -82174,7 +82226,7 @@
"Segments"
],
"summary": "Create Segment",
- "description": "Create a customer segment.\n 🚧 Limit on static segments\n There is a cap on the number of customers that you can assign to a static segment: **20,000**. If you would like to create a bigger segment, then you can use the unlimited auto-update or passive segment instead and use some customer metadata to build this segment.\n 🚧 Limit on Active and Passive segments\n You can create a maximum of 100 passive and active segments.",
+ "description": "Create a customer segment.\n\nLimit on static segments\nThere is a cap on the number of customers that you can assign to a static segment: **20,000**. If you would like to create a bigger segment, then you can use the unlimited auto-update or passive segment instead and use some customer metadata to build this segment.\n\n\nLimit on Active and Passive segments\nYou can create a maximum of 100 passive and active segments.\n",
"parameters": [],
"security": [
{
@@ -83042,7 +83094,7 @@
"Exports"
],
"summary": "Create Export",
- "description": "Create export object. The export can be any of the following types: voucher, redemption, publication, customer, order, points_expiration, voucher_transactions, product, or sku. \n# Defaults\nIf you only specify the object type in the request body without specifying the fields, the API will return the following fields per export object:\n\n\n 📘 Date and time in the export API\n The exported date and times are always provided in the UTC time zone.\n# Fetching particular data sets\nUsing the parameters body parameter, you can narrow down which fields to export and how to filter the results. The fields are an array of strings containing the data that you would like to export. These fields define the headers in the CSV file. The array can be a combination of any of the following available fields:\n# Orders \n\n\n# Vouchers \n\n\n\n\n\n# Publications\n\n\n# Redemptions\n\n\n\n# Customers\n\n\n\n\n\n\n# Points Expirations\n\n\n # Gift Card Transactions\n\n\n # Loyalty Card Transactions\n\n\n",
+ "description": "Create export object. The export can be any of the following types: voucher, redemption, publication, customer, order, points_expiration, voucher_transactions, product, or sku. \n# Defaults\nIf you only specify the object type in the request body without specifying the fields, the API will return the following fields per export object:\n\n\n\nDate and time in the export API\nThe exported date and times are always provided in the UTC time zone.\n\n# Fetching particular data sets\nUsing the parameters body parameter, you can narrow down which fields to export and how to filter the results. The fields are an array of strings containing the data that you would like to export. These fields define the headers in the CSV file. The array can be a combination of any of the following available fields:\n# Orders \n\n\n# Vouchers \n\n\n\n\n\n# Publications\n\n\n# Redemptions\n\n\n\n# Customers\n\n\n\n\n\n\n# Points Expirations\n\n\n # Gift Card Transactions\n\n\n # Loyalty Card Transactions\n\n\n",
"parameters": [],
"security": [
{
@@ -83335,7 +83387,7 @@
"Exports"
],
"summary": "Download Export",
- "description": "Download the contents of the exported CSV file. \n 📘 Important notes\n **Base URL:** \n - https://download.voucherify.io (Europe) \n - https://us1.download.voucherify.io (US) \n - https://as1.download.voucherify.io (Asia) \n **Token:** Can be found within the result parameter of the [Get Export](/api-reference/exports/get-export) method response.",
+ "description": "Download the contents of the exported CSV file. \n\nImportant notes\n**Base URL:**\n- https://download.voucherify.io (Europe)\n- https://us1.download.voucherify.io (US)\n- https://as1.download.voucherify.io (Asia)\n**Token:** Can be found within the result parameter of the [Get Export](/api-reference/exports/get-export) method response.\n",
"parameters": [],
"security": [
{
@@ -83661,7 +83713,7 @@
"Metadata Schemas"
],
"summary": "List Metadata Schema Definitions",
- "description": "Retrieve metadata schema definitions.\n📘 Management API\nIf you have Management API enabled, you can also use the [List Metadata Schemas](/api-reference/management/list-metadata-schemas) endpoint to list all metadata schemas.",
+ "description": "Retrieve metadata schema definitions.\n\nManagement API\nIf you have Management API enabled, you can also use the [List Metadata Schemas](/api-reference/management/list-metadata-schemas) endpoint to list all metadata schemas.\n",
"parameters": [],
"security": [
{
@@ -84170,7 +84222,7 @@
"Metadata Schemas"
],
"summary": "Get Metadata Schema",
- "description": "Retrieves a metadata schema per resource type.\n# Resource types\n## Standard\nYou can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter.\n- campaign\n- customer\n- earning_rule\n- loyalty_tier\n- order\n- order_item\n- product\n- promotion_tier\n- publication\n- redemption\n- reward\n- voucher\n## Custom\nIf you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details.\n📘 Management API\nIf you have Management API enabled, you can also use the [Get Metadata Schemas](/api-reference/management/get-metadata-schema) endpoint to retrieve a metadata schema using its ID.",
+ "description": "Retrieves a metadata schema per resource type.\n# Resource types\n## Standard\nYou can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter.\n- campaign\n- customer\n- earning_rule\n- loyalty_tier\n- order\n- order_item\n- product\n- promotion_tier\n- publication\n- redemption\n- reward\n- voucher\n## Custom\nIf you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details.\n\nManagement API\nIf you have Management API enabled, you can also use the [Get Metadata Schemas](/api-reference/management/get-metadata-schema) endpoint to retrieve a metadata schema using its ID.\n",
"parameters": [],
"security": [
{
@@ -84970,7 +85022,7 @@
"Referrals"
],
"summary": "Add Referral Code Holders with Campaign ID",
- "description": "Adds new holders to a referral code as **referees**. The data sent in the request is upserted into the customer data.\nIf the request returns an error even for one customer, you have to resend the whole request. Customer data is upserted if the data for all customers is correct.\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (customers.modify)\n- Publish Voucher (vouchers.publish)\n 👍\nTo add a holder as a referrer, use the [Create Publication](/api-reference/publications/create-publication) endpoint.",
+ "description": "Adds new holders to a referral code as **referees**. The data sent in the request is upserted into the customer data.\nIf the request returns an error even for one customer, you have to resend the whole request. Customer data is upserted if the data for all customers is correct.\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (customers.modify)\n- Publish Voucher (vouchers.publish)\n\nTo add a holder as a referrer, use the [Create Publication](/api-reference/publications/create-publication) endpoint.\n",
"parameters": [],
"security": [
{
@@ -85238,7 +85290,7 @@
"Referrals"
],
"summary": "Add Referral Code Holders",
- "description": "Adds new holders to a referral code as **referees**. The data sent in the request is upserted into the customer data.\nIf the request returns an error even for one customer, you have to resend the whole request. Customer data is upserted if the data for all customers is correct.\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (customers.modify)\n- Publish Voucher (vouchers.publish)\n 👍\nTo add a holder as a referrer, use the [Create Publication](/api-reference/publications/create-publication) endpoint.\n 📘 Alternative endpoint\nThis endpoint is an alternative to the [Add Referral Code Holders endpoint](/api-reference/referrals/add-referral-code-holders-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the campaignId as a path paremeter.",
+ "description": "Adds new holders to a referral code as **referees**. The data sent in the request is upserted into the customer data.\nIf the request returns an error even for one customer, you have to resend the whole request. Customer data is upserted if the data for all customers is correct.\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (customers.modify)\n- Publish Voucher (vouchers.publish)\n\nTo add a holder as a referrer, use the [Create Publication](/api-reference/publications/create-publication) endpoint.\n\n\nAlternative endpoint\nThis endpoint is an alternative to the [Add Referral Code Holders endpoint](/api-reference/referrals/add-referral-code-holders-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the campaignId as a path paremeter.\n",
"parameters": [],
"security": [
{
@@ -85341,7 +85393,7 @@
"Referrals"
],
"summary": "List Referral Code Holders",
- "description": "Retrieves the holders of the referral code from a referral campaign.\nTo use this endpoint, you must have the following permissions:\n- Read Customers (customers.details.read)\n 📘 Alternative endpoint\nThis endpoint is an alternative to the [List Member Holders endpoint](/api-reference/referrals/list-referral-code-holders-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the campaignId as a path paremeter.",
+ "description": "Retrieves the holders of the referral code from a referral campaign.\nTo use this endpoint, you must have the following permissions:\n- Read Customers (customers.details.read)\n\nAlternative endpoint\nThis endpoint is an alternative to the [List Member Holders endpoint](/api-reference/referrals/list-referral-code-holders-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the campaignId as a path paremeter.\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -85460,7 +85512,7 @@
"Referrals"
],
"summary": "Remove Referral Card Holder",
- "description": "Removes the holder from a referral card. You can remove a referee only.\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (customers.modify)\n- Publish Voucher (vouchers.publish)\n 📘 Alternative endpoint\nThis endpoint is an alternative to the [Remove Referral Card Holder endpoint](/api-reference/referrals/remove-referral-card-holder-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the campaignId as a path paremeter.",
+ "description": "Removes the holder from a referral card. You can remove a referee only.\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (customers.modify)\n- Publish Voucher (vouchers.publish)\n\nAlternative endpoint\nThis endpoint is an alternative to the [Remove Referral Card Holder endpoint](/api-reference/referrals/remove-referral-card-holder-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the campaignId as a path paremeter.\n",
"parameters": [],
"security": [
{
@@ -85619,7 +85671,7 @@
"Templates"
],
"summary": "List Campaign Templates",
- "description": "Lists all campaign templates available in the project.\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Lists all campaign templates available in the project.\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -85716,7 +85768,7 @@
"Templates"
],
"summary": "Create Campaign Template",
- "description": "Creates a template for a discount or gift campaign, or a promotion tier.\nA template stores campaign configuration **without** the following details:\n- Campaign name\n- Category\n- Code count\nThe following elements are not supported by campaign templates:\n- Redeeming API keys\n- Redeeming users\n- Customer loyalty tier\n- Static segments\n 👍 Promotion Tiers and Campaign Templates\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the DISCOUNT_COUPON type. You can use this template to create:\n- [Discount campaign](/api-reference/templates/create-campaign-from-template),\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template).\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Creates a template for a discount or gift campaign, or a promotion tier.\nA template stores campaign configuration **without** the following details:\n- Campaign name\n- Category\n- Code count\nThe following elements are not supported by campaign templates:\n- Redeeming API keys\n- Redeeming users\n- Customer loyalty tier\n- Static segments\n\nPromotion Tiers and Campaign Templates\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the DISCOUNT_COUPON type. You can use this template to create:\n- [Discount campaign](/api-reference/templates/create-campaign-from-template),\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template).\n\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -85783,7 +85835,7 @@
"Templates"
],
"summary": "Get Campaign Template",
- "description": "Retrieves a campaign template available in the project.\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Retrieves a campaign template available in the project.\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -85826,7 +85878,7 @@
"Templates"
],
"summary": "Update Campaign Template",
- "description": "Updates the name or description of the campaign template.\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Updates the name or description of the campaign template.\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -85881,7 +85933,7 @@
"Templates"
],
"summary": "Delete Campaign Template",
- "description": "Deletes the campaign template permanently.\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Deletes the campaign template permanently.\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -85918,7 +85970,7 @@
"Templates"
],
"summary": "Create Campaign From Template",
- "description": "Creates a campaign out of a campaign template.\nTo create a campaign, you need to provide the name in the request, while other fields are optional. If no other fields are sent, the configuration from the template will be used.\nYou can send new values of the fields listed below to replace the settings saved in the template. However, you cannot assign an existing validation rule or create a new one in the request. If the template has a validation rule, a new validation rule is always created for the campaign. When the campaign has been created, then you can:\n- [Update the validation rule](/api-reference/validation-rules/update-validation-rule),\n- [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment),\n- [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments).\n 👍 Promotion Tiers and Campaign Templates\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the DISCOUNT_COUPON type. You can use this template to create:\n- [Discount campaign](/api-reference/templates/create-campaign-from-template)\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template)\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Creates a campaign out of a campaign template.\nTo create a campaign, you need to provide the name in the request, while other fields are optional. If no other fields are sent, the configuration from the template will be used.\nYou can send new values of the fields listed below to replace the settings saved in the template. However, you cannot assign an existing validation rule or create a new one in the request. If the template has a validation rule, a new validation rule is always created for the campaign. When the campaign has been created, then you can:\n- [Update the validation rule](/api-reference/validation-rules/update-validation-rule),\n- [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment),\n- [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments).\n\nPromotion Tiers and Campaign Templates\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the DISCOUNT_COUPON type. You can use this template to create:\n- [Discount campaign](/api-reference/templates/create-campaign-from-template)\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template)\n\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -86082,7 +86134,7 @@
"Templates"
],
"summary": "Add Promotion Tier From Template",
- "description": "Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign.\nTo add a promotion tier to a campaign, you need to provide the name in the request and the campaign ID. Other fields are optional. If no other fields are sent, the configuration from the template will be used.\nYou can send new values of the fields listed below to replace the settings saved in the template. However, you cannot assign an action or an existing validation rule or create a new one in the request. If the template has a validation rule, a new validation rule is always created for the promotion tier. When the promotion tier has been created, then you can:\n- [Update the validation rule](/api-reference/validation-rules/update-validation-rule),\n- [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment),\n- [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment).\n 👍 Promotion Tiers and Campaign Templates\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the DISCOUNT_COUPON type. You can use this template to create:\n- [Discount campaign](/api-reference/templates/create-campaign-from-template)\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template)\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign.\nTo add a promotion tier to a campaign, you need to provide the name in the request and the campaign ID. Other fields are optional. If no other fields are sent, the configuration from the template will be used.\nYou can send new values of the fields listed below to replace the settings saved in the template. However, you cannot assign an action or an existing validation rule or create a new one in the request. If the template has a validation rule, a new validation rule is always created for the promotion tier. When the promotion tier has been created, then you can:\n- [Update the validation rule](/api-reference/validation-rules/update-validation-rule),\n- [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment),\n- [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment).\n\nPromotion Tiers and Campaign Templates\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the DISCOUNT_COUPON type. You can use this template to create:\n- [Discount campaign](/api-reference/templates/create-campaign-from-template)\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template)\n\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -86871,7 +86923,7 @@
"Management"
],
"summary": "Delete Project",
- "description": "Deletes an existing project.\nThe users currently using the deleted project will be automatically logged out.\n 🚧 Sandbox Project\nThe sandbox project cannot be deleted.",
+ "description": "Deletes an existing project.\nThe users currently using the deleted project will be automatically logged out.\n\nSandbox Project\nThe sandbox project cannot be deleted.\n",
"parameters": [],
"security": [
{
@@ -86904,7 +86956,7 @@
"Management"
],
"summary": "Assign User",
- "description": "Assigns a user to a given project. The user must be an existing user in Voucherify.\n 🚧 Correct Use of Data\nTo avoid errors, use the role key with either id or login keys.",
+ "description": "Assigns a user to a given project. The user must be an existing user in Voucherify.\n\nCorrect Use of Data\nTo avoid errors, use the role key with either id or login keys.\n",
"parameters": [],
"security": [
{
@@ -87213,7 +87265,7 @@
"Management"
],
"summary": "List Campaign Templates",
- "description": "Lists all campaign templates available in the project.\n 👍 List Campaign Templates\n This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates).\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Lists all campaign templates available in the project.\n\nList Campaign Templates\nThis endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates).\n\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -87328,7 +87380,7 @@
"Management"
],
"summary": "Copy Campaign Template to a Project",
- "description": "Copies a campaign template to another project.\nThe resources, like validation rules or products, will not be copied to the destination project yet. When the template is used to create a new campaign or add a new promotion tier, the resources will be created in the destination project.\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Copies a campaign template to another project.\nThe resources, like validation rules or products, will not be copied to the destination project yet. When the template is used to create a new campaign or add a new promotion tier, the resources will be created in the destination project.\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -87391,7 +87443,7 @@
"Management"
],
"summary": "Create Stacking Rules",
- "description": "Overwrites the default stacking rules.\nIf new stacking rules have been created for the project earlier (e.g. in the user interface), it returns an error. Use [Update stacking rules](/api-reference/management/update-stacking-rules) endpoint to change the rules.\n 📘 Stacking rules documentation\n Read [the Stacking rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Overwrites the default stacking rules.\nIf new stacking rules have been created for the project earlier (e.g. in the user interface), it returns an error. Use [Update stacking rules](/api-reference/management/update-stacking-rules) endpoint to change the rules.\n\nStacking rules documentation\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n",
"parameters": [],
"security": [
{
@@ -87469,7 +87521,7 @@
"Management"
],
"summary": "List Stacking Rules",
- "description": "Lists all stacking rules.\nReturns always a list with one item.\nThis endpoint can be used to retrieve the default stacking rules. The default stacking rules do not have an ID that could be used with the [Get Stacking Rules](/api-reference/management/get-stacking-rules) or [Update Stacking Rules](/api-reference/management/update-stacking-rules) endpoints.\n 📘 Stacking Rules Documentation\n Read [the Stacking Rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Lists all stacking rules.\nReturns always a list with one item.\nThis endpoint can be used to retrieve the default stacking rules. The default stacking rules do not have an ID that could be used with the [Get Stacking Rules](/api-reference/management/get-stacking-rules) or [Update Stacking Rules](/api-reference/management/update-stacking-rules) endpoints.\n\nStacking Rules Documentation\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n",
"parameters": [],
"security": [
{
@@ -87566,7 +87618,7 @@
"Management"
],
"summary": "Get Stacking Rules",
- "description": "Retrieves the stacking rules for the project.\n 📘 Stacking Rules Documentation\n Read [the Stacking Rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Retrieves the stacking rules for the project.\n\nStacking Rules Documentation\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n",
"parameters": [],
"security": [
{
@@ -87634,7 +87686,7 @@
"Management"
],
"summary": "Update Stacking Rules",
- "description": "Updates the stacking rules.\nOnly the provided fields will be updated. However, if you update an array, the content of the array is overwritten. This means that if you want to add new values to an array and retain existing ones, you need to provide both the existing and new values in the request.\n 📘 Stacking Rules Documentation\n Read [the Stacking Rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Updates the stacking rules.\nOnly the provided fields will be updated. However, if you update an array, the content of the array is overwritten. This means that if you want to add new values to an array and retain existing ones, you need to provide both the existing and new values in the request.\n\nStacking Rules Documentation\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n",
"parameters": [],
"security": [
{
@@ -87713,7 +87765,7 @@
"Management"
],
"summary": "Delete Stacking Rules",
- "description": "Deletes permanently the current settings for the stacking rules.\nThe stacking rules are restored to default values.\n 📘 Stacking Rules Documentation\n Read [the Stacking Rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Deletes permanently the current settings for the stacking rules.\nThe stacking rules are restored to default values.\n\nStacking Rules Documentation\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n",
"parameters": [],
"security": [
{
@@ -87746,7 +87798,7 @@
"Management"
],
"summary": "Create Metadata Schema",
- "description": "Creates a new metadata (custom attribute) schema for a given resource.\nThe schema consists of a set of key-value pairs to customize Voucherify resources. \nYou can nest your object within a standard metadata schema, e.g. within a campaign or customer schema. However, your nested object cant include another nested object. The standard metadata schemas are:\n- Campaign\n- Voucher\n- Publication\n- Redemption\n- Product\n- Customer\n- Order\n- Order line item\n- Loyalty Tier\n- Promotion Tier\n- Earning rule\n- Reward\nUse this endpoint to define a metadata schema of a given resource for the first time. Once you configure a metadata schema for a given related_object, use the PUT [Update metadata schema](/api-reference/management/update-metadata-schema) endpoint to either update or add new metadata key-value pairs. For example, use this endpoint to define a metadata schema for related_object: campaign for the first time. If you want define a new metadata property for campaign, use the [PUT Update metadata schema](/api-reference/management/update-metadata-schema) endpoint.\n 📘 Metadata Documentation\n Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Creates a new metadata (custom attribute) schema for a given resource.\nThe schema consists of a set of key-value pairs to customize Voucherify resources. \nYou can nest your object within a standard metadata schema, e.g. within a campaign or customer schema. However, your nested object cant include another nested object. The standard metadata schemas are:\n- Campaign\n- Voucher\n- Publication\n- Redemption\n- Product\n- Customer\n- Order\n- Order line item\n- Loyalty Tier\n- Promotion Tier\n- Earning rule\n- Reward\nUse this endpoint to define a metadata schema of a given resource for the first time. Once you configure a metadata schema for a given related_object, use the PUT [Update metadata schema](/api-reference/management/update-metadata-schema) endpoint to either update or add new metadata key-value pairs. For example, use this endpoint to define a metadata schema for related_object: campaign for the first time. If you want define a new metadata property for campaign, use the [PUT Update metadata schema](/api-reference/management/update-metadata-schema) endpoint.\n\nMetadata Documentation\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -87810,7 +87862,7 @@
"Management"
],
"summary": "List Metadata Schemas",
- "description": "Lists all metadata schemas available in the project.\n 📘 Metadata Documentation\n Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Lists all metadata schemas available in the project.\n\nMetadata Documentation\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -88122,7 +88174,7 @@
"Management"
],
"summary": "Get Metadata Schema",
- "description": "Retrieves a metadata schema.\n 📘 Metadata Documentation\n Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Retrieves a metadata schema.\n\nMetadata Documentation\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -88209,7 +88261,7 @@
"Management"
],
"summary": "Update Metadata Schema",
- "description": "Updates a metadata schema.\nWith this request, you can:\n- Add a nonexistent attribute definition to the metadata schema.\n- Update an existing attribute definition by overwriting its current values.\nIn the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged.\nHowever, if you want to update a definition, you will have to add all its current key-value pairs as well. Only the pairs sent in the request are saved for this definition. This means that the key-value pairs that are not sent in a request are restored to default values. For example, if your definition has an array with values and it is not sent in an update request, the array values will be deleted.\n 👍 Additional Notes\n- You cannot change the type of an existing schema, e.g. from string to number.\n- You can remove a definition with this endpoint by providing deleted: true in the request. It will be moved to the Removed definitions section in the user interface. However, you cannot permanently remove a definition with this endpoint.\n 📘 Metadata Documentation\n Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Updates a metadata schema.\nWith this request, you can:\n- Add a nonexistent attribute definition to the metadata schema.\n- Update an existing attribute definition by overwriting its current values.\nIn the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged.\nHowever, if you want to update a definition, you will have to add all its current key-value pairs as well. Only the pairs sent in the request are saved for this definition. This means that the key-value pairs that are not sent in a request are restored to default values. For example, if your definition has an array with values and it is not sent in an update request, the array values will be deleted.\n\nAdditional Notes\n- You cannot change the type of an existing schema, e.g. from string to number.\n- You can remove a definition with this endpoint by providing deleted: true in the request. It will be moved to the Removed definitions section in the user interface. However, you cannot permanently remove a definition with this endpoint.\n\n\nMetadata Documentation\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -88273,7 +88325,7 @@
"Management"
],
"summary": "Delete Metadata Schema",
- "description": "Deletes permanently the metadata schema.\nIn standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are:\n- Campaign\n- Voucher\n- Publication\n- Redemption\n- Product\n- Customer\n- Order\n- Order line item\n- Loyalty Tier\n- Promotion Tier\n- Earning rule\n- Reward\nIf you want to delete only one definition, use the [Update Metadata Schema](/api-reference/management/update-metadata-schema) endpoint. In the request, provide the deleted: true pair in the definition object. This definition will be moved to Removed definitions.\nIf you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint.\n 🚧 Metadata Purging\nThis endpoint deletes permanently the metadata schemas only. However, it does not purge the metadata from associated entities, so the metadata added to those entities will remain.\nIf you want to purge metadata from the entities:\n1. Remove all the definitions you want to purge. You can do this either in Voucherify Project Settings > Metadata Schema tab or with the [Update Metadata Schema](/api-reference/management/update-metadata-schema) endpoint.\n2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema.\n3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities.\nNote:\n- This is an asynchronous action. You will be notified when it has been completed.\n- You cannot purge metadata for the Redemption and Publication schemas.\n4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify.\n 📘 Metadata Documentation\n Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Deletes permanently the metadata schema.\nIn standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are:\n- Campaign\n- Voucher\n- Publication\n- Redemption\n- Product\n- Customer\n- Order\n- Order line item\n- Loyalty Tier\n- Promotion Tier\n- Earning rule\n- Reward\nIf you want to delete only one definition, use the [Update Metadata Schema](/api-reference/management/update-metadata-schema) endpoint. In the request, provide the deleted: true pair in the definition object. This definition will be moved to Removed definitions.\nIf you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint.\n\nMetadata Purging\nThis endpoint deletes permanently the metadata schemas only. However, it does not purge the metadata from associated entities, so the metadata added to those entities will remain.\nIf you want to purge metadata from the entities:\n1. Remove all the definitions you want to purge. You can do this either in Voucherify Project Settings > Metadata Schema tab or with the [Update Metadata Schema](/api-reference/management/update-metadata-schema) endpoint.\n2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema.\n3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities.\nNote:\n- This is an asynchronous action. You will be notified when it has been completed.\n- You cannot purge metadata for the Redemption and Publication schemas.\n4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify.\n\n\nMetadata Documentation\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -88306,7 +88358,7 @@
"Management"
],
"summary": "Create Custom Event Schema",
- "description": "Creates a custom event schema.\nThe properties object is required, but it can be empty, however. This object is for optional custom properties (metadata).\n 📘 Custom Event Documentation\n Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Creates a custom event schema.\nThe properties object is required, but it can be empty, however. This object is for optional custom properties (metadata).\n\nCustom Event Documentation\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n",
"parameters": [],
"security": [
{
@@ -88362,7 +88414,7 @@
"Management"
],
"summary": "List Custom Event Schemas",
- "description": "Lists all custom event schemas available in the project.\n 📘 Custom Event Documentation\n Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Lists all custom event schemas available in the project.\n\nCustom Event Documentation\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n",
"parameters": [],
"security": [
{
@@ -88450,7 +88502,7 @@
"Management"
],
"summary": "Get Custom Event Schema",
- "description": "Retrieves a custom event schema.\n 📘 Custom Event Documentation\n Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Retrieves a custom event schema.\n\nCustom Event Documentation\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n",
"parameters": [],
"security": [
{
@@ -88493,7 +88545,7 @@
"Management"
],
"summary": "Update Custom Event Schema",
- "description": "Updates a custom event schema.\nWith this request, you can:\n- Add a nonexistent property to a custom event schema.\n- Update an existing property.\nIn the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged.\n 👍 Additional Notes\n- You can change the type of an existing property, e.g. from string to number.\n- You can remove a custom property with this endpoint by providing deleted: true in the request. However, you cannot permanently remove an event definition or its property with this endpoint.\n 📘 Custom Event Documentation\n Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Updates a custom event schema.\nWith this request, you can:\n- Add a nonexistent property to a custom event schema.\n- Update an existing property.\nIn the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged.\n\nAdditional Notes\n- You can change the type of an existing property, e.g. from string to number.\n- You can remove a custom property with this endpoint by providing deleted: true in the request. However, you cannot permanently remove an event definition or its property with this endpoint.\n\n\nCustom Event Documentation\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n",
"parameters": [],
"security": [
{
@@ -88558,7 +88610,7 @@
"Management"
],
"summary": "Delete Custom Event Schema",
- "description": "Deletes permanently the custom event schema with its custom properties (metadata).\n 📘 Custom Event Documentation\n Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Deletes permanently the custom event schema with its custom properties (metadata).\n\nCustom Event Documentation\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n",
"parameters": [],
"security": [
{
@@ -88591,7 +88643,7 @@
"Management"
],
"summary": "Create Webhook",
- "description": "Creates a new webhook configuration.\n 📘 Webhook Documentation\n Read [Webhooks v2024-01-01](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Creates a new webhook configuration.\n\nWebhook Documentation\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -88643,7 +88695,7 @@
"Management"
],
"summary": "List Webhooks",
- "description": "Lists all webhook configurations for the project.\n 📘 Webhook Documentation\n Read [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Lists all webhook configurations for the project.\n\nWebhook Documentation\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -88759,7 +88811,7 @@
"Management"
],
"summary": "Get Webhook",
- "description": "Retrieves a webhook configuration.\n 📘 Webhook Documentation\n Read [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Retrieves a webhook configuration.\n\nWebhook Documentation\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -88800,7 +88852,7 @@
"Management"
],
"summary": "Update Webhook",
- "description": "Updates a webhook configuration.\nThe events listed in the request are overwritten. If you want to add more events, provide also the events that are already in the webhook configuration.\n 📘 Webhook Documentation\n Read [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Updates a webhook configuration.\nThe events listed in the request are overwritten. If you want to add more events, provide also the events that are already in the webhook configuration.\n\nWebhook Documentation\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -88852,7 +88904,7 @@
"Management"
],
"summary": "Delete Webhook",
- "description": "Deletes a webhook configuration.\n 📘 Webhook Documentation\n Read [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Deletes a webhook configuration.\n\nWebhook Documentation\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -88885,7 +88937,7 @@
"Management"
],
"summary": "Create Brand",
- "description": "Creates a new brand configuration.\nYou can have only one brand configured for a project.\n 📘 White Labelling\n The white labelling settings which can be found in Project Settings > Brand Details and which are available only for Enterprise clients as a separate service can be configured only in the user interface.",
+ "description": "Creates a new brand configuration.\nYou can have only one brand configured for a project.\n\nWhite Labelling\nThe white labelling settings which can be found in Project Settings > Brand Details and which are available only for Enterprise clients as a separate service can be configured only in the user interface.\n",
"parameters": [],
"security": [
{
@@ -89105,7 +89157,7 @@
"Management"
],
"summary": "Update Brand",
- "description": "Updates a brand configuration.\nOnly the fields sent in the request will be updated. The fields omitted in the request will remain unchanged.\n 📘 White Labelling\n The white labelling settings which can be found in Project Settings > Brand Details and which are available only for Enterprise clients as a separate service can be configured only in the user interface.",
+ "description": "Updates a brand configuration.\nOnly the fields sent in the request will be updated. The fields omitted in the request will remain unchanged.\n\nWhite Labelling\nThe white labelling settings which can be found in Project Settings > Brand Details and which are available only for Enterprise clients as a separate service can be configured only in the user interface.\n",
"parameters": [],
"security": [
{
@@ -89191,7 +89243,7 @@
"OAuth"
],
"summary": "Generate OAuth 2.0 Token",
- "description": "Generate an OAuth 2.0 token for an API client. The token can be used to authorize access to the Voucherify API. The token inherits the permissions and IP whitelists of the API key that is used to generate the OAuth token. You can define the scope that limits its usage. You can generate up to 1000 OAuth tokens per project. The token expires in 900 seconds (15 minutes).\nIf the API key that is used to generate the OAuth token is deleted or blocked, you cannot generate new OAuth tokens and the existing ones will stop working within one minute.\nIf the API key used to generate an OAuth token is regenerated, the OAuth token can still be used.\n🚧 Format of scope values\nSeparate the values of the scope property with spaces.",
+ "description": "Generate an OAuth 2.0 token for an API client. The token can be used to authorize access to the Voucherify API. The token inherits the permissions and IP whitelists of the API key that is used to generate the OAuth token. You can define the scope that limits its usage. You can generate up to 1000 OAuth tokens per project. The token expires in 900 seconds (15 minutes).\nIf the API key that is used to generate the OAuth token is deleted or blocked, you cannot generate new OAuth tokens and the existing ones will stop working within one minute.\nIf the API key used to generate an OAuth token is regenerated, the OAuth token can still be used.\n\nFormat of scope values\nSeparate the values of the scope property with spaces.\n",
"parameters": [],
"security": [
{
@@ -89358,7 +89410,7 @@
"Client-side"
],
"summary": "Check Eligibility (client-side)",
- "description": "Generate a list of redeemables that are applicable in the context of the customer and order.\nThe new qualifications method is an improved version of [Campaign Qualifications](/api-reference/campaigns/examine-campaign-qualification), [Voucher Qualifications](/api-reference/vouchers/examine-voucher-qualification) API requests. The new qualification method introduces the following improvements:\n- Qualification results are returned faster\n- No limit on the number of returned redeemables\n- Introduces new qualification scenarios, not available in the previous version\n 👍 Scenario Guide\n Read our dedicated guide to learn about some use cases this endpoint can cover [here](/guides/checking-eligibility).\n# Paging \nThe Voucherify Qualifications API request will return to you all of the redeemables available for the customer in batches of up to 50 redeemables per page. To get the next batch of redeemables, you need to use the starting_after cursor.\nTo process of paging the redeemables works in the following manner:\n- You send the first API request for Qualifications without the starting_after parameter.\n- The response will contain a parameter named has_more. If the parameters value is set to true, then more redeemables are available.\n- Get the value of the created_at parameter of the last returned redeemable. The value of this parameter will be used as a cursor to retrieve the next page of redeemables.\n- Send another API request for Qualification with the starting_after parameter set to the value taken from the created_at parameter from the last returned redeemable.\n- Voucherify will return the next page of redeemables.\n- If the has_more parameter is set to true, apply steps 3-5 to get the next page of redeemables.\n# Caching\nQualification has a 5-minute cache for the returned results. If you change your campaign settings or validation rules, the changes will apply to qualification results after the cache refreshes.",
+ "description": "Generate a list of redeemables that are applicable in the context of the customer and order.\nThe new qualifications method is an improved version of [Campaign Qualifications](/api-reference/campaigns/examine-campaign-qualification), [Voucher Qualifications](/api-reference/vouchers/examine-voucher-qualification) API requests. The new qualification method introduces the following improvements:\n- Qualification results are returned faster\n- No limit on the number of returned redeemables\n- Introduces new qualification scenarios, not available in the previous version\n\nScenario Guide\nRead our dedicated guide to learn about some use cases this endpoint can cover [here](/guides/checking-eligibility).\n\n# Paging \nThe Voucherify Qualifications API request will return to you all of the redeemables available for the customer in batches of up to 50 redeemables per page. To get the next batch of redeemables, you need to use the starting_after cursor.\nTo process of paging the redeemables works in the following manner:\n- You send the first API request for Qualifications without the starting_after parameter.\n- The response will contain a parameter named has_more. If the parameters value is set to true, then more redeemables are available.\n- Get the value of the created_at parameter of the last returned redeemable. The value of this parameter will be used as a cursor to retrieve the next page of redeemables.\n- Send another API request for Qualification with the starting_after parameter set to the value taken from the created_at parameter from the last returned redeemable.\n- Voucherify will return the next page of redeemables.\n- If the has_more parameter is set to true, apply steps 3-5 to get the next page of redeemables.\n# Caching\nQualification has a 5-minute cache for the returned results. If you change your campaign settings or validation rules, the changes will apply to qualification results after the cache refreshes.",
"parameters": [],
"security": [
{
@@ -89646,7 +89698,7 @@
"Client-side"
],
"summary": "Redeem Stackable Discounts (client-side)",
- "description": "This method is accessible through public keys which you can use in client side requests coming from mobile and web browser applications.\n# How API returns calculated discounts and order amounts in the response\nIn the table below, you can see the logic the API follows to calculate discounts and amounts:\n\n\n 📘 Rollbacks\n You cant roll back a child redemption. When you call rollback on a stacked redemption, all child redemptions will be rolled back. You need to refer to a parent redemption ID in your [rollback request](/api-reference/redemptions/rollback-stackable-redemptions).",
+ "description": "This method is accessible through public keys which you can use in client side requests coming from mobile and web browser applications.\n# How API returns calculated discounts and order amounts in the response\nIn the table below, you can see the logic the API follows to calculate discounts and amounts:\n\n\n\nRollbacks\nYou cant roll back a child redemption. When you call rollback on a stacked redemption, all child redemptions will be rolled back. You need to refer to a parent redemption ID in your [rollback request](/api-reference/redemptions/rollback-stackable-redemptions).\n",
"parameters": [
{
"$ref": "#/components/parameters/origin"
diff --git a/reference/readonly-sdks/java/OpenAPI.json b/reference/readonly-sdks/java/OpenAPI.json
index 1a227b85c..f9827e891 100644
--- a/reference/readonly-sdks/java/OpenAPI.json
+++ b/reference/readonly-sdks/java/OpenAPI.json
@@ -52761,7 +52761,7 @@
"Publications"
],
"summary": "Create Publication with GET",
- "description": "This method selects vouchers that are suitable for publication, adds a publish entry and returns the publication.\nA voucher is suitable for publication when its active and hasnt been published yet.\n ❗️ Limited access\n Access to this endpoint is limited. This endpoint is designed for specific integrations and the API keys need to be configured to access this endpoint. Navigate to the **Dashboard** → **Project Settings** → **General** → **Integration Keys** to set up a pair of API keys and use them to send the request. \n 🚧 Clearly define the source of the voucher\n You must clearly define which source you want to publish the voucher code from. It can either be a code from a campaign or a specific voucher identified by a code. \n 🚧 Publish multiple vouchers\n This endpoint does not support the publishing of multiple vouchers from a single campaign. In case you want to publish multiple vouchers within a single publication, you need to use a [dedicated endpoint](/api-reference/publications/create-publication). \n 📘 Auto-update campaign\n In case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use an **auto-update** campaign. \n# Example Request \n \n ❗️ Required \n Query param voucher OR campaign MUST be filled out. If you provide both, campaign param will be skipped.",
+ "description": "This method selects vouchers that are suitable for publication, adds a publish entry and returns the publication.\nA voucher is suitable for publication when its active and hasnt been published yet.\n\nLimited access\nAccess to this endpoint is limited. This endpoint is designed for specific integrations and the API keys need to be configured to access this endpoint. Navigate to the **Dashboard** → **Project Settings** → **General** → **Integration Keys** to set up a pair of API keys and use them to send the request.\n\n\nClearly define the source of the voucher\nYou must clearly define which source you want to publish the voucher code from. It can either be a code from a campaign or a specific voucher identified by a code.\n\n\nPublish multiple vouchers\nThis endpoint does not support the publishing of multiple vouchers from a single campaign. In case you want to publish multiple vouchers within a single publication, you need to use a [dedicated endpoint](/api-reference/publications/create-publication).\n\n\nAuto-update campaign\nIn case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use an **auto-update** campaign.\n\n# Example Request \n \n\nRequired\nQuery param voucher OR campaign MUST be filled out. If you provide both, campaign param will be skipped.\n",
"parameters": [
{
"schema": {
@@ -52926,7 +52926,7 @@
"Qualifications"
],
"summary": "Check Eligibility",
- "description": "\n 🚧 The Qualifications endpoint ignores the rules checking:\n \n - Limit of total redeemed discount amount per campaign\n - Limit of total redemptions count per campaign\n - Redemptions per customer\n - Redemptions per customer in a campaign\n- Total amount before discount \nGenerate a list of redeemables that are applicable in the context of the customer and order.\nThe new qualifications method is an improved version of [Campaign Qualifications](/api-reference/campaigns/examine-campaign-qualification), [Voucher Qualifications](/api-reference/vouchers/examine-voucher-qualification) API requests. The new qualification method introduces the following improvements:\n- Qualification results are returned faster\n- No limit on the number of returned redeemables\n- Introduces new qualification scenarios, not available in the previous version\n 👍 Scenario Guide\n Read [the dedicated guide](/guides/checking-eligibility) to learn about some use cases this endpoint can cover.\n# Paging \nThe Voucherify Qualifications API request will return to you all of the redeemables available for the customer in batches of up to 50 redeemables per page. To get the next batch of redeemables, you need to use the starting_after cursor.\nTo process of paging the redeemables works in the following manner:\n- You send the first API request for Qualifications without the starting_after parameter.\n- The response will contain a parameter named has_more. If the parameters value is set to true, then more redeemables are available.\n- Get the value of the created_at parameter of the last returned redeemable. The value of this parameter will be used as a cursor to retrieve the next page of redeemables.\n- Send another API request for Qualification with the starting_after parameter set to the value taken from the created_at parameter from the last returned redeemable.\n- Voucherify will return the next page of redeemables.\n- If the has_more parameter is set to true, apply steps 3-5 to get the next page of redeemables.\n# Caching\nQualification has a 5-minute cache for the returned results. If you change your campaign settings or validation rules, the changes will apply to qualification results after the cache refreshes.",
+ "description": "\n\nThe Qualifications endpoint ignores the rules checking:\n- Limit of total redeemed discount amount per campaign\n- Limit of total redemptions count per campaign\n- Redemptions per customer\n- Redemptions per customer in a campaign\n- Total amount before discount\n\nGenerate a list of redeemables that are applicable in the context of the customer and order.\nThe new qualifications method is an improved version of [Campaign Qualifications](/api-reference/campaigns/examine-campaign-qualification), [Voucher Qualifications](/api-reference/vouchers/examine-voucher-qualification) API requests. The new qualification method introduces the following improvements:\n- Qualification results are returned faster\n- No limit on the number of returned redeemables\n- Introduces new qualification scenarios, not available in the previous version\n\nScenario Guide\nRead [the dedicated guide](/guides/checking-eligibility) to learn about some use cases this endpoint can cover.\n\n# Paging \nThe Voucherify Qualifications API request will return to you all of the redeemables available for the customer in batches of up to 50 redeemables per page. To get the next batch of redeemables, you need to use the starting_after cursor.\nTo process of paging the redeemables works in the following manner:\n- You send the first API request for Qualifications without the starting_after parameter.\n- The response will contain a parameter named has_more. If the parameters value is set to true, then more redeemables are available.\n- Get the value of the created_at parameter of the last returned redeemable. The value of this parameter will be used as a cursor to retrieve the next page of redeemables.\n- Send another API request for Qualification with the starting_after parameter set to the value taken from the created_at parameter from the last returned redeemable.\n- Voucherify will return the next page of redeemables.\n- If the has_more parameter is set to true, apply steps 3-5 to get the next page of redeemables.\n# Caching\nQualification has a 5-minute cache for the returned results. If you change your campaign settings or validation rules, the changes will apply to qualification results after the cache refreshes.",
"parameters": [],
"security": [
{
@@ -54475,7 +54475,7 @@
"Redemptions"
],
"summary": "Redeem Stackable Discounts",
- "description": "In the table below, you can see the logic the API follows to calculate discounts and amounts:\n\n\nAPI keys with a Merchant role cant use this endpoint.\n 📘 Rollbacks\n You cant roll back a child redemption. When you call rollback on a stacked redemption, all child redemptions will be rolled back. You need to refer to a parent redemption ID in your [rollback request](/api-reference/redemptions/rollback-stackable-redemptions). \n 📘 Also available on client-side\n This method is also accessible through public keys which you can use in client-side apps: mobile and web browser apps. Go to the dedicated [endpoint](/api-reference/client-side/redeem-stackable-discounts-client-side) to learn more.",
+ "description": "In the table below, you can see the logic the API follows to calculate discounts and amounts:\n\n\nAPI keys with a Merchant role cant use this endpoint.\n\nRollbacks\nYou cant roll back a child redemption. When you call rollback on a stacked redemption, all child redemptions will be rolled back. You need to refer to a parent redemption ID in your [rollback request](/api-reference/redemptions/rollback-stackable-redemptions).\n\n\nAlso available on client-side\nThis method is also accessible through public keys which you can use in client-side apps: mobile and web browser apps. Go to the dedicated [endpoint](/api-reference/client-side/redeem-stackable-discounts-client-side) to learn more.\n",
"parameters": [],
"security": [
{
@@ -54804,7 +54804,7 @@
"Vouchers"
],
"summary": "Generate Random Code",
- "description": "Create a generic (standalone) vouchers. You can choose to create a GIFT_VOUCHER, a DISCOUNT_VOUCHER, or a LOYALTY_CARD. \nWhen you create a new voucher, you can specify a type to create it.\nCreating a new voucher will create a new generic (standalone) vouchers if no campaign name or campaign_id is provided. However, if an ID or name of a campaign with the type set to STANDALONE is provided, the voucher will be added to such campaign. In case of the loyalty card, a campaign name is required.\nYou can optionally use the code parameter to define a specific code or the code_config parameter to design rules for Voucherify API to create a random code. If neither of the two parameters are passed, then a random code is generated by the Voucherify API.\nThis method will return an error when trying to create a voucher that already exists.\n🚧 Standalone Vouchers and Campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. The vouchers created with POST Create voucher and POST Generate random code endpoints do not have a campaign attached, so the values for campaign and campaign_id are null.\nTo create a generic (standalone) voucher with a type: STANDALONE, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.",
+ "description": "Create a generic (standalone) vouchers. You can choose to create a GIFT_VOUCHER, a DISCOUNT_VOUCHER, or a LOYALTY_CARD. \nWhen you create a new voucher, you can specify a type to create it.\nCreating a new voucher will create a new generic (standalone) vouchers if no campaign name or campaign_id is provided. However, if an ID or name of a campaign with the type set to STANDALONE is provided, the voucher will be added to such campaign. In case of the loyalty card, a campaign name is required.\nYou can optionally use the code parameter to define a specific code or the code_config parameter to design rules for Voucherify API to create a random code. If neither of the two parameters are passed, then a random code is generated by the Voucherify API.\nThis method will return an error when trying to create a voucher that already exists.\n\nStandalone Vouchers and Campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. The vouchers created with POST Create voucher and POST Generate random code endpoints do not have a campaign attached, so the values for campaign and campaign_id are null.\nTo create a generic (standalone) voucher with a type: STANDALONE, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.\n",
"parameters": [],
"security": [
{
@@ -56426,7 +56426,7 @@
"Vouchers"
],
"summary": "Create Voucher",
- "description": "Create a generic (standalone) voucher or a voucher in a campaign. You can choose to create a GIFT_VOUCHER, a DISCOUNT_VOUCHER, or a LOYALTY_CARD. The code path parameter can use all letters of the English alphabet, Arabic numerals and special characters.\nWhen you create a new voucher, you can specify a type to create it.\nIf no campaign name or campaign_id is provided, the new voucher will be a generic (standalone) one. However, if an ID or name of a campaign with the type set to STANDALONE is provided, the voucher will be added to this campaign. For a loyalty card, a campaign name or ID is required.\n🚧 Standalone Vouchers and Campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers created through The vouchers created with POST Create voucher and POST Generate random code endpoints do not have a campaign attached, so the values for campaign and campaign_id are null.\nTo create a generic (standalone) voucher with a type: STANDALONE, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.",
+ "description": "Create a generic (standalone) voucher or a voucher in a campaign. You can choose to create a GIFT_VOUCHER, a DISCOUNT_VOUCHER, or a LOYALTY_CARD. The code path parameter can use all letters of the English alphabet, Arabic numerals and special characters.\nWhen you create a new voucher, you can specify a type to create it.\nIf no campaign name or campaign_id is provided, the new voucher will be a generic (standalone) one. However, if an ID or name of a campaign with the type set to STANDALONE is provided, the voucher will be added to this campaign. For a loyalty card, a campaign name or ID is required.\n\nStandalone Vouchers and Campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers created through The vouchers created with POST Create voucher and POST Generate random code endpoints do not have a campaign attached, so the values for campaign and campaign_id are null.\nTo create a generic (standalone) voucher with a type: STANDALONE, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.\n",
"parameters": [],
"security": [
{
@@ -56933,7 +56933,7 @@
"Vouchers"
],
"summary": "Enable Voucher",
- "description": "There are various times when youll want to manage a vouchers accessibility. This can be done by two API methods for managing the voucher state - *enable* and *disable*. \n___\nThe method sets the voucher state to **active**. The voucher can be redeemed - only if the redemption occurs after the start date and the voucher is not expired.",
+ "description": "The method sets the voucher state to **active**. The voucher can be redeemed - only if the redemption occurs after the start date and the voucher is not expired.",
"parameters": [],
"security": [
{
@@ -57040,7 +57040,7 @@
"Vouchers"
],
"summary": "Disable Voucher",
- "description": "There are various times when youll want to manage a vouchers accessibility. This can be done by two API methods for managing the voucher state - *enable* and *disable*. \n___\nThis method sets the voucher state to **inactive**. The voucher cannot be redeemed.",
+ "description": "This method sets the voucher state to **inactive**. The voucher cannot be redeemed.",
"parameters": [],
"security": [
{
@@ -57633,7 +57633,7 @@
"Vouchers"
],
"summary": "Import Vouchers",
- "description": "Import generic (standalone) vouchers and gift cards into the repository.\nYou can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. \n Also, the request can include up to **10 MB** of data.\n 📘 Important notes\n - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z.\n - Custom code attributes (not supported by-default) need to be added as code **metadata**.\n - You **cannot import the same codes** to a single Voucherify Project.\nAny parameters not provided in the payload will be left blank or null.\nFor both **standalone discount vouchers and gift cards**, you can import the following fields: \n- code\n- category\n- active\n- type\n- start_date\n- expiration_date\n- redemption.quantity\n- additional_info\n- metadata\nFor **gift cards**, you can also import the following field:\n- gift.amount\nFor **discount vouchers**, you can import the discount object. The object will slightly vary depending on the type of discount. Each discount type **requires** the type to be defined in the import.\n\n\nFields other than the ones listed above wont be imported. Even if provided, they will be silently skipped.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).\n🚧 Standalone Vouchers and Campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers imported through the dashboard in the Vouchers section or through the API do not have a campaign attached, so the values for campaign and campaign_id are null.\nTo create a generic (standalone) voucher with a type: STANDALONE, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.",
+ "description": "Import generic (standalone) vouchers and gift cards into the repository.\nYou can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. \n Also, the request can include up to **10 MB** of data.\n\nImportant notes\n- **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z.\n- Custom code attributes (not supported by-default) need to be added as code **metadata**.\n- You **cannot import the same codes** to a single Voucherify Project.\n\nAny parameters not provided in the payload will be left blank or null.\nFor both **standalone discount vouchers and gift cards**, you can import the following fields: \n- code\n- category\n- active\n- type\n- start_date\n- expiration_date\n- redemption.quantity\n- additional_info\n- metadata\nFor **gift cards**, you can also import the following field:\n- gift.amount\nFor **discount vouchers**, you can import the discount object. The object will slightly vary depending on the type of discount. Each discount type **requires** the type to be defined in the import.\n\n\nFields other than the ones listed above wont be imported. Even if provided, they will be silently skipped.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).\n\nStandalone Vouchers and Campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers imported through the dashboard in the Vouchers section or through the API do not have a campaign attached, so the values for campaign and campaign_id are null.\nTo create a generic (standalone) voucher with a type: STANDALONE, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.\n",
"parameters": [],
"security": [
{
@@ -57906,7 +57906,7 @@
"Vouchers"
],
"summary": "Import Vouchers using CSV",
- "description": "Import generic (standalone) vouchers into the repository using a CSV file.\nThe CSV file has to include headers in the first line. All properties listed in the file headers that cannot be mapped to standard voucher fields will be added to the metadata object.\nYou can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. \n Also, the request can include a max. **10 MB** CSV file.\nYou can find an example CSV file [here](/build/discount-code-import).\n___\n 📘 Standard voucher fields mapping\n - Go to the [import vouchers](/api-reference/vouchers/import-vouchers) endpoint to see all standard CSV fields description (body params section).\n - Supported CSV file headers: Code,Voucher Type,Value,Discount Type,Category,Start Date,Expiration Date,Redemption Limit,Redeemed Quantity, Redeemed Amount,Active,Additional Info,Custom Metadata Property Name\n- **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. \n - YYYY-MM-DD\n - YYYY-MM-DDTHH\n - YYYY-MM-DDTHH:mm\n - YYYY-MM-DDTHH:mm:ss\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ss.SSSZ\n - Custom code attributes (not supported by-default) need to be added as code **metadata**.\n - You **cannot import the same codes** to a single Voucherify project.\n - You can, however, upload the same codes to update them.\n 📘 Categories\n In the structure representing your data, you can define a category that the voucher belongs to. You can later use the category of a voucher to group and search by specific criteria in the Dashboard and using the [List Vouchers](/api-reference/vouchers/list-vouchers) endpoint.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).\nYou can pass the webhooks_enable true parameter to trigger a webhook sendout for created or updated vouchers. Configure the [respective webhooks](/api-reference/introduction-to-webhooks) in Project settings. For updated webhooks, a webhook is sent even if the voucher hasnt been changed in the CSV file.\n🚧 Generic (standalone) vouchers and campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers imported through the dashboard in the Vouchers section or through the API do not have a campaign attached, so the values for campaign and campaign_id are null.",
+ "description": "Import generic (standalone) vouchers into the repository using a CSV file.\nThe CSV file has to include headers in the first line. All properties listed in the file headers that cannot be mapped to standard voucher fields will be added to the metadata object.\nYou can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. \n Also, the request can include a max. **10 MB** CSV file.\nYou can find an example CSV file [here](/build/discount-code-import).\n___\n\nStandard voucher fields mapping\n- Go to the [import vouchers](/api-reference/vouchers/import-vouchers) endpoint to see all standard CSV fields description (body params section).\n- Supported CSV file headers: Code,Voucher Type,Value,Discount Type,Category,Start Date,Expiration Date,Redemption Limit,Redeemed Quantity, Redeemed Amount,Active,Additional Info,Custom Metadata Property Name\n- **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z.\n - YYYY-MM-DD\n - YYYY-MM-DDTHH\n - YYYY-MM-DDTHH:mm\n - YYYY-MM-DDTHH:mm:ss\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ss.SSSZ\n- Custom code attributes (not supported by-default) need to be added as code **metadata**.\n- You **cannot import the same codes** to a single Voucherify project.\n- You can, however, upload the same codes to update them.\n\n\nCategories\nIn the structure representing your data, you can define a category that the voucher belongs to. You can later use the category of a voucher to group and search by specific criteria in the Dashboard and using the [List Vouchers](/api-reference/vouchers/list-vouchers) endpoint.\n\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).\nYou can pass the webhooks_enable true parameter to trigger a webhook sendout for created or updated vouchers. Configure the [respective webhooks](/api-reference/introduction-to-webhooks) in Project settings. For updated webhooks, a webhook is sent even if the voucher hasnt been changed in the CSV file.\n\nGeneric (standalone) vouchers and campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers imported through the dashboard in the Vouchers section or through the API do not have a campaign attached, so the values for campaign and campaign_id are null.\n",
"parameters": [],
"security": [
{
@@ -57952,7 +57952,7 @@
"Vouchers"
],
"summary": "Update Vouchers in Bulk",
- "description": "Updates specific metadata parameters for each code, respectively, in one asynchronous operation.\nThe request can include up to **10 MB** of data.\nUpserts are not supported.\n 🚧 Currently, only **metadata** updates are supported.\nThe response returns a unique asynchronous action ID. Use this ID in the query paramater of the [GET Async Action](/api-reference/async-actions/get-async-action) endpoint to check, e.g.:\n- The status of your request (in queue, in progress, done, or failed)\n- Resources that failed to be updated\n- The report file with details about the update\nThis API request starts a process that affects Voucherify data in bulk. In the case of small jobs (like bulk update), the request is put into a queue and processed when every other bulk request placed in the queue prior to this request is finished.",
+ "description": "Updates specific metadata parameters for each code, respectively, in one asynchronous operation.\nThe request can include up to **10 MB** of data.\nUpserts are not supported.\n\nCurrently, only **metadata** updates are supported.\n\nThe response returns a unique asynchronous action ID. Use this ID in the query paramater of the [GET Async Action](/api-reference/async-actions/get-async-action) endpoint to check, e.g.:\n- The status of your request (in queue, in progress, done, or failed)\n- Resources that failed to be updated\n- The report file with details about the update\nThis API request starts a process that affects Voucherify data in bulk. In the case of small jobs (like bulk update), the request is put into a queue and processed when every other bulk request placed in the queue prior to this request is finished.",
"parameters": [],
"security": [
{
@@ -58102,7 +58102,7 @@
"Vouchers"
],
"summary": "Release Validation Session",
- "description": "Manually release a validation session that has been set up for the voucher. This method undoes the actions that are explained in the [Locking validation session](/guides/locking-validation-session) guide. \n 📘 Release session in the Dashboard\n You can also use the [Validations Manager](/optimize/validations-and-redemptions#sessions) in the Dashboard to unlock sessions.",
+ "description": "Manually release a validation session that has been set up for the voucher. This method undoes the actions that are explained in the [Locking validation session](/guides/locking-validation-session) guide. \n\nRelease session in the Dashboard\nYou can also use the [Validations Manager](/optimize/validations-and-redemptions#sessions) in the Dashboard to unlock sessions.\n",
"parameters": [],
"security": [
{
@@ -58124,7 +58124,7 @@
"Campaigns"
],
"summary": "Create Campaign",
- "description": "Method to create a batch of vouchers aggregated in one campaign. You can choose a variety of voucher types and define a unique pattern for generating codes. \n 📘 Global uniqueness\n All campaign codes are unique across the whole project. Voucherify will not allow you to generate 2 campaigns with the same coupon code. \n 🚧 Code generation status\n This is an asynchronous action; you cant read or modify a newly created campaign until the code generation is completed. See the creation_status field in the [campaign object](/api-reference/campaigns/campaign-object) description.",
+ "description": "Method to create a batch of vouchers aggregated in one campaign. You can choose a variety of voucher types and define a unique pattern for generating codes. \n\nGlobal uniqueness\nAll campaign codes are unique across the whole project. Voucherify will not allow you to generate 2 campaigns with the same coupon code.\n\n\nCode generation status\nThis is an asynchronous action; you cant read or modify a newly created campaign until the code generation is completed. See the creation_status field in the [campaign object](/api-reference/campaigns/campaign-object) description.\n",
"parameters": [],
"security": [
{
@@ -59345,7 +59345,7 @@
"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. \nFields other than the ones listed in the request body wont be modified. Even if provided, they will be silently skipped. \n 🚧 Vouchers will be affected\n This method will update vouchers aggregated in the campaign. It will affect all vouchers that are not published or redeemed yet.",
+ "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. \nFields other than the ones listed in the request body wont be modified. Even if provided, they will be silently skipped. \n\nVouchers will be affected\nThis method will update vouchers aggregated in the campaign. It will affect all vouchers that are not published or redeemed yet.\n",
"parameters": [],
"security": [
{
@@ -59956,7 +59956,7 @@
"Campaigns"
],
"summary": "Enable Campaign",
- "description": "There are various times when youll want to manage a campaigns accessibility. This can be done by two API methods for managing the campaign state - *enable* and *disable*. \nSets campaign state to **active**. The vouchers in this campaign can be redeemed - only if the redemption occurs after the start date of the campaign and voucher and the voucher and campaign are not expired.",
+ "description": "Sets campaign state to **active**. The vouchers in this campaign can be redeemed - only if the redemption occurs after the start date of the campaign and voucher and the voucher and campaign are not expired.",
"parameters": [],
"security": [
{
@@ -60001,7 +60001,7 @@
"Campaigns"
],
"summary": "Disable Campaign",
- "description": "There are various times when youll want to manage a campaigns accessibility. This can be done by two API methods for managing the campaign state - *enable* and *disable*. \nSets campaign state to **inactive**. The vouchers in this campaign can no longer be redeemed.",
+ "description": "Sets campaign state to **inactive**. The vouchers in this campaign can no longer be redeemed.",
"parameters": [],
"security": [
{
@@ -60046,7 +60046,7 @@
"Campaigns"
],
"summary": "List Campaign Transactions",
- "description": "Retrieves all transactions for the campaign with the given campaign ID or campaign name. The id filter denotes the unique transaction identifier.\n 🚧\n The endpoint works only for gift card and loyalty campaigns.",
+ "description": "Retrieves all transactions for the campaign with the given campaign ID or campaign name. The id filter denotes the unique transaction identifier.\n\nThe endpoint works only for gift card and loyalty campaigns.\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -60200,7 +60200,7 @@
}
],
"summary": "Export Campaign Transactions",
- "description": "Export transactions is an asynchronous process that generates a CSV file with the data about credit movements on all gift cards or point movements on all loyalty cards in a given campaign.\nTo export transactions:\n1. In the export request, use parameters to select which fields will be exported, in what order, and which data will be filtered.\n2. Use the returned id to track the export status with the [GET Export](/api-reference/exports/get-export) method.\n3. In the GET Export method, when the returned status field has the DONE value, the export file has been generated.\n4. Use the URL in the result property to download the file. You must be logged to your Voucherify account on a given cluster in the browser to be able to download the file.\nAn export request will almost always result in a single file being generated by the system. However, when the data volume is large, the system may split the results into multiple files.\nAn example export file can look as follows:\n\n\n 👍 Export Loyalty Campaign Transactions\n For loyalty campaigns, this method works in the same way the [POST Export Loyalty Campaign Transactions](/api-reference/loyalties/export-loyalty-campaign-transactions) does.",
+ "description": "Export transactions is an asynchronous process that generates a CSV file with the data about credit movements on all gift cards or point movements on all loyalty cards in a given campaign.\nTo export transactions:\n1. In the export request, use parameters to select which fields will be exported, in what order, and which data will be filtered.\n2. Use the returned id to track the export status with the [GET Export](/api-reference/exports/get-export) method.\n3. In the GET Export method, when the returned status field has the DONE value, the export file has been generated.\n4. Use the URL in the result property to download the file. You must be logged to your Voucherify account on a given cluster in the browser to be able to download the file.\nAn export request will almost always result in a single file being generated by the system. However, when the data volume is large, the system may split the results into multiple files.\nAn example export file can look as follows:\n\n\n\nExport Loyalty Campaign Transactions\nFor loyalty campaigns, this method works in the same way the [POST Export Loyalty Campaign Transactions](/api-reference/loyalties/export-loyalty-campaign-transactions) does.\n",
"requestBody": {
"description": "Specify the parameters for the transaction export.",
"content": {
@@ -60329,7 +60329,7 @@
"Campaigns"
],
"summary": "Get Campaign Summary",
- "description": "Returns data for campaign analytics, covering validations, redemptions, publications, and other details specific to a given campaign type.\nUse start_date and end_date to narrow down the data to specific periods.\n🚧 Campaigns created before 17 June 2025\nThis endpoint returns analytics data for campaigns that were created after 17 June 2025. Older campaigns return empty data.",
+ "description": "Returns data for campaign analytics, covering validations, redemptions, publications, and other details specific to a given campaign type.\nUse start_date and end_date to narrow down the data to specific periods.\n\nCampaigns created before 17 June 2025\nThis endpoint returns analytics data for campaigns that were created after 17 June 2025. Older campaigns return empty data.\n",
"parameters": [
{
"name": "start_date",
@@ -62630,7 +62630,7 @@
"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.\n# Pagination\n 🚧 Important!\n 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.\n# Filter Query\nThe filters query parameter allows for joining multiple parameters with logical operators. The syntax looks as follows:\n\n## Examples\n\n",
+ "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.\n# Pagination\n\nImportant!\nIf 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.\n\n# Filter Query\nThe filters query parameter allows for joining multiple parameters with logical operators. The syntax looks as follows:\n\n## Examples\n\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -62857,7 +62857,7 @@
"Publications"
],
"summary": "Create Publication",
- "description": "This method selects vouchers that are suitable for publication, adds a publish entry and returns the publication.\nA voucher is suitable for publication when its active and hasnt been published yet. \n 🚧 Clearly define the source of the voucher\n You must clearly define which source you want to publish the voucher code from. It can either be a code from a campaign or a specific voucher identified by a code. \n 🚧 Publish multiple vouchers\n In case you want to publish multiple vouchers within a single publication, you need to specify the campaign name and number of vouchers you want to publish. \n 📘 Auto-update campaign\n In case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use an **auto-update** campaign.",
+ "description": "This method selects vouchers that are suitable for publication, adds a publish entry and returns the publication.\nA voucher is suitable for publication when its active and hasnt been published yet. \n\nClearly define the source of the voucher\nYou must clearly define which source you want to publish the voucher code from. It can either be a code from a campaign or a specific voucher identified by a code.\n\n\nPublish multiple vouchers\nIn case you want to publish multiple vouchers within a single publication, you need to specify the campaign name and number of vouchers you want to publish.\n\n\nAuto-update campaign\nIn case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use an **auto-update** campaign.\n",
"parameters": [
{
"schema": {
@@ -64999,7 +64999,7 @@
"Redemptions"
],
"summary": "Rollback Redemption",
- "description": "Your business logic may include a case when you need to undo a redemption. You can revert a redemption by calling this API endpoint. This endpoint rolls back only single redemptions, meaning those that are not stacked. Stacked redemptions belong to a parent redemption. To roll back a parent redemption, including all of its individual redemptions, use the [POST Rollback Stackable Redemptions](/api-reference/redemptions/rollback-stackable-redemptions) \n🚧 \nYou can roll back a redemption up to 3 months back. \n # Effect \nThe operation \n- creates a rollback entry in vouchers redemption history (redemption.redemption_entries) and \n- gives 1 redemption back to the pool (decreases redeemed_quantity by 1). \n# Returned funds \nIn case of *gift card vouchers*, this method returns funds back according to the source redemption. In case of *loyalty card vouchers*, this method returns points back according to the source redemption.",
+ "description": "Your business logic may include a case when you need to undo a redemption. You can revert a redemption by calling this API endpoint. This endpoint rolls back only single redemptions, meaning those that are not stacked. Stacked redemptions belong to a parent redemption. To roll back a parent redemption, including all of its individual redemptions, use the [POST Rollback Stackable Redemptions](/api-reference/redemptions/rollback-stackable-redemptions) \n\nYou can roll back a redemption up to 3 months back.\n\n # Effect \nThe operation \n- creates a rollback entry in vouchers redemption history (redemption.redemption_entries) and \n- gives 1 redemption back to the pool (decreases redeemed_quantity by 1). \n# Returned funds \nIn case of *gift card vouchers*, this method returns funds back according to the source redemption. In case of *loyalty card vouchers*, this method returns points back according to the source redemption.",
"parameters": [
{
"schema": {
@@ -65686,7 +65686,7 @@
"Redemptions"
],
"summary": "Rollback Stackable Redemptions",
- "description": "Rollback a stackable redemption. When you roll back a stacked redemption, all child redemptions will be rolled back. Provide the parent redemption ID as the path parameter. However, you can use this endpoint to roll back a single redemption that does not have a parent, similarly to [POST Rollback redemption](/api-reference/redemptions/rollback-redemption).\n🚧 \n You can roll back a redemption up to 3 months back.",
+ "description": "Rollback a stackable redemption. When you roll back a stacked redemption, all child redemptions will be rolled back. Provide the parent redemption ID as the path parameter. However, you can use this endpoint to roll back a single redemption that does not have a parent, similarly to [POST Rollback redemption](/api-reference/redemptions/rollback-redemption).\n\nYou can roll back a redemption up to 3 months back.\n",
"parameters": [
{
"schema": {
@@ -65771,11 +65771,12 @@
"/v1/loyalties": {
"get": {
"operationId": "list-loyalty-programs",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Campaigns",
- "description": "Returns a list of your loyalty campaigns.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nReturns a list of your loyalty campaigns.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -65986,11 +65987,12 @@
},
"post": {
"operationId": "create-loyalty-program",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Create Loyalty Campaign",
- "description": "Creates a batch of [loyalty cards](/api-reference/loyalties/get-member) aggregated in a single loyalty campaign. It also allows you to define a custom codes pattern. \n 📘 Global uniqueness\n All codes are unique across the whole project. Voucherify wont allow to generate the same codes in any of your campaigns.\n 🚧 Asynchronous action!\n This is an asynchronous action, you cant read or modify a newly created campaign until the code generation is completed. See creation_status field in the [loyalty campaign object](/api-reference/loyalties/loyalty-campaign-object) description.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nCreates a batch of [loyalty cards](/api-reference/loyalties/get-member) aggregated in a single loyalty campaign. It also allows you to define a custom codes pattern. \n\nGlobal uniqueness\nAll codes are unique across the whole project. Voucherify wont allow to generate the same codes in any of your campaigns.\n\n\nAsynchronous action!\nThis is an asynchronous action, you cant read or modify a newly created campaign until the code generation is completed. See creation_status field in the [loyalty campaign object](/api-reference/loyalties/loyalty-campaign-object) description.\n",
"parameters": [],
"security": [
{
@@ -66195,11 +66197,12 @@
],
"get": {
"operationId": "get-loyalty-program",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Loyalty Campaign",
- "description": "Retrieve a specific loyalty campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve a specific loyalty campaign.",
"parameters": [],
"security": [
{
@@ -66302,11 +66305,12 @@
},
"put": {
"operationId": "update-loyalty-program",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Update Loyalty Campaign",
- "description": "Updates a loyalty program. \nFields other than those specified in the allowed request body payload wont be modified (even if provided they are silently skipped). Any parameters not provided will be left unchanged. \nThis method will update the [loyalty cards](/api-reference/loyalties/get-member) which have not been published or redeemed yet.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nUpdates a loyalty program. \nFields other than those specified in the allowed request body payload wont be modified (even if provided they are silently skipped). Any parameters not provided will be left unchanged. \nThis method will update the [loyalty cards](/api-reference/loyalties/get-member) which have not been published or redeemed yet.",
"parameters": [],
"security": [
{
@@ -66492,11 +66496,12 @@
},
"delete": {
"operationId": "delete-loyalty-program",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Delete Loyalty Campaign",
- "description": "Deletes a loyalty campaign and all related loyalty cards. This action cannot be undone. Also, it immediately removes any redemptions on loyalty cards.\nIf the force parameter is set to false or not set at all, the loyalty campaign and all related loyalty cards will be moved to [the bin](/api-reference/bin/list-bin-entries).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nDeletes a loyalty campaign and all related loyalty cards. This action cannot be undone. Also, it immediately removes any redemptions on loyalty cards.\nIf the force parameter is set to false or not set at all, the loyalty campaign and all related loyalty cards will be moved to [the bin](/api-reference/bin/list-bin-entries).",
"parameters": [
{
"schema": {
@@ -66548,11 +66553,12 @@
],
"get": {
"operationId": "list-members",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Members",
- "description": "Returns a list of your loyalty cards. The loyalty cards are sorted by creation date, with the most recent loyalty cards appearing first.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nReturns a list of your loyalty cards. The loyalty cards are sorted by creation date, with the most recent loyalty cards appearing first.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -66723,11 +66729,12 @@
},
"post": {
"operationId": "add-member",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Add Member",
- "description": "This method assigns a loyalty card to a customer. It selects a [loyalty card](/api-reference/vouchers/get-voucher) suitable for publication, adds a publish entry, and returns the published voucher. \nA voucher is suitable for publication when its active and hasnt been published yet. \n 📘 Auto-update campaign\n In case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use **auto-update** campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nThis method assigns a loyalty card to a customer. It selects a [loyalty card](/api-reference/vouchers/get-voucher) suitable for publication, adds a publish entry, and returns the published voucher. \nA voucher is suitable for publication when its active and hasnt been published yet. \n\nAuto-update campaign\nIn case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use **auto-update** campaign.\n",
"parameters": [],
"security": [
{
@@ -66892,11 +66899,12 @@
],
"get": {
"operationId": "get-member-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Member with campaign ID",
- "description": "Retrieves the loyalty card with the given member ID (i.e. voucher code).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieves the loyalty card with the given member ID (i.e. voucher code).",
"parameters": [],
"security": [
{
@@ -66988,11 +66996,12 @@
],
"get": {
"operationId": "get-member",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Member",
- "description": "Retrieve loyalty card with the given member ID (i.e. voucher code). \n 📘 Alternative endpoint\n This endpoint is an alternative to this [endpoint](/api-reference/loyalties/get-member-with-campaign-id). The URL was re-designed to allow you to retrieve loyalty card details without having to provide the campaignId as a path parameter.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve loyalty card with the given member ID (i.e. voucher code). \n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/get-member-with-campaign-id). The URL was re-designed to allow you to retrieve loyalty card details without having to provide the campaignId as a path parameter.\n",
"parameters": [],
"security": [
{
@@ -67084,11 +67093,12 @@
],
"get": {
"operationId": "list-campaign-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Campaign Pending Points",
- "description": "Lists all pending points that are currently assigned to all loyalty cards in a campaign. Once the points are added to the card, the entry is no longer returned.\n👍 Configuring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nLists all pending points that are currently assigned to all loyalty cards in a campaign. Once the points are added to the card, the entry is no longer returned.\n\nConfiguring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n",
"parameters": [
{
"schema": {
@@ -67292,11 +67302,12 @@
],
"get": {
"operationId": "list-member-pending-points-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Pending Points with campaign ID",
- "description": "Lists all pending points that are currently assigned to the loyalty card. Once the points are added to the card, the entry is no longer returned.\n👍 Configuring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nLists all pending points that are currently assigned to the loyalty card. Once the points are added to the card, the entry is no longer returned.\n\nConfiguring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n",
"parameters": [
{
"schema": {
@@ -67491,11 +67502,12 @@
],
"get": {
"operationId": "list-member-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Pending Points",
- "description": "\n 📘 Alternative endpoint\n This endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-member-pending-points-with-campaign-id). The URL was re-designed to list member pending points without having to provide the campaignId as a path parameter.\nLists all pending points that are currently assigned to the loyalty card. Once the points are added to the card, the entry is no longer returned.\n👍 Configuring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-member-pending-points-with-campaign-id). The URL was re-designed to list member pending points without having to provide the campaignId as a path parameter.\n\nLists all pending points that are currently assigned to the loyalty card. Once the points are added to the card, the entry is no longer returned.\n\nConfiguring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n",
"parameters": [
{
"schema": {
@@ -67699,11 +67711,12 @@
],
"post": {
"operationId": "activate-member-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Activate Member Pending Points",
- "description": "Activate manually the pending points and add them to the loyalty card. The pending points are determined by the pending point ID.\nOnce activated, the pending point entry with that ID is not listed by the endpoints: List member ([with campaign ID](/api-reference/loyalties/list-member-pending-points-with-campaign-id), [without campaign ID](/api-reference/loyalties/list-member-pending-points)), [List campaign pending points](/api-reference/loyalties/list-campaign-pending-points).\nThis **POST** method does not require a request body.\n👍 Configuring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nActivate manually the pending points and add them to the loyalty card. The pending points are determined by the pending point ID.\nOnce activated, the pending point entry with that ID is not listed by the endpoints: List member ([with campaign ID](/api-reference/loyalties/list-member-pending-points-with-campaign-id), [without campaign ID](/api-reference/loyalties/list-member-pending-points)), [List campaign pending points](/api-reference/loyalties/list-campaign-pending-points).\nThis **POST** method does not require a request body.\n\nConfiguring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n",
"parameters": [],
"security": [
{
@@ -67764,11 +67777,12 @@
],
"post": {
"operationId": "adjust-member-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Adjust Member Pending Points",
- "description": "Adjusts the pending points with a given ID. You can add or subtract the number of points.\n👍 Configuring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nAdjusts the pending points with a given ID. You can add or subtract the number of points.\n\nConfiguring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n",
"parameters": [],
"security": [
{
@@ -67849,11 +67863,12 @@
],
"post": {
"operationId": "cancel-member-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Cancel Member Pending Points",
- "description": "Cancel manually the pending points for the loyalty card. The pending points are determined by the pending point ID.\nOnce canceled, the pending point entry with that ID is not listed by the endpoints: List member ([with campaign ID](/api-reference/loyalties/list-member-pending-points-with-campaign-id), [without campaign ID](/api-reference/loyalties/list-member-pending-points)), [List campaign pending points](/api-reference/loyalties/list-campaign-pending-points).\nThis **POST** method does not require a request body and it returns an empty, 204, response.\n👍 Configuring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nCancel manually the pending points for the loyalty card. The pending points are determined by the pending point ID.\nOnce canceled, the pending point entry with that ID is not listed by the endpoints: List member ([with campaign ID](/api-reference/loyalties/list-member-pending-points-with-campaign-id), [without campaign ID](/api-reference/loyalties/list-member-pending-points)), [List campaign pending points](/api-reference/loyalties/list-campaign-pending-points).\nThis **POST** method does not require a request body and it returns an empty, 204, response.\n\nConfiguring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n",
"parameters": [],
"security": [
{
@@ -67891,11 +67906,12 @@
],
"get": {
"operationId": "list-member-activity-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Activity with campaign ID",
- "description": "Retrieves the list of activities for the given member ID related to a voucher and customer who is the holder of the voucher.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieves the list of activities for the given member ID related to a voucher and customer who is the holder of the voucher.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -67951,11 +67967,12 @@
],
"get": {
"operationId": "list-member-activity",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Activity",
- "description": "\n 📘 Alternative endpoint\n This endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-member-activity-with-campaign-id). The URL was re-designed to allow you to get member activities without having to provide the campaignId as a path parameter.\nRetrieves the list of activities for the given member ID related to a voucher and customer who is the holder of the voucher.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-member-activity-with-campaign-id). The URL was re-designed to allow you to get member activities without having to provide the campaignId as a path parameter.\n\nRetrieves the list of activities for the given member ID related to a voucher and customer who is the holder of the voucher.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -68020,11 +68037,12 @@
],
"post": {
"operationId": "update-loyalty-card-balance-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Adjust Loyalty Card Balance with campaign ID",
- "description": "This method adds or removes balance to an existing loyalty card that is assigned to a holder. The removal of points will consume the points that expire the soonest. \n >🚧 Async Action\n \n This is an async action. If you want to perform several add or remove loyalty card balance actions in a short time and their order matters, set up sufficient time-out between the calls.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nThis method adds or removes balance to an existing loyalty card that is assigned to a holder. The removal of points will consume the points that expire the soonest. \n \nAsync Action\nThis is an async action. If you want to perform several add or remove loyalty card balance actions in a short time and their order matters, set up sufficient time-out between the calls.\n",
"parameters": [],
"security": [
{
@@ -68112,11 +68130,12 @@
],
"post": {
"operationId": "update-loyalty-card-balance",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Adjust Loyalty Card Balance",
- "description": "This method gives adds or removes balance to an existing loyalty card that is assigned to a holder. The removal of points will consume the points that expire the soonest. \n >🚧 Async Action\n \n This is an async action. If you want to perform several add or remove loyalty card balance actions in a short time and their order matters, set up sufficient time-out between the calls.\n 📘 Alternative endpoint\n This endpoint is an alternative to this [endpoint](/api-reference/loyalties/adjust-loyalty-card-balance-with-campaign-id). The URL was re-designed to allow you to add or remove loyalty card balance without having to provide the campaignId as a path parameter.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nThis method gives adds or removes balance to an existing loyalty card that is assigned to a holder. The removal of points will consume the points that expire the soonest. \n \nAsync Action\nThis is an async action. If you want to perform several add or remove loyalty card balance actions in a short time and their order matters, set up sufficient time-out between the calls.\n\n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/adjust-loyalty-card-balance-with-campaign-id). The URL was re-designed to allow you to add or remove loyalty card balance without having to provide the campaignId as a path parameter.\n",
"parameters": [],
"security": [
{
@@ -68200,11 +68219,12 @@
],
"post": {
"operationId": "transfer-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Transfer Loyalty Points",
- "description": "Transfer points between different loyalty cards which have holders.\nProvide the campaign ID and the loyalty card ID you want the points to be transferred to as path parameters. In the request body, provide the loyalty cards you want the points to be transferred from and the number of points to transfer from each card.\nTransfer works only for loyalty cards that have holders, meaning the cards were published to customers.\nThe transferred points expire according to the target program expiration rules.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nTransfer points between different loyalty cards which have holders.\nProvide the campaign ID and the loyalty card ID you want the points to be transferred to as path parameters. In the request body, provide the loyalty cards you want the points to be transferred from and the number of points to transfer from each card.\nTransfer works only for loyalty cards that have holders, meaning the cards were published to customers.\nThe transferred points expire according to the target program expiration rules.",
"parameters": [],
"security": [
{
@@ -68320,11 +68340,12 @@
],
"get": {
"operationId": "list-loyalty-campaign-transactions",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Campaign Transactions",
- "description": "Retrieves all transactions for the campaign with the given campaign ID or campaign name.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieves all transactions for the campaign with the given campaign ID or campaign name.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -68467,6 +68488,7 @@
],
"post": {
"operationId": "export-loyalty-campaign-transactions",
+ "deprecated": true,
"tags": [
"Loyalties"
],
@@ -68478,7 +68500,7 @@
}
],
"summary": "Export Loyalty Campaign Transactions",
- "description": "Export transactions is an asynchronous process that generates a CSV file with the data about or point movements on all loyalty cards in a given campaign.\nTo export transactions:\n1. In the export request, use parameters to select which fields will be exported, in what order, and which data will be filtered.\n2. Use the returned id to track the export status with the [GET Export](/api-reference/exports/get-export) method.\n3. In the GET Export method, when the returned status field has the DONE value, the export file has been generated.\n4. Use the URL in the result property to download the file. You must be logged to your Voucherify account on a given cluster in the browser to be able to download the file.\nAn export request will almost always result in a single file being generated by the system. However, when the data volume is large, the system may split the results into multiple files.\nAn example export file can look as follows:\n\n\n 👍 Export Campaign Transactions\n This method works in the same way the [POST Export Campaign Transactions](/api-reference/campaigns/export-campaign-transactions) does, but it is limited to loyalty campaigns only. The POST Export Campaign Transactions method can also export gift card campaign transactions.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nExport transactions is an asynchronous process that generates a CSV file with the data about or point movements on all loyalty cards in a given campaign.\nTo export transactions:\n1. In the export request, use parameters to select which fields will be exported, in what order, and which data will be filtered.\n2. Use the returned id to track the export status with the [GET Export](/api-reference/exports/get-export) method.\n3. In the GET Export method, when the returned status field has the DONE value, the export file has been generated.\n4. Use the URL in the result property to download the file. You must be logged to your Voucherify account on a given cluster in the browser to be able to download the file.\nAn export request will almost always result in a single file being generated by the system. However, when the data volume is large, the system may split the results into multiple files.\nAn example export file can look as follows:\n\n\n\nExport Campaign Transactions\nThis method works in the same way the [POST Export Campaign Transactions](/api-reference/campaigns/export-campaign-transactions) does, but it is limited to loyalty campaigns only. The POST Export Campaign Transactions method can also export gift card campaign transactions.\n",
"requestBody": {
"description": "Specify the parameters for the transaction export.",
"content": {
@@ -68612,11 +68634,12 @@
],
"get": {
"operationId": "list-loyalty-card-transactions-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Card Transactions with campaign ID",
- "description": "Retrieve transaction data related to point movements for a specific loyalty card.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve transaction data related to point movements for a specific loyalty card.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -68977,11 +69000,12 @@
],
"get": {
"operationId": "list-loyalty-card-transactions",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Card Transactions",
- "description": "Retrieve transaction data related to point movements for a specific loyalty card.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve transaction data related to point movements for a specific loyalty card.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -69342,11 +69366,12 @@
],
"post": {
"operationId": "export-loyalty-card-transactions",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Export Loyalty Card Transactions",
- "description": "Export transactions that are associated with point movements on a loyalty card.\n\n\n",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nExport transactions that are associated with point movements on a loyalty card.\n\n\n",
"parameters": [],
"security": [
{
@@ -69485,11 +69510,12 @@
],
"post": {
"operationId": "export-loyalty-card-transactions-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Export Loyalty Card Transactions with campaign ID",
- "description": "Export transactions that are associated with point movements on a loyalty card.\n\n\n",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nExport transactions that are associated with point movements on a loyalty card.\n\n\n",
"parameters": [],
"security": [
{
@@ -69628,11 +69654,12 @@
],
"get": {
"operationId": "list-points-expiration",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Card Point Expiration",
- "description": "Retrieve loyalty point expiration buckets for a given loyalty card. Expired point buckets are not returned in this endpoint. You can use the [Exports API](/api-reference/exports/create-export) to retrieve a list of both ACTIVE and EXPIRED point buckets.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve loyalty point expiration buckets for a given loyalty card. Expired point buckets are not returned in this endpoint. You can use the [Exports API](/api-reference/exports/create-export) to retrieve a list of both ACTIVE and EXPIRED point buckets.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -69735,11 +69762,12 @@
],
"post": {
"operationId": "create-points-expiration-export",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Export Loyalty Campaign Point Expiration",
- "description": "Schedule the generation of a point expiration CSV file for a particular campaign. It can list point buckets, which can have an ACTIVE or EXPIRED status.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nSchedule the generation of a point expiration CSV file for a particular campaign. It can list point buckets, which can have an ACTIVE or EXPIRED status.",
"parameters": [],
"security": [
{
@@ -69903,11 +69931,12 @@
],
"get": {
"operationId": "list-earning-rules",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Earning Rules",
- "description": "Returns a list of all earning rules within a given campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nReturns a list of all earning rules within a given campaign.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -70469,11 +70498,12 @@
},
"post": {
"operationId": "create-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Create Earning Rule",
- "description": "Create earning rules for a loyalty campaign.\n 🚧 Maximum number of earning rules\n You can create up to 100 earning rules per project. The limit can be customized for clients with a single-tenant setup.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nCreate earning rules for a loyalty campaign.\n\nMaximum number of earning rules\nYou can create up to 100 earning rules per project. The limit can be customized for clients with a single-tenant setup.\n",
"parameters": [],
"security": [
{
@@ -71639,11 +71669,12 @@
],
"get": {
"operationId": "get-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Earning Rule",
- "description": "Retrieves an earning rule assigned to a campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieves an earning rule assigned to a campaign.",
"parameters": [],
"security": [
{
@@ -71918,11 +71949,12 @@
},
"put": {
"operationId": "update-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Update Earning Rule",
- "description": "Update an earning rule definition.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nUpdate an earning rule definition.",
"parameters": [],
"security": [
{
@@ -72027,11 +72059,12 @@
},
"delete": {
"operationId": "delete-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Delete Earning Rule",
- "description": "This method deletes an earning rule for a specific loyalty campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nThis method deletes an earning rule for a specific loyalty campaign.",
"parameters": [],
"security": [
{
@@ -72069,11 +72102,12 @@
],
"post": {
"operationId": "enable-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Enable Earning Rule",
- "description": "Enable an earning rule.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nEnable an earning rule.",
"parameters": [],
"security": [
{
@@ -72152,11 +72186,12 @@
],
"post": {
"operationId": "disable-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Disable Earning Rule",
- "description": "Disable an earning rule.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nDisable an earning rule.",
"parameters": [],
"security": [
{
@@ -72220,11 +72255,12 @@
],
"get": {
"operationId": "list-member-rewards",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Rewards",
- "description": "Retrieves the list of rewards that the given customer (identified by member_id, which is a loyalty card assigned to a particular customer) **can get in exchange for loyalty points**. \nYou can use the affordable_only parameter to limit the results to rewards that the customer can actually afford (only rewards whose price in points is not higher than the loyalty points balance on a loyalty card). \nPlease note that rewards that are disabled (i.e. set to Not Available in the Dashboard) for a given loyalty tier reward mapping will not be returned in this endpoint.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieves the list of rewards that the given customer (identified by member_id, which is a loyalty card assigned to a particular customer) **can get in exchange for loyalty points**. \nYou can use the affordable_only parameter to limit the results to rewards that the customer can actually afford (only rewards whose price in points is not higher than the loyalty points balance on a loyalty card). \nPlease note that rewards that are disabled (i.e. set to Not Available in the Dashboard) for a given loyalty tier reward mapping will not be returned in this endpoint.",
"parameters": [
{
"in": "query",
@@ -72468,11 +72504,12 @@
],
"get": {
"operationId": "get-reward-details",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Reward Details",
- "description": "Get reward details in the context of a loyalty campaign and reward assignment ID.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nGet reward details in the context of a loyalty campaign and reward assignment ID.",
"parameters": [],
"security": [
{
@@ -72572,11 +72609,12 @@
],
"get": {
"operationId": "list-reward-assignments-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Reward Assignments with campaign ID",
- "description": "Returns reward assignments from a given loyalty campaign.\n 📘 Alternative endpoint\n This endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-campaign-rewards). The URL was re-designed to be more contextual to the type of data returned in the response.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nReturns reward assignments from a given loyalty campaign.\n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-campaign-rewards). The URL was re-designed to be more contextual to the type of data returned in the response.\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -72768,11 +72806,12 @@
],
"get": {
"operationId": "list-reward-assignments-2",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Campaign Rewards",
- "description": "Returns active rewards from a given loyalty campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nReturns active rewards from a given loyalty campaign.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -72858,11 +72897,12 @@
},
"post": {
"operationId": "create-reward-assignment-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Create Loyalty Campaign Reward Assignment",
- "description": "Add rewards to a loyalty campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nAdd rewards to a loyalty campaign.",
"parameters": [],
"security": [
{
@@ -72973,11 +73013,12 @@
],
"get": {
"operationId": "get-reward-assignment-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Campaign Reward Assignments",
- "description": "Retrieve specific reward assignment.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve specific reward assignment.",
"parameters": [],
"security": [
{
@@ -73040,11 +73081,12 @@
],
"get": {
"operationId": "get-reward-assignment-2",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Campaign Reward Assignment",
- "description": "Retrieve specific reward assignment.\n 📘 Alternative endpoint\n This endpoint is an alternative to this [endpoint](/api-reference/loyalties/get-campaign-reward-assignments). ",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve specific reward assignment.\n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/get-campaign-reward-assignments).\n",
"parameters": [],
"security": [
{
@@ -73085,11 +73127,12 @@
},
"put": {
"operationId": "update-reward-assignment-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Update Campaign Reward Assignment",
- "description": "Updates rewards parameters, i.e. the points cost for the specific reward.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nUpdates rewards parameters, i.e. the points cost for the specific reward.",
"parameters": [],
"security": [
{
@@ -73151,11 +73194,12 @@
},
"delete": {
"operationId": "delete-reward-assignment-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Delete Campaign Reward Assignment",
- "description": "This method deletes a reward assignment for a particular loyalty campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nThis method deletes a reward assignment for a particular loyalty campaign.",
"parameters": [],
"security": [
{
@@ -73193,11 +73237,12 @@
],
"post": {
"operationId": "redeem-reward-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Redeem Reward with campaign ID",
- "description": "Exchange points from a loyalty card for a specified reward. This API method returns an assigned award in the response. It means that if a requesting customer gets a coupon code with a discount for the next order, that discount code will be visible in response as part of the reward object definition.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nExchange points from a loyalty card for a specified reward. This API method returns an assigned award in the response. It means that if a requesting customer gets a coupon code with a discount for the next order, that discount code will be visible in response as part of the reward object definition.",
"parameters": [],
"security": [
{
@@ -74632,11 +74677,12 @@
],
"post": {
"operationId": "redeem-reward",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Redeem Reward",
- "description": "\n 📘 Alternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/redeem-reward-with-campaign-id). The URL was re-designed to allow you to redeem a reward without having to provide the campaignId as a path parameter.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/redeem-reward-with-campaign-id). The URL was re-designed to allow you to redeem a reward without having to provide the campaignId as a path parameter.\n",
"parameters": [],
"security": [
{
@@ -74910,11 +74956,12 @@
],
"get": {
"operationId": "list-loyalty-tiers",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Tiers",
- "description": "Retrieve a list of loyalty tiers which were added to the loyalty program.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve a list of loyalty tiers which were added to the loyalty program.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -75066,11 +75113,12 @@
},
"post": {
"operationId": "create-in-bulk-loyalty-tiers",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Create loyalty tiers",
- "description": "Creates loyalty tiers for desired campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nCreates loyalty tiers for desired campaign.",
"parameters": [],
"security": [
{
@@ -75125,11 +75173,12 @@
],
"get": {
"operationId": "get-loyalty-tier",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Loyalty Tier",
- "description": "Retrieve a loyalty tier from a loyalty campaign by the loyalty tier ID.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve a loyalty tier from a loyalty campaign by the loyalty tier ID.",
"parameters": [],
"security": [
{
@@ -75214,11 +75263,12 @@
],
"get": {
"operationId": "list-member-loyalty-tier",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member's Loyalty Tiers",
- "description": "Retrieve member tiers using the loyalty card ID.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve member tiers using the loyalty card ID.",
"parameters": [],
"security": [
{
@@ -75328,11 +75378,12 @@
],
"get": {
"operationId": "list-loyalty-tier-earning-rules",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Tier Earning Rules",
- "description": "Retrieve available earning rules for a given tier and the calculation method for earning points.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve available earning rules for a given tier and the calculation method for earning points.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -75940,11 +75991,12 @@
],
"get": {
"operationId": "list-loyalty-tier-rewards",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Tier Rewards",
- "description": "Get available rewards for a given tier.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nGet available rewards for a given tier.",
"parameters": [],
"security": [
{
@@ -76405,7 +76457,7 @@
"Customers"
],
"summary": "Create Customer",
- "description": "Creates a customer object.\n 📘 Upsert Mode\n If you pass an id or a source_id that already exists in the customer database, Voucherify will return a related customer object with updated fields.",
+ "description": "Creates a customer object.\n\nUpsert Mode\nIf you pass an id or a source_id that already exists in the customer database, Voucherify will return a related customer object with updated fields.\n",
"parameters": [],
"security": [
{
@@ -76849,7 +76901,7 @@
"Customers"
],
"summary": "Import and Update Customers using CSV",
- "description": "This API method lets you import or update customer data. To get a proper and valid response, please send a CSV file with data separated by commas. \n# Request Example\n# CSV File Format\nThe CSV file has to include headers in the first line. All properties which cannot be mapped to standard customer fields will be added to the metadata object.\n 📘 Standard customer fields mapping\n **No spaces allowed in field names** \n Id, Name, Email, Phone, Birthdate, Source_id, Address_line_1, Address_line_2, Address_Postal_Code, Address_City, Address_State, Address_Country, Description, Metadata_name_1, Metadata_name_2\n# Update Customers using CSV\nIf you would like to update customers data, you can do it using the CSV file with new data. However, remember to include a source_id in your CSV file to manage the update successfully.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
+ "description": "This API method lets you import or update customer data. To get a proper and valid response, please send a CSV file with data separated by commas. \n# Request Example\n# CSV File Format\nThe CSV file has to include headers in the first line. All properties which cannot be mapped to standard customer fields will be added to the metadata object.\n\nStandard customer fields mapping\n**No spaces allowed in field names** Id, Name, Email, Phone, Birthdate, Source_id, Address_line_1, Address_line_2, Address_Postal_Code, Address_City, Address_State, Address_Country, Description, Metadata_name_1, Metadata_name_2\n\n# Update Customers using CSV\nIf you would like to update customers data, you can do it using the CSV file with new data. However, remember to include a source_id in your CSV file to manage the update successfully.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
"parameters": [],
"security": [
{
@@ -78152,7 +78204,7 @@
"Orders"
],
"summary": "Create Order",
- "description": "Creates an order object and triggers an order creation event.\n 📘 Upsert Mode\n If you pass an id or a source_id that already exists in the order database, Voucherify will return a related order object with updated fields.",
+ "description": "Creates an order object and triggers an order creation event.\n\nUpsert Mode\nIf you pass an id or a source_id that already exists in the order database, Voucherify will return a related order object with updated fields.\n",
"parameters": [],
"security": [
{
@@ -78584,7 +78636,7 @@
"Orders"
],
"summary": "Import Orders",
- "description": "\n 🚧 Historical orders\n This endpoint should only be used to import historical orders into Voucherify. For on-going synchronization, the [update order](/api-reference/orders/update-order) endpoint should be used. This is critical because this endpoint does not store events or launch distributions.\nThe orders will also have a created_at date thats assigned when theyve been imported to Voucherify. To keep track of the actual order creation date, add an order metadata in ISO 8601 date or date time format to each imported order.\n# Limitations\n## Import volume\nThere can be only a single on-going order import per tenant per project at a given time. The user can schedule more imports but those extra imports will be scheduled to run in sequence one by one. \n## Maximum count of orders in single import\nThere is a 2000 limit of orders per one request.\n# Notifications\nThere are no notifications on the Dashboard because this import is launched via the API.\n# Triggered actions\n \nIf you import orders with customers, then a logic will be scheduled responsible for placing these customers into segments and refreshing the segments summary. Consequently, this update will trigger \n- Customers entering into segments\n- Distributions based on any rules tied to customer entering segment(s)\n- Earning rules based on the customer entering segment(s)\n# What is not triggered\n1. No webhooks are triggered during the import of orders - for both orders and upserted products / SKUs. \n2. Distributions based on Order Update, Order Paid, Order Created and Order Cancelled. In other words if you have a distribution based on Order Paid and you import an order with a PAID status, the distribution is not going to be triggered. \n3. No events are created during the import of orders - for both orders and upserted products / SKUs. In other words you wont see any events in the Activity tab in the Dashboard such as Order created or Order paid. If you are additionally upserting products / SKUs, then you wont see the Product created events listed, etc. \n4. Earning rules based on Order Paid wont be triggered.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request with [GET Async Action](/api-reference/async-actions/get-async-action) endpoint.",
+ "description": "\n\nHistorical orders\nThis endpoint should only be used to import historical orders into Voucherify. For on-going synchronization, the [update order](/api-reference/orders/update-order) endpoint should be used. This is critical because this endpoint does not store events or launch distributions.\n\nThe orders will also have a created_at date thats assigned when theyve been imported to Voucherify. To keep track of the actual order creation date, add an order metadata in ISO 8601 date or date time format to each imported order.\n# Limitations\n## Import volume\nThere can be only a single on-going order import per tenant per project at a given time. The user can schedule more imports but those extra imports will be scheduled to run in sequence one by one. \n## Maximum count of orders in single import\nThere is a 2000 limit of orders per one request.\n# Notifications\nThere are no notifications on the Dashboard because this import is launched via the API.\n# Triggered actions\n \nIf you import orders with customers, then a logic will be scheduled responsible for placing these customers into segments and refreshing the segments summary. Consequently, this update will trigger \n- Customers entering into segments\n- Distributions based on any rules tied to customer entering segment(s)\n- Earning rules based on the customer entering segment(s)\n# What is not triggered\n1. No webhooks are triggered during the import of orders - for both orders and upserted products / SKUs. \n2. Distributions based on Order Update, Order Paid, Order Created and Order Cancelled. In other words if you have a distribution based on Order Paid and you import an order with a PAID status, the distribution is not going to be triggered. \n3. No events are created during the import of orders - for both orders and upserted products / SKUs. In other words you wont see any events in the Activity tab in the Dashboard such as Order created or Order paid. If you are additionally upserting products / SKUs, then you wont see the Product created events listed, etc. \n4. Earning rules based on Order Paid wont be triggered.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request with [GET Async Action](/api-reference/async-actions/get-async-action) endpoint.",
"parameters": [],
"security": [
{
@@ -79172,7 +79224,7 @@
"Products"
],
"summary": "Create Product",
- "description": "Creates a product object.\n 📘 Upsert Mode\n If you pass an id or a source_id that already exists in the product database, Voucherify will return a related product object with updated fields.",
+ "description": "Creates a product object.\n\nUpsert Mode\nIf you pass an id or a source_id that already exists in the product database, Voucherify will return a related product object with updated fields.\n",
"parameters": [],
"security": [
{
@@ -79796,7 +79848,7 @@
"Products"
],
"summary": "Create SKU",
- "description": "This method adds product variants to a [created product](/api-reference/products/create-product). \n 📘 Upsert Mode\n If you pass an id or a source_id that already exists in the sku database, Voucherify will return a related sku object with updated fields.",
+ "description": "This method adds product variants to a [created product](/api-reference/products/create-product). \n\nUpsert Mode\nIf you pass an id or a source_id that already exists in the sku database, Voucherify will return a related sku object with updated fields.\n",
"parameters": [],
"security": [
{
@@ -79998,7 +80050,7 @@
"Products"
],
"summary": "Import Products using CSV",
- "description": "Import products into the repository using a CSV file.\nThe CSV file has to include headers in the first line.\n 📘 Standard product fields mapping\n - Create a **comma separated value (CSV) file** or download our CSV import template. You can find an example template [here](https://s3.amazonaws.com/helpscout.net/docs/assets/5902f1c12c7d3a057f88a36d/attachments/627b82ed68d51e779443f550/Import_products_template.csv).\n - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name\n - **Name** is a **required** field. The remaining fields in the CSV template are optional.\n - Override/Update products **names** in Voucherify using this method. Data will be updated for each product included in the CSV file whose **source_id** matches a source ID in Voucherify. No other data can be updated other than the product name.\n - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 standard**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11\n - YYYY-MM-DD\n - YYYY-MM-DDTHH\n - YYYY-MM-DDTHH:mm\n - YYYY-MM-DDTHH:mm:ss\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ss.SSSZ\n - Columns that cannot be mapped to standard fields, will be mapped to **Custom attributes** and added as **products metadata**. There is no limit on the number of custom attributes that you can import as metadata. \n - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](/prepare/metadata#add-metadata).\n - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2.\n - Headers with metadata names **cant contain white-space characters**.\n - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: \n - array of strings: subscribed,premium \n - array of numbers: 123,234. \n - array of dates: 2000-01-01,2000-01-02\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
+ "description": "Import products into the repository using a CSV file.\nThe CSV file has to include headers in the first line.\n\nStandard product fields mapping\n- Create a **comma separated value (CSV) file** or download our CSV import template. You can find an example template [here](https://s3.amazonaws.com/helpscout.net/docs/assets/5902f1c12c7d3a057f88a36d/attachments/627b82ed68d51e779443f550/Import_products_template.csv).\n- Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name\n- **Name** is a **required** field. The remaining fields in the CSV template are optional.\n- Override/Update products **names** in Voucherify using this method. Data will be updated for each product included in the CSV file whose **source_id** matches a source ID in Voucherify. No other data can be updated other than the product name.\n- Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 standard**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11\n - YYYY-MM-DD\n - YYYY-MM-DDTHH\n - YYYY-MM-DDTHH:mm\n - YYYY-MM-DDTHH:mm:ss\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ss.SSSZ\n- Columns that cannot be mapped to standard fields, will be mapped to **Custom attributes** and added as **products metadata**. There is no limit on the number of custom attributes that you can import as metadata.\n- To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](/prepare/metadata#add-metadata).\n- **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2.\n- Headers with metadata names **cant contain white-space characters**.\n- If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example:\n - array of strings: subscribed,premium\n - array of numbers: 123,234.\n - array of dates: 2000-01-01,2000-01-02\n\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
"parameters": [],
"security": [
{
@@ -80044,7 +80096,7 @@
"Products"
],
"summary": "Import SKUs using CSV",
- "description": "Import SKUs into the repository using a CSV file.\nThe CSV file has to include headers in the first line. All properties which cannot be mapped to standard SKU fields will be added to the metadata object. You can find an example template [here](https://s3.amazonaws.com/helpscout.net/docs/assets/5902f1c12c7d3a057f88a36d/attachments/627b98d08c9b585083488a4c/Import_SKUS_template.csv). \n 🚧 Import sequence\n First import products using the [dedicated endpoint](/api-reference/products/import-products-using-csv), then import SKUs using this endpoint to properly match SKUs to products.\n 📘 Standard SKU fields mapping\n - **Required** fields are source_id and product_id.\n - Supported CSV file headers: product_id,sku,source_id,price,image_url,attributes\n - SKU **source_id** must be unique in the entire product catalog, no duplicates are allowed.\n - SKU attributes need to be in the form of a stringy-fied json, i.e.{color:blue}. These attributes must be defined in the **product** beforehand so you can import them to the SKU.\n - You can use this method to update the following parameters in bulk: **sku** and the sku **price**.\n - Columns that cannot be mapped to standard fields will be mapped to Custom attributes and added as product metadata. There is no limit on the number of custom attributes that you can import as metadata.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
+ "description": "Import SKUs into the repository using a CSV file.\nThe CSV file has to include headers in the first line. All properties which cannot be mapped to standard SKU fields will be added to the metadata object. You can find an example template [here](https://s3.amazonaws.com/helpscout.net/docs/assets/5902f1c12c7d3a057f88a36d/attachments/627b98d08c9b585083488a4c/Import_SKUS_template.csv). \n\nImport sequence\nFirst import products using the [dedicated endpoint](/api-reference/products/import-products-using-csv), then import SKUs using this endpoint to properly match SKUs to products.\n\n\nStandard SKU fields mapping\n- **Required** fields are source_id and product_id.\n- Supported CSV file headers: product_id,sku,source_id,price,image_url,attributes\n- SKU **source_id** must be unique in the entire product catalog, no duplicates are allowed.\n- SKU attributes need to be in the form of a stringy-fied json, i.e.{color:blue}. These attributes must be defined in the **product** beforehand so you can import them to the SKU.\n- You can use this method to update the following parameters in bulk: **sku** and the sku **price**.\n- Columns that cannot be mapped to standard fields will be mapped to Custom attributes and added as product metadata. There is no limit on the number of custom attributes that you can import as metadata.\n\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
"parameters": [],
"security": [
{
@@ -80885,7 +80937,7 @@
"Validation Rules"
],
"summary": "Create Validation Rules",
- "description": "Create a validation rule.\n 🚧 Managing validation rules\n It is recommended to [create or update validation rules](/personalize/create-validation-rules) in the Voucherify dashboard. The rule builder in the dashboard helps configuring the desired conditions in a convenient way. The API should not be used as a preferable way to create and manage validation rules.",
+ "description": "Create a validation rule.\n\nManaging validation rules\nIt is recommended to [create or update validation rules](/personalize/create-validation-rules) in the Voucherify dashboard. The rule builder in the dashboard helps configuring the desired conditions in a convenient way. The API should not be used as a preferable way to create and manage validation rules.\n",
"parameters": [],
"security": [
{
@@ -81140,7 +81192,7 @@
"Validation Rules"
],
"summary": "Update Validation Rule",
- "description": "Update validation rule parameters.\n 🚧 Managing validation rules\n It is recommended to [create or update validation rules](/personalize/create-validation-rules) in the Voucherify dashboard. The rule builder in the dashboard helps configuring the desired conditions in a convenient way. The API should not be used as a preferable way to create and manage validation rules.",
+ "description": "Update validation rule parameters.\n\nManaging validation rules\nIt is recommended to [create or update validation rules](/personalize/create-validation-rules) in the Voucherify dashboard. The rule builder in the dashboard helps configuring the desired conditions in a convenient way. The API should not be used as a preferable way to create and manage validation rules.\n",
"parameters": [],
"security": [
{
@@ -81808,7 +81860,7 @@
"Segments"
],
"summary": "Create Segment",
- "description": "Create a customer segment.\n 🚧 Limit on static segments\n There is a cap on the number of customers that you can assign to a static segment: **20,000**. If you would like to create a bigger segment, then you can use the unlimited auto-update or passive segment instead and use some customer metadata to build this segment.\n 🚧 Limit on Active and Passive segments\n You can create a maximum of 100 passive and active segments.",
+ "description": "Create a customer segment.\n\nLimit on static segments\nThere is a cap on the number of customers that you can assign to a static segment: **20,000**. If you would like to create a bigger segment, then you can use the unlimited auto-update or passive segment instead and use some customer metadata to build this segment.\n\n\nLimit on Active and Passive segments\nYou can create a maximum of 100 passive and active segments.\n",
"parameters": [],
"security": [
{
@@ -82658,7 +82710,7 @@
"Exports"
],
"summary": "Create Export",
- "description": "Create export object. The export can be any of the following types: voucher, redemption, publication, customer, order, points_expiration, voucher_transactions, product, or sku. \n# Defaults\nIf you only specify the object type in the request body without specifying the fields, the API will return the following fields per export object:\n\n\n 📘 Date and time in the export API\n The exported date and times are always provided in the UTC time zone.\n# Fetching particular data sets\nUsing the parameters body parameter, you can narrow down which fields to export and how to filter the results. The fields are an array of strings containing the data that you would like to export. These fields define the headers in the CSV file. The array can be a combination of any of the following available fields:\n# Orders \n\n\n# Vouchers \n\n\n\n\n\n# Publications\n\n\n# Redemptions\n\n\n\n# Customers\n\n\n\n\n\n\n# Points Expirations\n\n\n # Gift Card Transactions\n\n\n # Loyalty Card Transactions\n\n\n",
+ "description": "Create export object. The export can be any of the following types: voucher, redemption, publication, customer, order, points_expiration, voucher_transactions, product, or sku. \n# Defaults\nIf you only specify the object type in the request body without specifying the fields, the API will return the following fields per export object:\n\n\n\nDate and time in the export API\nThe exported date and times are always provided in the UTC time zone.\n\n# Fetching particular data sets\nUsing the parameters body parameter, you can narrow down which fields to export and how to filter the results. The fields are an array of strings containing the data that you would like to export. These fields define the headers in the CSV file. The array can be a combination of any of the following available fields:\n# Orders \n\n\n# Vouchers \n\n\n\n\n\n# Publications\n\n\n# Redemptions\n\n\n\n# Customers\n\n\n\n\n\n\n# Points Expirations\n\n\n # Gift Card Transactions\n\n\n # Loyalty Card Transactions\n\n\n",
"parameters": [],
"security": [
{
@@ -82934,7 +82986,7 @@
"Exports"
],
"summary": "Download Export",
- "description": "Download the contents of the exported CSV file. \n 📘 Important notes\n **Base URL:** \n - https://download.voucherify.io (Europe) \n - https://us1.download.voucherify.io (US) \n - https://as1.download.voucherify.io (Asia) \n **Token:** Can be found within the result parameter of the [Get Export](/api-reference/exports/get-export) method response.",
+ "description": "Download the contents of the exported CSV file. \n\nImportant notes\n**Base URL:**\n- https://download.voucherify.io (Europe)\n- https://us1.download.voucherify.io (US)\n- https://as1.download.voucherify.io (Asia)\n**Token:** Can be found within the result parameter of the [Get Export](/api-reference/exports/get-export) method response.\n",
"parameters": [],
"security": [
{
@@ -83234,7 +83286,7 @@
"Metadata Schemas"
],
"summary": "List Metadata Schema Definitions",
- "description": "Retrieve metadata schema definitions.\n📘 Management API\nIf you have Management API enabled, you can also use the [List Metadata Schemas](/api-reference/management/list-metadata-schemas) endpoint to list all metadata schemas.",
+ "description": "Retrieve metadata schema definitions.\n\nManagement API\nIf you have Management API enabled, you can also use the [List Metadata Schemas](/api-reference/management/list-metadata-schemas) endpoint to list all metadata schemas.\n",
"parameters": [],
"security": [
{
@@ -83739,7 +83791,7 @@
"Metadata Schemas"
],
"summary": "Get Metadata Schema",
- "description": "Retrieves a metadata schema per resource type.\n# Resource types\n## Standard\nYou can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter.\n- campaign\n- customer\n- earning_rule\n- loyalty_tier\n- order\n- order_item\n- product\n- promotion_tier\n- publication\n- redemption\n- reward\n- voucher\n## Custom\nIf you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details.\n📘 Management API\nIf you have Management API enabled, you can also use the [Get Metadata Schemas](/api-reference/management/get-metadata-schema) endpoint to retrieve a metadata schema using its ID.",
+ "description": "Retrieves a metadata schema per resource type.\n# Resource types\n## Standard\nYou can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter.\n- campaign\n- customer\n- earning_rule\n- loyalty_tier\n- order\n- order_item\n- product\n- promotion_tier\n- publication\n- redemption\n- reward\n- voucher\n## Custom\nIf you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details.\n\nManagement API\nIf you have Management API enabled, you can also use the [Get Metadata Schemas](/api-reference/management/get-metadata-schema) endpoint to retrieve a metadata schema using its ID.\n",
"parameters": [],
"security": [
{
@@ -84527,7 +84579,7 @@
"Referrals"
],
"summary": "Add Referral Code Holders with Campaign ID",
- "description": "Adds new holders to a referral code as **referees**. The data sent in the request is upserted into the customer data.\nIf the request returns an error even for one customer, you have to resend the whole request. Customer data is upserted if the data for all customers is correct.\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (customers.modify)\n- Publish Voucher (vouchers.publish)\n 👍\nTo add a holder as a referrer, use the [Create Publication](/api-reference/publications/create-publication) endpoint.",
+ "description": "Adds new holders to a referral code as **referees**. The data sent in the request is upserted into the customer data.\nIf the request returns an error even for one customer, you have to resend the whole request. Customer data is upserted if the data for all customers is correct.\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (customers.modify)\n- Publish Voucher (vouchers.publish)\n\nTo add a holder as a referrer, use the [Create Publication](/api-reference/publications/create-publication) endpoint.\n",
"parameters": [],
"security": [
{
@@ -84782,7 +84834,7 @@
"Referrals"
],
"summary": "Add Referral Code Holders",
- "description": "Adds new holders to a referral code as **referees**. The data sent in the request is upserted into the customer data.\nIf the request returns an error even for one customer, you have to resend the whole request. Customer data is upserted if the data for all customers is correct.\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (customers.modify)\n- Publish Voucher (vouchers.publish)\n 👍\nTo add a holder as a referrer, use the [Create Publication](/api-reference/publications/create-publication) endpoint.\n 📘 Alternative endpoint\nThis endpoint is an alternative to the [Add Referral Code Holders endpoint](/api-reference/referrals/add-referral-code-holders-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the campaignId as a path paremeter.",
+ "description": "Adds new holders to a referral code as **referees**. The data sent in the request is upserted into the customer data.\nIf the request returns an error even for one customer, you have to resend the whole request. Customer data is upserted if the data for all customers is correct.\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (customers.modify)\n- Publish Voucher (vouchers.publish)\n\nTo add a holder as a referrer, use the [Create Publication](/api-reference/publications/create-publication) endpoint.\n\n\nAlternative endpoint\nThis endpoint is an alternative to the [Add Referral Code Holders endpoint](/api-reference/referrals/add-referral-code-holders-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the campaignId as a path paremeter.\n",
"parameters": [],
"security": [
{
@@ -84880,7 +84932,7 @@
"Referrals"
],
"summary": "List Referral Code Holders",
- "description": "Retrieves the holders of the referral code from a referral campaign.\nTo use this endpoint, you must have the following permissions:\n- Read Customers (customers.details.read)\n 📘 Alternative endpoint\nThis endpoint is an alternative to the [List Member Holders endpoint](/api-reference/referrals/list-referral-code-holders-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the campaignId as a path paremeter.",
+ "description": "Retrieves the holders of the referral code from a referral campaign.\nTo use this endpoint, you must have the following permissions:\n- Read Customers (customers.details.read)\n\nAlternative endpoint\nThis endpoint is an alternative to the [List Member Holders endpoint](/api-reference/referrals/list-referral-code-holders-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the campaignId as a path paremeter.\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -84995,7 +85047,7 @@
"Referrals"
],
"summary": "Remove Referral Card Holder",
- "description": "Removes the holder from a referral card. You can remove a referee only.\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (customers.modify)\n- Publish Voucher (vouchers.publish)\n 📘 Alternative endpoint\nThis endpoint is an alternative to the [Remove Referral Card Holder endpoint](/api-reference/referrals/remove-referral-card-holder-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the campaignId as a path paremeter.",
+ "description": "Removes the holder from a referral card. You can remove a referee only.\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (customers.modify)\n- Publish Voucher (vouchers.publish)\n\nAlternative endpoint\nThis endpoint is an alternative to the [Remove Referral Card Holder endpoint](/api-reference/referrals/remove-referral-card-holder-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the campaignId as a path paremeter.\n",
"parameters": [],
"security": [
{
@@ -85142,7 +85194,7 @@
"Templates"
],
"summary": "List Campaign Templates",
- "description": "Lists all campaign templates available in the project.\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Lists all campaign templates available in the project.\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -85235,7 +85287,7 @@
"Templates"
],
"summary": "Create Campaign Template",
- "description": "Creates a template for a discount or gift campaign, or a promotion tier.\nA template stores campaign configuration **without** the following details:\n- Campaign name\n- Category\n- Code count\nThe following elements are not supported by campaign templates:\n- Redeeming API keys\n- Redeeming users\n- Customer loyalty tier\n- Static segments\n 👍 Promotion Tiers and Campaign Templates\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the DISCOUNT_COUPON type. You can use this template to create:\n- [Discount campaign](/api-reference/templates/create-campaign-from-template),\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template).\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Creates a template for a discount or gift campaign, or a promotion tier.\nA template stores campaign configuration **without** the following details:\n- Campaign name\n- Category\n- Code count\nThe following elements are not supported by campaign templates:\n- Redeeming API keys\n- Redeeming users\n- Customer loyalty tier\n- Static segments\n\nPromotion Tiers and Campaign Templates\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the DISCOUNT_COUPON type. You can use this template to create:\n- [Discount campaign](/api-reference/templates/create-campaign-from-template),\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template).\n\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -85297,7 +85349,7 @@
"Templates"
],
"summary": "Get Campaign Template",
- "description": "Retrieves a campaign template available in the project.\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Retrieves a campaign template available in the project.\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -85336,7 +85388,7 @@
"Templates"
],
"summary": "Update Campaign Template",
- "description": "Updates the name or description of the campaign template.\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Updates the name or description of the campaign template.\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -85386,7 +85438,7 @@
"Templates"
],
"summary": "Delete Campaign Template",
- "description": "Deletes the campaign template permanently.\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Deletes the campaign template permanently.\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -85419,7 +85471,7 @@
"Templates"
],
"summary": "Create Campaign From Template",
- "description": "Creates a campaign out of a campaign template.\nTo create a campaign, you need to provide the name in the request, while other fields are optional. If no other fields are sent, the configuration from the template will be used.\nYou can send new values of the fields listed below to replace the settings saved in the template. However, you cannot assign an existing validation rule or create a new one in the request. If the template has a validation rule, a new validation rule is always created for the campaign. When the campaign has been created, then you can:\n- [Update the validation rule](/api-reference/validation-rules/update-validation-rule),\n- [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment),\n- [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments).\n 👍 Promotion Tiers and Campaign Templates\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the DISCOUNT_COUPON type. You can use this template to create:\n- [Discount campaign](/api-reference/templates/create-campaign-from-template)\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template)\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Creates a campaign out of a campaign template.\nTo create a campaign, you need to provide the name in the request, while other fields are optional. If no other fields are sent, the configuration from the template will be used.\nYou can send new values of the fields listed below to replace the settings saved in the template. However, you cannot assign an existing validation rule or create a new one in the request. If the template has a validation rule, a new validation rule is always created for the campaign. When the campaign has been created, then you can:\n- [Update the validation rule](/api-reference/validation-rules/update-validation-rule),\n- [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment),\n- [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments).\n\nPromotion Tiers and Campaign Templates\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the DISCOUNT_COUPON type. You can use this template to create:\n- [Discount campaign](/api-reference/templates/create-campaign-from-template)\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template)\n\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -85578,7 +85630,7 @@
"Templates"
],
"summary": "Add Promotion Tier From Template",
- "description": "Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign.\nTo add a promotion tier to a campaign, you need to provide the name in the request and the campaign ID. Other fields are optional. If no other fields are sent, the configuration from the template will be used.\nYou can send new values of the fields listed below to replace the settings saved in the template. However, you cannot assign an action or an existing validation rule or create a new one in the request. If the template has a validation rule, a new validation rule is always created for the promotion tier. When the promotion tier has been created, then you can:\n- [Update the validation rule](/api-reference/validation-rules/update-validation-rule),\n- [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment),\n- [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment).\n 👍 Promotion Tiers and Campaign Templates\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the DISCOUNT_COUPON type. You can use this template to create:\n- [Discount campaign](/api-reference/templates/create-campaign-from-template)\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template)\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign.\nTo add a promotion tier to a campaign, you need to provide the name in the request and the campaign ID. Other fields are optional. If no other fields are sent, the configuration from the template will be used.\nYou can send new values of the fields listed below to replace the settings saved in the template. However, you cannot assign an action or an existing validation rule or create a new one in the request. If the template has a validation rule, a new validation rule is always created for the promotion tier. When the promotion tier has been created, then you can:\n- [Update the validation rule](/api-reference/validation-rules/update-validation-rule),\n- [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment),\n- [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment).\n\nPromotion Tiers and Campaign Templates\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the DISCOUNT_COUPON type. You can use this template to create:\n- [Discount campaign](/api-reference/templates/create-campaign-from-template)\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template)\n\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -86360,7 +86412,7 @@
"Management"
],
"summary": "Delete Project",
- "description": "Deletes an existing project.\nThe users currently using the deleted project will be automatically logged out.\n 🚧 Sandbox Project\nThe sandbox project cannot be deleted.",
+ "description": "Deletes an existing project.\nThe users currently using the deleted project will be automatically logged out.\n\nSandbox Project\nThe sandbox project cannot be deleted.\n",
"parameters": [],
"security": [
{
@@ -86393,7 +86445,7 @@
"Management"
],
"summary": "Assign User",
- "description": "Assigns a user to a given project. The user must be an existing user in Voucherify.\n 🚧 Correct Use of Data\nTo avoid errors, use the role key with either id or login keys.",
+ "description": "Assigns a user to a given project. The user must be an existing user in Voucherify.\n\nCorrect Use of Data\nTo avoid errors, use the role key with either id or login keys.\n",
"parameters": [],
"security": [
{
@@ -86699,7 +86751,7 @@
"Management"
],
"summary": "List Campaign Templates",
- "description": "Lists all campaign templates available in the project.\n 👍 List Campaign Templates\n This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates).\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Lists all campaign templates available in the project.\n\nList Campaign Templates\nThis endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates).\n\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -86814,7 +86866,7 @@
"Management"
],
"summary": "Copy Campaign Template to a Project",
- "description": "Copies a campaign template to another project.\nThe resources, like validation rules or products, will not be copied to the destination project yet. When the template is used to create a new campaign or add a new promotion tier, the resources will be created in the destination project.\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Copies a campaign template to another project.\nThe resources, like validation rules or products, will not be copied to the destination project yet. When the template is used to create a new campaign or add a new promotion tier, the resources will be created in the destination project.\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -86876,7 +86928,7 @@
"Management"
],
"summary": "Create Stacking Rules",
- "description": "Overwrites the default stacking rules.\nIf new stacking rules have been created for the project earlier (e.g. in the user interface), it returns an error. Use [Update stacking rules](/api-reference/management/update-stacking-rules) endpoint to change the rules.\n 📘 Stacking rules documentation\n Read [the Stacking rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Overwrites the default stacking rules.\nIf new stacking rules have been created for the project earlier (e.g. in the user interface), it returns an error. Use [Update stacking rules](/api-reference/management/update-stacking-rules) endpoint to change the rules.\n\nStacking rules documentation\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n",
"parameters": [],
"security": [
{
@@ -86953,7 +87005,7 @@
"Management"
],
"summary": "List Stacking Rules",
- "description": "Lists all stacking rules.\nReturns always a list with one item.\nThis endpoint can be used to retrieve the default stacking rules. The default stacking rules do not have an ID that could be used with the [Get Stacking Rules](/api-reference/management/get-stacking-rules) or [Update Stacking Rules](/api-reference/management/update-stacking-rules) endpoints.\n 📘 Stacking Rules Documentation\n Read [the Stacking Rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Lists all stacking rules.\nReturns always a list with one item.\nThis endpoint can be used to retrieve the default stacking rules. The default stacking rules do not have an ID that could be used with the [Get Stacking Rules](/api-reference/management/get-stacking-rules) or [Update Stacking Rules](/api-reference/management/update-stacking-rules) endpoints.\n\nStacking Rules Documentation\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n",
"parameters": [],
"security": [
{
@@ -87050,7 +87102,7 @@
"Management"
],
"summary": "Get Stacking Rules",
- "description": "Retrieves the stacking rules for the project.\n 📘 Stacking Rules Documentation\n Read [the Stacking Rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Retrieves the stacking rules for the project.\n\nStacking Rules Documentation\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n",
"parameters": [],
"security": [
{
@@ -87118,7 +87170,7 @@
"Management"
],
"summary": "Update Stacking Rules",
- "description": "Updates the stacking rules.\nOnly the provided fields will be updated. However, if you update an array, the content of the array is overwritten. This means that if you want to add new values to an array and retain existing ones, you need to provide both the existing and new values in the request.\n 📘 Stacking Rules Documentation\n Read [the Stacking Rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Updates the stacking rules.\nOnly the provided fields will be updated. However, if you update an array, the content of the array is overwritten. This means that if you want to add new values to an array and retain existing ones, you need to provide both the existing and new values in the request.\n\nStacking Rules Documentation\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n",
"parameters": [],
"security": [
{
@@ -87196,7 +87248,7 @@
"Management"
],
"summary": "Delete Stacking Rules",
- "description": "Deletes permanently the current settings for the stacking rules.\nThe stacking rules are restored to default values.\n 📘 Stacking Rules Documentation\n Read [the Stacking Rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Deletes permanently the current settings for the stacking rules.\nThe stacking rules are restored to default values.\n\nStacking Rules Documentation\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n",
"parameters": [],
"security": [
{
@@ -87229,7 +87281,7 @@
"Management"
],
"summary": "Create Metadata Schema",
- "description": "Creates a new metadata (custom attribute) schema for a given resource.\nThe schema consists of a set of key-value pairs to customize Voucherify resources. \nYou can nest your object within a standard metadata schema, e.g. within a campaign or customer schema. However, your nested object cant include another nested object. The standard metadata schemas are:\n- Campaign\n- Voucher\n- Publication\n- Redemption\n- Product\n- Customer\n- Order\n- Order line item\n- Loyalty Tier\n- Promotion Tier\n- Earning rule\n- Reward\nUse this endpoint to define a metadata schema of a given resource for the first time. Once you configure a metadata schema for a given related_object, use the PUT [Update metadata schema](/api-reference/management/update-metadata-schema) endpoint to either update or add new metadata key-value pairs. For example, use this endpoint to define a metadata schema for related_object: campaign for the first time. If you want define a new metadata property for campaign, use the [PUT Update metadata schema](/api-reference/management/update-metadata-schema) endpoint.\n 📘 Metadata Documentation\n Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Creates a new metadata (custom attribute) schema for a given resource.\nThe schema consists of a set of key-value pairs to customize Voucherify resources. \nYou can nest your object within a standard metadata schema, e.g. within a campaign or customer schema. However, your nested object cant include another nested object. The standard metadata schemas are:\n- Campaign\n- Voucher\n- Publication\n- Redemption\n- Product\n- Customer\n- Order\n- Order line item\n- Loyalty Tier\n- Promotion Tier\n- Earning rule\n- Reward\nUse this endpoint to define a metadata schema of a given resource for the first time. Once you configure a metadata schema for a given related_object, use the PUT [Update metadata schema](/api-reference/management/update-metadata-schema) endpoint to either update or add new metadata key-value pairs. For example, use this endpoint to define a metadata schema for related_object: campaign for the first time. If you want define a new metadata property for campaign, use the [PUT Update metadata schema](/api-reference/management/update-metadata-schema) endpoint.\n\nMetadata Documentation\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -87292,7 +87344,7 @@
"Management"
],
"summary": "List Metadata Schemas",
- "description": "Lists all metadata schemas available in the project.\n 📘 Metadata Documentation\n Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Lists all metadata schemas available in the project.\n\nMetadata Documentation\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -87604,7 +87656,7 @@
"Management"
],
"summary": "Get Metadata Schema",
- "description": "Retrieves a metadata schema.\n 📘 Metadata Documentation\n Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Retrieves a metadata schema.\n\nMetadata Documentation\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -87691,7 +87743,7 @@
"Management"
],
"summary": "Update Metadata Schema",
- "description": "Updates a metadata schema.\nWith this request, you can:\n- Add a nonexistent attribute definition to the metadata schema.\n- Update an existing attribute definition by overwriting its current values.\nIn the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged.\nHowever, if you want to update a definition, you will have to add all its current key-value pairs as well. Only the pairs sent in the request are saved for this definition. This means that the key-value pairs that are not sent in a request are restored to default values. For example, if your definition has an array with values and it is not sent in an update request, the array values will be deleted.\n 👍 Additional Notes\n- You cannot change the type of an existing schema, e.g. from string to number.\n- You can remove a definition with this endpoint by providing deleted: true in the request. It will be moved to the Removed definitions section in the user interface. However, you cannot permanently remove a definition with this endpoint.\n 📘 Metadata Documentation\n Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Updates a metadata schema.\nWith this request, you can:\n- Add a nonexistent attribute definition to the metadata schema.\n- Update an existing attribute definition by overwriting its current values.\nIn the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged.\nHowever, if you want to update a definition, you will have to add all its current key-value pairs as well. Only the pairs sent in the request are saved for this definition. This means that the key-value pairs that are not sent in a request are restored to default values. For example, if your definition has an array with values and it is not sent in an update request, the array values will be deleted.\n\nAdditional Notes\n- You cannot change the type of an existing schema, e.g. from string to number.\n- You can remove a definition with this endpoint by providing deleted: true in the request. It will be moved to the Removed definitions section in the user interface. However, you cannot permanently remove a definition with this endpoint.\n\n\nMetadata Documentation\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -87754,7 +87806,7 @@
"Management"
],
"summary": "Delete Metadata Schema",
- "description": "Deletes permanently the metadata schema.\nIn standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are:\n- Campaign\n- Voucher\n- Publication\n- Redemption\n- Product\n- Customer\n- Order\n- Order line item\n- Loyalty Tier\n- Promotion Tier\n- Earning rule\n- Reward\nIf you want to delete only one definition, use the [Update Metadata Schema](/api-reference/management/update-metadata-schema) endpoint. In the request, provide the deleted: true pair in the definition object. This definition will be moved to Removed definitions.\nIf you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint.\n 🚧 Metadata Purging\nThis endpoint deletes permanently the metadata schemas only. However, it does not purge the metadata from associated entities, so the metadata added to those entities will remain.\nIf you want to purge metadata from the entities:\n1. Remove all the definitions you want to purge. You can do this either in Voucherify Project Settings > Metadata Schema tab or with the [Update Metadata Schema](/api-reference/management/update-metadata-schema) endpoint.\n2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema.\n3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities.\nNote:\n- This is an asynchronous action. You will be notified when it has been completed.\n- You cannot purge metadata for the Redemption and Publication schemas.\n4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify.\n 📘 Metadata Documentation\n Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Deletes permanently the metadata schema.\nIn standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are:\n- Campaign\n- Voucher\n- Publication\n- Redemption\n- Product\n- Customer\n- Order\n- Order line item\n- Loyalty Tier\n- Promotion Tier\n- Earning rule\n- Reward\nIf you want to delete only one definition, use the [Update Metadata Schema](/api-reference/management/update-metadata-schema) endpoint. In the request, provide the deleted: true pair in the definition object. This definition will be moved to Removed definitions.\nIf you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint.\n\nMetadata Purging\nThis endpoint deletes permanently the metadata schemas only. However, it does not purge the metadata from associated entities, so the metadata added to those entities will remain.\nIf you want to purge metadata from the entities:\n1. Remove all the definitions you want to purge. You can do this either in Voucherify Project Settings > Metadata Schema tab or with the [Update Metadata Schema](/api-reference/management/update-metadata-schema) endpoint.\n2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema.\n3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities.\nNote:\n- This is an asynchronous action. You will be notified when it has been completed.\n- You cannot purge metadata for the Redemption and Publication schemas.\n4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify.\n\n\nMetadata Documentation\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -87787,7 +87839,7 @@
"Management"
],
"summary": "Create Custom Event Schema",
- "description": "Creates a custom event schema.\nThe properties object is required, but it can be empty, however. This object is for optional custom properties (metadata).\n 📘 Custom Event Documentation\n Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Creates a custom event schema.\nThe properties object is required, but it can be empty, however. This object is for optional custom properties (metadata).\n\nCustom Event Documentation\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n",
"parameters": [],
"security": [
{
@@ -87842,7 +87894,7 @@
"Management"
],
"summary": "List Custom Event Schemas",
- "description": "Lists all custom event schemas available in the project.\n 📘 Custom Event Documentation\n Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Lists all custom event schemas available in the project.\n\nCustom Event Documentation\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n",
"parameters": [],
"security": [
{
@@ -87930,7 +87982,7 @@
"Management"
],
"summary": "Get Custom Event Schema",
- "description": "Retrieves a custom event schema.\n 📘 Custom Event Documentation\n Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Retrieves a custom event schema.\n\nCustom Event Documentation\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n",
"parameters": [],
"security": [
{
@@ -87973,7 +88025,7 @@
"Management"
],
"summary": "Update Custom Event Schema",
- "description": "Updates a custom event schema.\nWith this request, you can:\n- Add a nonexistent property to a custom event schema.\n- Update an existing property.\nIn the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged.\n 👍 Additional Notes\n- You can change the type of an existing property, e.g. from string to number.\n- You can remove a custom property with this endpoint by providing deleted: true in the request. However, you cannot permanently remove an event definition or its property with this endpoint.\n 📘 Custom Event Documentation\n Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Updates a custom event schema.\nWith this request, you can:\n- Add a nonexistent property to a custom event schema.\n- Update an existing property.\nIn the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged.\n\nAdditional Notes\n- You can change the type of an existing property, e.g. from string to number.\n- You can remove a custom property with this endpoint by providing deleted: true in the request. However, you cannot permanently remove an event definition or its property with this endpoint.\n\n\nCustom Event Documentation\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n",
"parameters": [],
"security": [
{
@@ -88037,7 +88089,7 @@
"Management"
],
"summary": "Delete Custom Event Schema",
- "description": "Deletes permanently the custom event schema with its custom properties (metadata).\n 📘 Custom Event Documentation\n Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Deletes permanently the custom event schema with its custom properties (metadata).\n\nCustom Event Documentation\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n",
"parameters": [],
"security": [
{
@@ -88070,7 +88122,7 @@
"Management"
],
"summary": "Create Webhook",
- "description": "Creates a new webhook configuration.\n 📘 Webhook Documentation\n Read [Webhooks v2024-01-01](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Creates a new webhook configuration.\n\nWebhook Documentation\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -88121,7 +88173,7 @@
"Management"
],
"summary": "List Webhooks",
- "description": "Lists all webhook configurations for the project.\n 📘 Webhook Documentation\n Read [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Lists all webhook configurations for the project.\n\nWebhook Documentation\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -88237,7 +88289,7 @@
"Management"
],
"summary": "Get Webhook",
- "description": "Retrieves a webhook configuration.\n 📘 Webhook Documentation\n Read [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Retrieves a webhook configuration.\n\nWebhook Documentation\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -88278,7 +88330,7 @@
"Management"
],
"summary": "Update Webhook",
- "description": "Updates a webhook configuration.\nThe events listed in the request are overwritten. If you want to add more events, provide also the events that are already in the webhook configuration.\n 📘 Webhook Documentation\n Read [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Updates a webhook configuration.\nThe events listed in the request are overwritten. If you want to add more events, provide also the events that are already in the webhook configuration.\n\nWebhook Documentation\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -88329,7 +88381,7 @@
"Management"
],
"summary": "Delete Webhook",
- "description": "Deletes a webhook configuration.\n 📘 Webhook Documentation\n Read [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Deletes a webhook configuration.\n\nWebhook Documentation\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -88362,7 +88414,7 @@
"Management"
],
"summary": "Create Brand",
- "description": "Creates a new brand configuration.\nYou can have only one brand configured for a project.\n 📘 White Labelling\n The white labelling settings which can be found in Project Settings > Brand Details and which are available only for Enterprise clients as a separate service can be configured only in the user interface.",
+ "description": "Creates a new brand configuration.\nYou can have only one brand configured for a project.\n\nWhite Labelling\nThe white labelling settings which can be found in Project Settings > Brand Details and which are available only for Enterprise clients as a separate service can be configured only in the user interface.\n",
"parameters": [],
"security": [
{
@@ -88581,7 +88633,7 @@
"Management"
],
"summary": "Update Brand",
- "description": "Updates a brand configuration.\nOnly the fields sent in the request will be updated. The fields omitted in the request will remain unchanged.\n 📘 White Labelling\n The white labelling settings which can be found in Project Settings > Brand Details and which are available only for Enterprise clients as a separate service can be configured only in the user interface.",
+ "description": "Updates a brand configuration.\nOnly the fields sent in the request will be updated. The fields omitted in the request will remain unchanged.\n\nWhite Labelling\nThe white labelling settings which can be found in Project Settings > Brand Details and which are available only for Enterprise clients as a separate service can be configured only in the user interface.\n",
"parameters": [],
"security": [
{
@@ -88665,7 +88717,7 @@
"Client-side"
],
"summary": "Check Eligibility (client-side)",
- "description": "Generate a list of redeemables that are applicable in the context of the customer and order.\nThe new qualifications method is an improved version of [Campaign Qualifications](/api-reference/campaigns/examine-campaign-qualification), [Voucher Qualifications](/api-reference/vouchers/examine-voucher-qualification) API requests. The new qualification method introduces the following improvements:\n- Qualification results are returned faster\n- No limit on the number of returned redeemables\n- Introduces new qualification scenarios, not available in the previous version\n 👍 Scenario Guide\n Read our dedicated guide to learn about some use cases this endpoint can cover [here](/guides/checking-eligibility).\n# Paging \nThe Voucherify Qualifications API request will return to you all of the redeemables available for the customer in batches of up to 50 redeemables per page. To get the next batch of redeemables, you need to use the starting_after cursor.\nTo process of paging the redeemables works in the following manner:\n- You send the first API request for Qualifications without the starting_after parameter.\n- The response will contain a parameter named has_more. If the parameters value is set to true, then more redeemables are available.\n- Get the value of the created_at parameter of the last returned redeemable. The value of this parameter will be used as a cursor to retrieve the next page of redeemables.\n- Send another API request for Qualification with the starting_after parameter set to the value taken from the created_at parameter from the last returned redeemable.\n- Voucherify will return the next page of redeemables.\n- If the has_more parameter is set to true, apply steps 3-5 to get the next page of redeemables.\n# Caching\nQualification has a 5-minute cache for the returned results. If you change your campaign settings or validation rules, the changes will apply to qualification results after the cache refreshes.",
+ "description": "Generate a list of redeemables that are applicable in the context of the customer and order.\nThe new qualifications method is an improved version of [Campaign Qualifications](/api-reference/campaigns/examine-campaign-qualification), [Voucher Qualifications](/api-reference/vouchers/examine-voucher-qualification) API requests. The new qualification method introduces the following improvements:\n- Qualification results are returned faster\n- No limit on the number of returned redeemables\n- Introduces new qualification scenarios, not available in the previous version\n\nScenario Guide\nRead our dedicated guide to learn about some use cases this endpoint can cover [here](/guides/checking-eligibility).\n\n# Paging \nThe Voucherify Qualifications API request will return to you all of the redeemables available for the customer in batches of up to 50 redeemables per page. To get the next batch of redeemables, you need to use the starting_after cursor.\nTo process of paging the redeemables works in the following manner:\n- You send the first API request for Qualifications without the starting_after parameter.\n- The response will contain a parameter named has_more. If the parameters value is set to true, then more redeemables are available.\n- Get the value of the created_at parameter of the last returned redeemable. The value of this parameter will be used as a cursor to retrieve the next page of redeemables.\n- Send another API request for Qualification with the starting_after parameter set to the value taken from the created_at parameter from the last returned redeemable.\n- Voucherify will return the next page of redeemables.\n- If the has_more parameter is set to true, apply steps 3-5 to get the next page of redeemables.\n# Caching\nQualification has a 5-minute cache for the returned results. If you change your campaign settings or validation rules, the changes will apply to qualification results after the cache refreshes.",
"parameters": [],
"security": [
{
@@ -88944,7 +88996,7 @@
"Client-side"
],
"summary": "Redeem Stackable Discounts (client-side)",
- "description": "This method is accessible through public keys which you can use in client side requests coming from mobile and web browser applications.\n# How API returns calculated discounts and order amounts in the response\nIn the table below, you can see the logic the API follows to calculate discounts and amounts:\n\n\n 📘 Rollbacks\n You cant roll back a child redemption. When you call rollback on a stacked redemption, all child redemptions will be rolled back. You need to refer to a parent redemption ID in your [rollback request](/api-reference/redemptions/rollback-stackable-redemptions).",
+ "description": "This method is accessible through public keys which you can use in client side requests coming from mobile and web browser applications.\n# How API returns calculated discounts and order amounts in the response\nIn the table below, you can see the logic the API follows to calculate discounts and amounts:\n\n\n\nRollbacks\nYou cant roll back a child redemption. When you call rollback on a stacked redemption, all child redemptions will be rolled back. You need to refer to a parent redemption ID in your [rollback request](/api-reference/redemptions/rollback-stackable-redemptions).\n",
"parameters": [
{
"$ref": "#/components/parameters/origin"
diff --git a/reference/readonly-sdks/js/OpenAPI.json b/reference/readonly-sdks/js/OpenAPI.json
index 7652ee5d7..3e368ce16 100644
--- a/reference/readonly-sdks/js/OpenAPI.json
+++ b/reference/readonly-sdks/js/OpenAPI.json
@@ -52954,7 +52954,7 @@
"Publications"
],
"summary": "Create Publication with GET",
- "description": "This method selects vouchers that are suitable for publication, adds a publish entry and returns the publication.\nA voucher is suitable for publication when its active and hasnt been published yet.\n ❗️ Limited access\n Access to this endpoint is limited. This endpoint is designed for specific integrations and the API keys need to be configured to access this endpoint. Navigate to the **Dashboard** → **Project Settings** → **General** → **Integration Keys** to set up a pair of API keys and use them to send the request. \n 🚧 Clearly define the source of the voucher\n You must clearly define which source you want to publish the voucher code from. It can either be a code from a campaign or a specific voucher identified by a code. \n 🚧 Publish multiple vouchers\n This endpoint does not support the publishing of multiple vouchers from a single campaign. In case you want to publish multiple vouchers within a single publication, you need to use a [dedicated endpoint](/api-reference/publications/create-publication). \n 📘 Auto-update campaign\n In case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use an **auto-update** campaign. \n# Example Request \n \n ❗️ Required \n Query param voucher OR campaign MUST be filled out. If you provide both, campaign param will be skipped.",
+ "description": "This method selects vouchers that are suitable for publication, adds a publish entry and returns the publication.\nA voucher is suitable for publication when its active and hasnt been published yet.\n\nLimited access\nAccess to this endpoint is limited. This endpoint is designed for specific integrations and the API keys need to be configured to access this endpoint. Navigate to the **Dashboard** → **Project Settings** → **General** → **Integration Keys** to set up a pair of API keys and use them to send the request.\n\n\nClearly define the source of the voucher\nYou must clearly define which source you want to publish the voucher code from. It can either be a code from a campaign or a specific voucher identified by a code.\n\n\nPublish multiple vouchers\nThis endpoint does not support the publishing of multiple vouchers from a single campaign. In case you want to publish multiple vouchers within a single publication, you need to use a [dedicated endpoint](/api-reference/publications/create-publication).\n\n\nAuto-update campaign\nIn case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use an **auto-update** campaign.\n\n# Example Request \n \n\nRequired\nQuery param voucher OR campaign MUST be filled out. If you provide both, campaign param will be skipped.\n",
"parameters": [
{
"schema": {
@@ -53123,7 +53123,7 @@
"Qualifications"
],
"summary": "Check Eligibility",
- "description": "\n 🚧 The Qualifications endpoint ignores the rules checking:\n \n - Limit of total redeemed discount amount per campaign\n - Limit of total redemptions count per campaign\n - Redemptions per customer\n - Redemptions per customer in a campaign\n- Total amount before discount \nGenerate a list of redeemables that are applicable in the context of the customer and order.\nThe new qualifications method is an improved version of [Campaign Qualifications](/api-reference/campaigns/examine-campaign-qualification), [Voucher Qualifications](/api-reference/vouchers/examine-voucher-qualification) API requests. The new qualification method introduces the following improvements:\n- Qualification results are returned faster\n- No limit on the number of returned redeemables\n- Introduces new qualification scenarios, not available in the previous version\n 👍 Scenario Guide\n Read [the dedicated guide](/guides/checking-eligibility) to learn about some use cases this endpoint can cover.\n# Paging \nThe Voucherify Qualifications API request will return to you all of the redeemables available for the customer in batches of up to 50 redeemables per page. To get the next batch of redeemables, you need to use the starting_after cursor.\nTo process of paging the redeemables works in the following manner:\n- You send the first API request for Qualifications without the starting_after parameter.\n- The response will contain a parameter named has_more. If the parameters value is set to true, then more redeemables are available.\n- Get the value of the created_at parameter of the last returned redeemable. The value of this parameter will be used as a cursor to retrieve the next page of redeemables.\n- Send another API request for Qualification with the starting_after parameter set to the value taken from the created_at parameter from the last returned redeemable.\n- Voucherify will return the next page of redeemables.\n- If the has_more parameter is set to true, apply steps 3-5 to get the next page of redeemables.\n# Caching\nQualification has a 5-minute cache for the returned results. If you change your campaign settings or validation rules, the changes will apply to qualification results after the cache refreshes.",
+ "description": "\n\nThe Qualifications endpoint ignores the rules checking:\n- Limit of total redeemed discount amount per campaign\n- Limit of total redemptions count per campaign\n- Redemptions per customer\n- Redemptions per customer in a campaign\n- Total amount before discount\n\nGenerate a list of redeemables that are applicable in the context of the customer and order.\nThe new qualifications method is an improved version of [Campaign Qualifications](/api-reference/campaigns/examine-campaign-qualification), [Voucher Qualifications](/api-reference/vouchers/examine-voucher-qualification) API requests. The new qualification method introduces the following improvements:\n- Qualification results are returned faster\n- No limit on the number of returned redeemables\n- Introduces new qualification scenarios, not available in the previous version\n\nScenario Guide\nRead [the dedicated guide](/guides/checking-eligibility) to learn about some use cases this endpoint can cover.\n\n# Paging \nThe Voucherify Qualifications API request will return to you all of the redeemables available for the customer in batches of up to 50 redeemables per page. To get the next batch of redeemables, you need to use the starting_after cursor.\nTo process of paging the redeemables works in the following manner:\n- You send the first API request for Qualifications without the starting_after parameter.\n- The response will contain a parameter named has_more. If the parameters value is set to true, then more redeemables are available.\n- Get the value of the created_at parameter of the last returned redeemable. The value of this parameter will be used as a cursor to retrieve the next page of redeemables.\n- Send another API request for Qualification with the starting_after parameter set to the value taken from the created_at parameter from the last returned redeemable.\n- Voucherify will return the next page of redeemables.\n- If the has_more parameter is set to true, apply steps 3-5 to get the next page of redeemables.\n# Caching\nQualification has a 5-minute cache for the returned results. If you change your campaign settings or validation rules, the changes will apply to qualification results after the cache refreshes.",
"parameters": [],
"security": [
{
@@ -54686,7 +54686,7 @@
"Redemptions"
],
"summary": "Redeem Stackable Discounts",
- "description": "In the table below, you can see the logic the API follows to calculate discounts and amounts:\n\n\nAPI keys with a Merchant role cant use this endpoint.\n 📘 Rollbacks\n You cant roll back a child redemption. When you call rollback on a stacked redemption, all child redemptions will be rolled back. You need to refer to a parent redemption ID in your [rollback request](/api-reference/redemptions/rollback-stackable-redemptions). \n 📘 Also available on client-side\n This method is also accessible through public keys which you can use in client-side apps: mobile and web browser apps. Go to the dedicated [endpoint](/api-reference/client-side/redeem-stackable-discounts-client-side) to learn more.",
+ "description": "In the table below, you can see the logic the API follows to calculate discounts and amounts:\n\n\nAPI keys with a Merchant role cant use this endpoint.\n\nRollbacks\nYou cant roll back a child redemption. When you call rollback on a stacked redemption, all child redemptions will be rolled back. You need to refer to a parent redemption ID in your [rollback request](/api-reference/redemptions/rollback-stackable-redemptions).\n\n\nAlso available on client-side\nThis method is also accessible through public keys which you can use in client-side apps: mobile and web browser apps. Go to the dedicated [endpoint](/api-reference/client-side/redeem-stackable-discounts-client-side) to learn more.\n",
"parameters": [],
"security": [
{
@@ -55034,7 +55034,7 @@
"Vouchers"
],
"summary": "Generate Random Code",
- "description": "Create a generic (standalone) vouchers. You can choose to create a GIFT_VOUCHER, a DISCOUNT_VOUCHER, or a LOYALTY_CARD. \nWhen you create a new voucher, you can specify a type to create it.\nCreating a new voucher will create a new generic (standalone) vouchers if no campaign name or campaign_id is provided. However, if an ID or name of a campaign with the type set to STANDALONE is provided, the voucher will be added to such campaign. In case of the loyalty card, a campaign name is required.\nYou can optionally use the code parameter to define a specific code or the code_config parameter to design rules for Voucherify API to create a random code. If neither of the two parameters are passed, then a random code is generated by the Voucherify API.\nThis method will return an error when trying to create a voucher that already exists.\n🚧 Standalone Vouchers and Campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. The vouchers created with POST Create voucher and POST Generate random code endpoints do not have a campaign attached, so the values for campaign and campaign_id are null.\nTo create a generic (standalone) voucher with a type: STANDALONE, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.",
+ "description": "Create a generic (standalone) vouchers. You can choose to create a GIFT_VOUCHER, a DISCOUNT_VOUCHER, or a LOYALTY_CARD. \nWhen you create a new voucher, you can specify a type to create it.\nCreating a new voucher will create a new generic (standalone) vouchers if no campaign name or campaign_id is provided. However, if an ID or name of a campaign with the type set to STANDALONE is provided, the voucher will be added to such campaign. In case of the loyalty card, a campaign name is required.\nYou can optionally use the code parameter to define a specific code or the code_config parameter to design rules for Voucherify API to create a random code. If neither of the two parameters are passed, then a random code is generated by the Voucherify API.\nThis method will return an error when trying to create a voucher that already exists.\n\nStandalone Vouchers and Campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. The vouchers created with POST Create voucher and POST Generate random code endpoints do not have a campaign attached, so the values for campaign and campaign_id are null.\nTo create a generic (standalone) voucher with a type: STANDALONE, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.\n",
"parameters": [],
"security": [
{
@@ -56673,7 +56673,7 @@
"Vouchers"
],
"summary": "Create Voucher",
- "description": "Create a generic (standalone) voucher or a voucher in a campaign. You can choose to create a GIFT_VOUCHER, a DISCOUNT_VOUCHER, or a LOYALTY_CARD. The code path parameter can use all letters of the English alphabet, Arabic numerals and special characters.\nWhen you create a new voucher, you can specify a type to create it.\nIf no campaign name or campaign_id is provided, the new voucher will be a generic (standalone) one. However, if an ID or name of a campaign with the type set to STANDALONE is provided, the voucher will be added to this campaign. For a loyalty card, a campaign name or ID is required.\n🚧 Standalone Vouchers and Campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers created through The vouchers created with POST Create voucher and POST Generate random code endpoints do not have a campaign attached, so the values for campaign and campaign_id are null.\nTo create a generic (standalone) voucher with a type: STANDALONE, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.",
+ "description": "Create a generic (standalone) voucher or a voucher in a campaign. You can choose to create a GIFT_VOUCHER, a DISCOUNT_VOUCHER, or a LOYALTY_CARD. The code path parameter can use all letters of the English alphabet, Arabic numerals and special characters.\nWhen you create a new voucher, you can specify a type to create it.\nIf no campaign name or campaign_id is provided, the new voucher will be a generic (standalone) one. However, if an ID or name of a campaign with the type set to STANDALONE is provided, the voucher will be added to this campaign. For a loyalty card, a campaign name or ID is required.\n\nStandalone Vouchers and Campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers created through The vouchers created with POST Create voucher and POST Generate random code endpoints do not have a campaign attached, so the values for campaign and campaign_id are null.\nTo create a generic (standalone) voucher with a type: STANDALONE, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.\n",
"parameters": [],
"security": [
{
@@ -57185,7 +57185,7 @@
"Vouchers"
],
"summary": "Enable Voucher",
- "description": "There are various times when youll want to manage a vouchers accessibility. This can be done by two API methods for managing the voucher state - *enable* and *disable*. \n___\nThe method sets the voucher state to **active**. The voucher can be redeemed - only if the redemption occurs after the start date and the voucher is not expired.",
+ "description": "The method sets the voucher state to **active**. The voucher can be redeemed - only if the redemption occurs after the start date and the voucher is not expired.",
"parameters": [],
"security": [
{
@@ -57296,7 +57296,7 @@
"Vouchers"
],
"summary": "Disable Voucher",
- "description": "There are various times when youll want to manage a vouchers accessibility. This can be done by two API methods for managing the voucher state - *enable* and *disable*. \n___\nThis method sets the voucher state to **inactive**. The voucher cannot be redeemed.",
+ "description": "This method sets the voucher state to **inactive**. The voucher cannot be redeemed.",
"parameters": [],
"security": [
{
@@ -57906,7 +57906,7 @@
"Vouchers"
],
"summary": "Import Vouchers",
- "description": "Import generic (standalone) vouchers and gift cards into the repository.\nYou can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. \n Also, the request can include up to **10 MB** of data.\n 📘 Important notes\n - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z.\n - Custom code attributes (not supported by-default) need to be added as code **metadata**.\n - You **cannot import the same codes** to a single Voucherify Project.\nAny parameters not provided in the payload will be left blank or null.\nFor both **standalone discount vouchers and gift cards**, you can import the following fields: \n- code\n- category\n- active\n- type\n- start_date\n- expiration_date\n- redemption.quantity\n- additional_info\n- metadata\nFor **gift cards**, you can also import the following field:\n- gift.amount\nFor **discount vouchers**, you can import the discount object. The object will slightly vary depending on the type of discount. Each discount type **requires** the type to be defined in the import.\n\n\nFields other than the ones listed above wont be imported. Even if provided, they will be silently skipped.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).\n🚧 Standalone Vouchers and Campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers imported through the dashboard in the Vouchers section or through the API do not have a campaign attached, so the values for campaign and campaign_id are null.\nTo create a generic (standalone) voucher with a type: STANDALONE, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.",
+ "description": "Import generic (standalone) vouchers and gift cards into the repository.\nYou can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. \n Also, the request can include up to **10 MB** of data.\n\nImportant notes\n- **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z.\n- Custom code attributes (not supported by-default) need to be added as code **metadata**.\n- You **cannot import the same codes** to a single Voucherify Project.\n\nAny parameters not provided in the payload will be left blank or null.\nFor both **standalone discount vouchers and gift cards**, you can import the following fields: \n- code\n- category\n- active\n- type\n- start_date\n- expiration_date\n- redemption.quantity\n- additional_info\n- metadata\nFor **gift cards**, you can also import the following field:\n- gift.amount\nFor **discount vouchers**, you can import the discount object. The object will slightly vary depending on the type of discount. Each discount type **requires** the type to be defined in the import.\n\n\nFields other than the ones listed above wont be imported. Even if provided, they will be silently skipped.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).\n\nStandalone Vouchers and Campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers imported through the dashboard in the Vouchers section or through the API do not have a campaign attached, so the values for campaign and campaign_id are null.\nTo create a generic (standalone) voucher with a type: STANDALONE, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.\n",
"parameters": [],
"security": [
{
@@ -58183,7 +58183,7 @@
"Vouchers"
],
"summary": "Import Vouchers using CSV",
- "description": "Import generic (standalone) vouchers into the repository using a CSV file.\nThe CSV file has to include headers in the first line. All properties listed in the file headers that cannot be mapped to standard voucher fields will be added to the metadata object.\nYou can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. \n Also, the request can include a max. **10 MB** CSV file.\nYou can find an example CSV file [here](/build/discount-code-import).\n___\n 📘 Standard voucher fields mapping\n - Go to the [import vouchers](/api-reference/vouchers/import-vouchers) endpoint to see all standard CSV fields description (body params section).\n - Supported CSV file headers: Code,Voucher Type,Value,Discount Type,Category,Start Date,Expiration Date,Redemption Limit,Redeemed Quantity, Redeemed Amount,Active,Additional Info,Custom Metadata Property Name\n- **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. \n - YYYY-MM-DD\n - YYYY-MM-DDTHH\n - YYYY-MM-DDTHH:mm\n - YYYY-MM-DDTHH:mm:ss\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ss.SSSZ\n - Custom code attributes (not supported by-default) need to be added as code **metadata**.\n - You **cannot import the same codes** to a single Voucherify project.\n - You can, however, upload the same codes to update them.\n 📘 Categories\n In the structure representing your data, you can define a category that the voucher belongs to. You can later use the category of a voucher to group and search by specific criteria in the Dashboard and using the [List Vouchers](/api-reference/vouchers/list-vouchers) endpoint.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).\nYou can pass the webhooks_enable true parameter to trigger a webhook sendout for created or updated vouchers. Configure the [respective webhooks](/api-reference/introduction-to-webhooks) in Project settings. For updated webhooks, a webhook is sent even if the voucher hasnt been changed in the CSV file.\n🚧 Generic (standalone) vouchers and campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers imported through the dashboard in the Vouchers section or through the API do not have a campaign attached, so the values for campaign and campaign_id are null.",
+ "description": "Import generic (standalone) vouchers into the repository using a CSV file.\nThe CSV file has to include headers in the first line. All properties listed in the file headers that cannot be mapped to standard voucher fields will be added to the metadata object.\nYou can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. \n Also, the request can include a max. **10 MB** CSV file.\nYou can find an example CSV file [here](/build/discount-code-import).\n___\n\nStandard voucher fields mapping\n- Go to the [import vouchers](/api-reference/vouchers/import-vouchers) endpoint to see all standard CSV fields description (body params section).\n- Supported CSV file headers: Code,Voucher Type,Value,Discount Type,Category,Start Date,Expiration Date,Redemption Limit,Redeemed Quantity, Redeemed Amount,Active,Additional Info,Custom Metadata Property Name\n- **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z.\n - YYYY-MM-DD\n - YYYY-MM-DDTHH\n - YYYY-MM-DDTHH:mm\n - YYYY-MM-DDTHH:mm:ss\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ss.SSSZ\n- Custom code attributes (not supported by-default) need to be added as code **metadata**.\n- You **cannot import the same codes** to a single Voucherify project.\n- You can, however, upload the same codes to update them.\n\n\nCategories\nIn the structure representing your data, you can define a category that the voucher belongs to. You can later use the category of a voucher to group and search by specific criteria in the Dashboard and using the [List Vouchers](/api-reference/vouchers/list-vouchers) endpoint.\n\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).\nYou can pass the webhooks_enable true parameter to trigger a webhook sendout for created or updated vouchers. Configure the [respective webhooks](/api-reference/introduction-to-webhooks) in Project settings. For updated webhooks, a webhook is sent even if the voucher hasnt been changed in the CSV file.\n\nGeneric (standalone) vouchers and campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers imported through the dashboard in the Vouchers section or through the API do not have a campaign attached, so the values for campaign and campaign_id are null.\n",
"parameters": [],
"security": [
{
@@ -58234,7 +58234,7 @@
"Vouchers"
],
"summary": "Update Vouchers in Bulk",
- "description": "Updates specific metadata parameters for each code, respectively, in one asynchronous operation.\nThe request can include up to **10 MB** of data.\nUpserts are not supported.\n 🚧 Currently, only **metadata** updates are supported.\nThe response returns a unique asynchronous action ID. Use this ID in the query paramater of the [GET Async Action](/api-reference/async-actions/get-async-action) endpoint to check, e.g.:\n- The status of your request (in queue, in progress, done, or failed)\n- Resources that failed to be updated\n- The report file with details about the update\nThis API request starts a process that affects Voucherify data in bulk. In the case of small jobs (like bulk update), the request is put into a queue and processed when every other bulk request placed in the queue prior to this request is finished.",
+ "description": "Updates specific metadata parameters for each code, respectively, in one asynchronous operation.\nThe request can include up to **10 MB** of data.\nUpserts are not supported.\n\nCurrently, only **metadata** updates are supported.\n\nThe response returns a unique asynchronous action ID. Use this ID in the query paramater of the [GET Async Action](/api-reference/async-actions/get-async-action) endpoint to check, e.g.:\n- The status of your request (in queue, in progress, done, or failed)\n- Resources that failed to be updated\n- The report file with details about the update\nThis API request starts a process that affects Voucherify data in bulk. In the case of small jobs (like bulk update), the request is put into a queue and processed when every other bulk request placed in the queue prior to this request is finished.",
"parameters": [],
"security": [
{
@@ -58392,7 +58392,7 @@
"Vouchers"
],
"summary": "Release Validation Session",
- "description": "Manually release a validation session that has been set up for the voucher. This method undoes the actions that are explained in the [Locking validation session](/guides/locking-validation-session) guide. \n 📘 Release session in the Dashboard\n You can also use the [Validations Manager](/optimize/validations-and-redemptions#sessions) in the Dashboard to unlock sessions.",
+ "description": "Manually release a validation session that has been set up for the voucher. This method undoes the actions that are explained in the [Locking validation session](/guides/locking-validation-session) guide. \n\nRelease session in the Dashboard\nYou can also use the [Validations Manager](/optimize/validations-and-redemptions#sessions) in the Dashboard to unlock sessions.\n",
"parameters": [],
"security": [
{
@@ -58418,7 +58418,7 @@
"Campaigns"
],
"summary": "Create Campaign",
- "description": "Method to create a batch of vouchers aggregated in one campaign. You can choose a variety of voucher types and define a unique pattern for generating codes. \n 📘 Global uniqueness\n All campaign codes are unique across the whole project. Voucherify will not allow you to generate 2 campaigns with the same coupon code. \n 🚧 Code generation status\n This is an asynchronous action; you cant read or modify a newly created campaign until the code generation is completed. See the creation_status field in the [campaign object](/api-reference/campaigns/campaign-object) description.",
+ "description": "Method to create a batch of vouchers aggregated in one campaign. You can choose a variety of voucher types and define a unique pattern for generating codes. \n\nGlobal uniqueness\nAll campaign codes are unique across the whole project. Voucherify will not allow you to generate 2 campaigns with the same coupon code.\n\n\nCode generation status\nThis is an asynchronous action; you cant read or modify a newly created campaign until the code generation is completed. See the creation_status field in the [campaign object](/api-reference/campaigns/campaign-object) description.\n",
"parameters": [],
"security": [
{
@@ -59652,7 +59652,7 @@
"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. \nFields other than the ones listed in the request body wont be modified. Even if provided, they will be silently skipped. \n 🚧 Vouchers will be affected\n This method will update vouchers aggregated in the campaign. It will affect all vouchers that are not published or redeemed yet.",
+ "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. \nFields other than the ones listed in the request body wont be modified. Even if provided, they will be silently skipped. \n\nVouchers will be affected\nThis method will update vouchers aggregated in the campaign. It will affect all vouchers that are not published or redeemed yet.\n",
"parameters": [],
"security": [
{
@@ -60292,7 +60292,7 @@
"Campaigns"
],
"summary": "Enable Campaign",
- "description": "There are various times when youll want to manage a campaigns accessibility. This can be done by two API methods for managing the campaign state - *enable* and *disable*. \nSets campaign state to **active**. The vouchers in this campaign can be redeemed - only if the redemption occurs after the start date of the campaign and voucher and the voucher and campaign are not expired.",
+ "description": "Sets campaign state to **active**. The vouchers in this campaign can be redeemed - only if the redemption occurs after the start date of the campaign and voucher and the voucher and campaign are not expired.",
"parameters": [],
"security": [
{
@@ -60341,7 +60341,7 @@
"Campaigns"
],
"summary": "Disable Campaign",
- "description": "There are various times when youll want to manage a campaigns accessibility. This can be done by two API methods for managing the campaign state - *enable* and *disable*. \nSets campaign state to **inactive**. The vouchers in this campaign can no longer be redeemed.",
+ "description": "Sets campaign state to **inactive**. The vouchers in this campaign can no longer be redeemed.",
"parameters": [],
"security": [
{
@@ -60390,7 +60390,7 @@
"Campaigns"
],
"summary": "List Campaign Transactions",
- "description": "Retrieves all transactions for the campaign with the given campaign ID or campaign name. The id filter denotes the unique transaction identifier.\n 🚧\n The endpoint works only for gift card and loyalty campaigns.",
+ "description": "Retrieves all transactions for the campaign with the given campaign ID or campaign name. The id filter denotes the unique transaction identifier.\n\nThe endpoint works only for gift card and loyalty campaigns.\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -60552,7 +60552,7 @@
}
],
"summary": "Export Campaign Transactions",
- "description": "Export transactions is an asynchronous process that generates a CSV file with the data about credit movements on all gift cards or point movements on all loyalty cards in a given campaign.\nTo export transactions:\n1. In the export request, use parameters to select which fields will be exported, in what order, and which data will be filtered.\n2. Use the returned id to track the export status with the [GET Export](/api-reference/exports/get-export) method.\n3. In the GET Export method, when the returned status field has the DONE value, the export file has been generated.\n4. Use the URL in the result property to download the file. You must be logged to your Voucherify account on a given cluster in the browser to be able to download the file.\nAn export request will almost always result in a single file being generated by the system. However, when the data volume is large, the system may split the results into multiple files.\nAn example export file can look as follows:\n\n\n 👍 Export Loyalty Campaign Transactions\n For loyalty campaigns, this method works in the same way the [POST Export Loyalty Campaign Transactions](/api-reference/loyalties/export-loyalty-campaign-transactions) does.",
+ "description": "Export transactions is an asynchronous process that generates a CSV file with the data about credit movements on all gift cards or point movements on all loyalty cards in a given campaign.\nTo export transactions:\n1. In the export request, use parameters to select which fields will be exported, in what order, and which data will be filtered.\n2. Use the returned id to track the export status with the [GET Export](/api-reference/exports/get-export) method.\n3. In the GET Export method, when the returned status field has the DONE value, the export file has been generated.\n4. Use the URL in the result property to download the file. You must be logged to your Voucherify account on a given cluster in the browser to be able to download the file.\nAn export request will almost always result in a single file being generated by the system. However, when the data volume is large, the system may split the results into multiple files.\nAn example export file can look as follows:\n\n\n\nExport Loyalty Campaign Transactions\nFor loyalty campaigns, this method works in the same way the [POST Export Loyalty Campaign Transactions](/api-reference/loyalties/export-loyalty-campaign-transactions) does.\n",
"requestBody": {
"description": "Specify the parameters for the transaction export.",
"content": {
@@ -60682,7 +60682,7 @@
"Campaigns"
],
"summary": "Get Campaign Summary",
- "description": "Returns data for campaign analytics, covering validations, redemptions, publications, and other details specific to a given campaign type.\nUse start_date and end_date to narrow down the data to specific periods.\n🚧 Campaigns created before 17 June 2025\nThis endpoint returns analytics data for campaigns that were created after 17 June 2025. Older campaigns return empty data.",
+ "description": "Returns data for campaign analytics, covering validations, redemptions, publications, and other details specific to a given campaign type.\nUse start_date and end_date to narrow down the data to specific periods.\n\nCampaigns created before 17 June 2025\nThis endpoint returns analytics data for campaigns that were created after 17 June 2025. Older campaigns return empty data.\n",
"parameters": [
{
"name": "start_date",
@@ -63091,7 +63091,7 @@
"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.\n# Pagination\n 🚧 Important!\n 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.\n# Filter Query\nThe filters query parameter allows for joining multiple parameters with logical operators. The syntax looks as follows:\n\n## Examples\n\n",
+ "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.\n# Pagination\n\nImportant!\nIf 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.\n\n# Filter Query\nThe filters query parameter allows for joining multiple parameters with logical operators. The syntax looks as follows:\n\n## Examples\n\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -63322,7 +63322,7 @@
"Publications"
],
"summary": "Create Publication",
- "description": "This method selects vouchers that are suitable for publication, adds a publish entry and returns the publication.\nA voucher is suitable for publication when its active and hasnt been published yet. \n 🚧 Clearly define the source of the voucher\n You must clearly define which source you want to publish the voucher code from. It can either be a code from a campaign or a specific voucher identified by a code. \n 🚧 Publish multiple vouchers\n In case you want to publish multiple vouchers within a single publication, you need to specify the campaign name and number of vouchers you want to publish. \n 📘 Auto-update campaign\n In case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use an **auto-update** campaign.",
+ "description": "This method selects vouchers that are suitable for publication, adds a publish entry and returns the publication.\nA voucher is suitable for publication when its active and hasnt been published yet. \n\nClearly define the source of the voucher\nYou must clearly define which source you want to publish the voucher code from. It can either be a code from a campaign or a specific voucher identified by a code.\n\n\nPublish multiple vouchers\nIn case you want to publish multiple vouchers within a single publication, you need to specify the campaign name and number of vouchers you want to publish.\n\n\nAuto-update campaign\nIn case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use an **auto-update** campaign.\n",
"parameters": [
{
"schema": {
@@ -65477,7 +65477,7 @@
"Redemptions"
],
"summary": "Rollback Redemption",
- "description": "Your business logic may include a case when you need to undo a redemption. You can revert a redemption by calling this API endpoint. This endpoint rolls back only single redemptions, meaning those that are not stacked. Stacked redemptions belong to a parent redemption. To roll back a parent redemption, including all of its individual redemptions, use the [POST Rollback Stackable Redemptions](/api-reference/redemptions/rollback-stackable-redemptions) \n🚧 \nYou can roll back a redemption up to 3 months back. \n # Effect \nThe operation \n- creates a rollback entry in vouchers redemption history (redemption.redemption_entries) and \n- gives 1 redemption back to the pool (decreases redeemed_quantity by 1). \n# Returned funds \nIn case of *gift card vouchers*, this method returns funds back according to the source redemption. In case of *loyalty card vouchers*, this method returns points back according to the source redemption.",
+ "description": "Your business logic may include a case when you need to undo a redemption. You can revert a redemption by calling this API endpoint. This endpoint rolls back only single redemptions, meaning those that are not stacked. Stacked redemptions belong to a parent redemption. To roll back a parent redemption, including all of its individual redemptions, use the [POST Rollback Stackable Redemptions](/api-reference/redemptions/rollback-stackable-redemptions) \n\nYou can roll back a redemption up to 3 months back.\n\n # Effect \nThe operation \n- creates a rollback entry in vouchers redemption history (redemption.redemption_entries) and \n- gives 1 redemption back to the pool (decreases redeemed_quantity by 1). \n# Returned funds \nIn case of *gift card vouchers*, this method returns funds back according to the source redemption. In case of *loyalty card vouchers*, this method returns points back according to the source redemption.",
"parameters": [
{
"schema": {
@@ -66169,7 +66169,7 @@
"Redemptions"
],
"summary": "Rollback Stackable Redemptions",
- "description": "Rollback a stackable redemption. When you roll back a stacked redemption, all child redemptions will be rolled back. Provide the parent redemption ID as the path parameter. However, you can use this endpoint to roll back a single redemption that does not have a parent, similarly to [POST Rollback redemption](/api-reference/redemptions/rollback-redemption).\n🚧 \n You can roll back a redemption up to 3 months back.",
+ "description": "Rollback a stackable redemption. When you roll back a stacked redemption, all child redemptions will be rolled back. Provide the parent redemption ID as the path parameter. However, you can use this endpoint to roll back a single redemption that does not have a parent, similarly to [POST Rollback redemption](/api-reference/redemptions/rollback-redemption).\n\nYou can roll back a redemption up to 3 months back.\n",
"parameters": [
{
"schema": {
@@ -66259,11 +66259,12 @@
"/v1/loyalties": {
"get": {
"operationId": "list-loyalty-programs",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Campaigns",
- "description": "Returns a list of your loyalty campaigns.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nReturns a list of your loyalty campaigns.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -66478,11 +66479,12 @@
},
"post": {
"operationId": "create-loyalty-program",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Create Loyalty Campaign",
- "description": "Creates a batch of [loyalty cards](/api-reference/loyalties/get-member) aggregated in a single loyalty campaign. It also allows you to define a custom codes pattern. \n 📘 Global uniqueness\n All codes are unique across the whole project. Voucherify wont allow to generate the same codes in any of your campaigns.\n 🚧 Asynchronous action!\n This is an asynchronous action, you cant read or modify a newly created campaign until the code generation is completed. See creation_status field in the [loyalty campaign object](/api-reference/loyalties/loyalty-campaign-object) description.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nCreates a batch of [loyalty cards](/api-reference/loyalties/get-member) aggregated in a single loyalty campaign. It also allows you to define a custom codes pattern. \n\nGlobal uniqueness\nAll codes are unique across the whole project. Voucherify wont allow to generate the same codes in any of your campaigns.\n\n\nAsynchronous action!\nThis is an asynchronous action, you cant read or modify a newly created campaign until the code generation is completed. See creation_status field in the [loyalty campaign object](/api-reference/loyalties/loyalty-campaign-object) description.\n",
"parameters": [],
"security": [
{
@@ -66692,11 +66694,12 @@
],
"get": {
"operationId": "get-loyalty-program",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Loyalty Campaign",
- "description": "Retrieve a specific loyalty campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve a specific loyalty campaign.",
"parameters": [],
"security": [
{
@@ -66803,11 +66806,12 @@
},
"put": {
"operationId": "update-loyalty-program",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Update Loyalty Campaign",
- "description": "Updates a loyalty program. \nFields other than those specified in the allowed request body payload wont be modified (even if provided they are silently skipped). Any parameters not provided will be left unchanged. \nThis method will update the [loyalty cards](/api-reference/loyalties/get-member) which have not been published or redeemed yet.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nUpdates a loyalty program. \nFields other than those specified in the allowed request body payload wont be modified (even if provided they are silently skipped). Any parameters not provided will be left unchanged. \nThis method will update the [loyalty cards](/api-reference/loyalties/get-member) which have not been published or redeemed yet.",
"parameters": [],
"security": [
{
@@ -66998,11 +67002,12 @@
},
"delete": {
"operationId": "delete-loyalty-program",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Delete Loyalty Campaign",
- "description": "Deletes a loyalty campaign and all related loyalty cards. This action cannot be undone. Also, it immediately removes any redemptions on loyalty cards.\nIf the force parameter is set to false or not set at all, the loyalty campaign and all related loyalty cards will be moved to [the bin](/api-reference/bin/list-bin-entries).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nDeletes a loyalty campaign and all related loyalty cards. This action cannot be undone. Also, it immediately removes any redemptions on loyalty cards.\nIf the force parameter is set to false or not set at all, the loyalty campaign and all related loyalty cards will be moved to [the bin](/api-reference/bin/list-bin-entries).",
"parameters": [
{
"schema": {
@@ -67058,11 +67063,12 @@
],
"get": {
"operationId": "list-members",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Members",
- "description": "Returns a list of your loyalty cards. The loyalty cards are sorted by creation date, with the most recent loyalty cards appearing first.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nReturns a list of your loyalty cards. The loyalty cards are sorted by creation date, with the most recent loyalty cards appearing first.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -67237,11 +67243,12 @@
},
"post": {
"operationId": "add-member",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Add Member",
- "description": "This method assigns a loyalty card to a customer. It selects a [loyalty card](/api-reference/vouchers/get-voucher) suitable for publication, adds a publish entry, and returns the published voucher. \nA voucher is suitable for publication when its active and hasnt been published yet. \n 📘 Auto-update campaign\n In case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use **auto-update** campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nThis method assigns a loyalty card to a customer. It selects a [loyalty card](/api-reference/vouchers/get-voucher) suitable for publication, adds a publish entry, and returns the published voucher. \nA voucher is suitable for publication when its active and hasnt been published yet. \n\nAuto-update campaign\nIn case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use **auto-update** campaign.\n",
"parameters": [],
"security": [
{
@@ -67411,11 +67418,12 @@
],
"get": {
"operationId": "get-member-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Member with campaign ID",
- "description": "Retrieves the loyalty card with the given member ID (i.e. voucher code).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieves the loyalty card with the given member ID (i.e. voucher code).",
"parameters": [],
"security": [
{
@@ -67511,11 +67519,12 @@
],
"get": {
"operationId": "get-member",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Member",
- "description": "Retrieve loyalty card with the given member ID (i.e. voucher code). \n 📘 Alternative endpoint\n This endpoint is an alternative to this [endpoint](/api-reference/loyalties/get-member-with-campaign-id). The URL was re-designed to allow you to retrieve loyalty card details without having to provide the campaignId as a path parameter.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve loyalty card with the given member ID (i.e. voucher code). \n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/get-member-with-campaign-id). The URL was re-designed to allow you to retrieve loyalty card details without having to provide the campaignId as a path parameter.\n",
"parameters": [],
"security": [
{
@@ -67611,11 +67620,12 @@
],
"get": {
"operationId": "list-campaign-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Campaign Pending Points",
- "description": "Lists all pending points that are currently assigned to all loyalty cards in a campaign. Once the points are added to the card, the entry is no longer returned.\n👍 Configuring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nLists all pending points that are currently assigned to all loyalty cards in a campaign. Once the points are added to the card, the entry is no longer returned.\n\nConfiguring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n",
"parameters": [
{
"schema": {
@@ -67823,11 +67833,12 @@
],
"get": {
"operationId": "list-member-pending-points-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Pending Points with campaign ID",
- "description": "Lists all pending points that are currently assigned to the loyalty card. Once the points are added to the card, the entry is no longer returned.\n👍 Configuring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nLists all pending points that are currently assigned to the loyalty card. Once the points are added to the card, the entry is no longer returned.\n\nConfiguring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n",
"parameters": [
{
"schema": {
@@ -68026,11 +68037,12 @@
],
"get": {
"operationId": "list-member-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Pending Points",
- "description": "\n 📘 Alternative endpoint\n This endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-member-pending-points-with-campaign-id). The URL was re-designed to list member pending points without having to provide the campaignId as a path parameter.\nLists all pending points that are currently assigned to the loyalty card. Once the points are added to the card, the entry is no longer returned.\n👍 Configuring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-member-pending-points-with-campaign-id). The URL was re-designed to list member pending points without having to provide the campaignId as a path parameter.\n\nLists all pending points that are currently assigned to the loyalty card. Once the points are added to the card, the entry is no longer returned.\n\nConfiguring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n",
"parameters": [
{
"schema": {
@@ -68238,11 +68250,12 @@
],
"post": {
"operationId": "activate-member-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Activate Member Pending Points",
- "description": "Activate manually the pending points and add them to the loyalty card. The pending points are determined by the pending point ID.\nOnce activated, the pending point entry with that ID is not listed by the endpoints: List member ([with campaign ID](/api-reference/loyalties/list-member-pending-points-with-campaign-id), [without campaign ID](/api-reference/loyalties/list-member-pending-points)), [List campaign pending points](/api-reference/loyalties/list-campaign-pending-points).\nThis **POST** method does not require a request body.\n👍 Configuring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nActivate manually the pending points and add them to the loyalty card. The pending points are determined by the pending point ID.\nOnce activated, the pending point entry with that ID is not listed by the endpoints: List member ([with campaign ID](/api-reference/loyalties/list-member-pending-points-with-campaign-id), [without campaign ID](/api-reference/loyalties/list-member-pending-points)), [List campaign pending points](/api-reference/loyalties/list-campaign-pending-points).\nThis **POST** method does not require a request body.\n\nConfiguring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n",
"parameters": [],
"security": [
{
@@ -68307,11 +68320,12 @@
],
"post": {
"operationId": "adjust-member-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Adjust Member Pending Points",
- "description": "Adjusts the pending points with a given ID. You can add or subtract the number of points.\n👍 Configuring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nAdjusts the pending points with a given ID. You can add or subtract the number of points.\n\nConfiguring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n",
"parameters": [],
"security": [
{
@@ -68397,11 +68411,12 @@
],
"post": {
"operationId": "cancel-member-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Cancel Member Pending Points",
- "description": "Cancel manually the pending points for the loyalty card. The pending points are determined by the pending point ID.\nOnce canceled, the pending point entry with that ID is not listed by the endpoints: List member ([with campaign ID](/api-reference/loyalties/list-member-pending-points-with-campaign-id), [without campaign ID](/api-reference/loyalties/list-member-pending-points)), [List campaign pending points](/api-reference/loyalties/list-campaign-pending-points).\nThis **POST** method does not require a request body and it returns an empty, 204, response.\n👍 Configuring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nCancel manually the pending points for the loyalty card. The pending points are determined by the pending point ID.\nOnce canceled, the pending point entry with that ID is not listed by the endpoints: List member ([with campaign ID](/api-reference/loyalties/list-member-pending-points-with-campaign-id), [without campaign ID](/api-reference/loyalties/list-member-pending-points)), [List campaign pending points](/api-reference/loyalties/list-campaign-pending-points).\nThis **POST** method does not require a request body and it returns an empty, 204, response.\n\nConfiguring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n",
"parameters": [],
"security": [
{
@@ -68443,11 +68458,12 @@
],
"get": {
"operationId": "list-member-activity-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Activity with campaign ID",
- "description": "Retrieves the list of activities for the given member ID related to a voucher and customer who is the holder of the voucher.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieves the list of activities for the given member ID related to a voucher and customer who is the holder of the voucher.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -68507,11 +68523,12 @@
],
"get": {
"operationId": "list-member-activity",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Activity",
- "description": "\n 📘 Alternative endpoint\n This endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-member-activity-with-campaign-id). The URL was re-designed to allow you to get member activities without having to provide the campaignId as a path parameter.\nRetrieves the list of activities for the given member ID related to a voucher and customer who is the holder of the voucher.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-member-activity-with-campaign-id). The URL was re-designed to allow you to get member activities without having to provide the campaignId as a path parameter.\n\nRetrieves the list of activities for the given member ID related to a voucher and customer who is the holder of the voucher.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -68580,11 +68597,12 @@
],
"post": {
"operationId": "update-loyalty-card-balance-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Adjust Loyalty Card Balance with campaign ID",
- "description": "This method adds or removes balance to an existing loyalty card that is assigned to a holder. The removal of points will consume the points that expire the soonest. \n >🚧 Async Action\n \n This is an async action. If you want to perform several add or remove loyalty card balance actions in a short time and their order matters, set up sufficient time-out between the calls.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nThis method adds or removes balance to an existing loyalty card that is assigned to a holder. The removal of points will consume the points that expire the soonest. \n \nAsync Action\nThis is an async action. If you want to perform several add or remove loyalty card balance actions in a short time and their order matters, set up sufficient time-out between the calls.\n",
"parameters": [],
"security": [
{
@@ -68677,11 +68695,12 @@
],
"post": {
"operationId": "update-loyalty-card-balance",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Adjust Loyalty Card Balance",
- "description": "This method gives adds or removes balance to an existing loyalty card that is assigned to a holder. The removal of points will consume the points that expire the soonest. \n >🚧 Async Action\n \n This is an async action. If you want to perform several add or remove loyalty card balance actions in a short time and their order matters, set up sufficient time-out between the calls.\n 📘 Alternative endpoint\n This endpoint is an alternative to this [endpoint](/api-reference/loyalties/adjust-loyalty-card-balance-with-campaign-id). The URL was re-designed to allow you to add or remove loyalty card balance without having to provide the campaignId as a path parameter.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nThis method gives adds or removes balance to an existing loyalty card that is assigned to a holder. The removal of points will consume the points that expire the soonest. \n \nAsync Action\nThis is an async action. If you want to perform several add or remove loyalty card balance actions in a short time and their order matters, set up sufficient time-out between the calls.\n\n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/adjust-loyalty-card-balance-with-campaign-id). The URL was re-designed to allow you to add or remove loyalty card balance without having to provide the campaignId as a path parameter.\n",
"parameters": [],
"security": [
{
@@ -68770,11 +68789,12 @@
],
"post": {
"operationId": "transfer-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Transfer Loyalty Points",
- "description": "Transfer points between different loyalty cards which have holders.\nProvide the campaign ID and the loyalty card ID you want the points to be transferred to as path parameters. In the request body, provide the loyalty cards you want the points to be transferred from and the number of points to transfer from each card.\nTransfer works only for loyalty cards that have holders, meaning the cards were published to customers.\nThe transferred points expire according to the target program expiration rules.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nTransfer points between different loyalty cards which have holders.\nProvide the campaign ID and the loyalty card ID you want the points to be transferred to as path parameters. In the request body, provide the loyalty cards you want the points to be transferred from and the number of points to transfer from each card.\nTransfer works only for loyalty cards that have holders, meaning the cards were published to customers.\nThe transferred points expire according to the target program expiration rules.",
"parameters": [],
"security": [
{
@@ -68895,11 +68915,12 @@
],
"get": {
"operationId": "list-loyalty-campaign-transactions",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Campaign Transactions",
- "description": "Retrieves all transactions for the campaign with the given campaign ID or campaign name.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieves all transactions for the campaign with the given campaign ID or campaign name.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -69046,6 +69067,7 @@
],
"post": {
"operationId": "export-loyalty-campaign-transactions",
+ "deprecated": true,
"tags": [
"Loyalties"
],
@@ -69061,7 +69083,7 @@
}
],
"summary": "Export Loyalty Campaign Transactions",
- "description": "Export transactions is an asynchronous process that generates a CSV file with the data about or point movements on all loyalty cards in a given campaign.\nTo export transactions:\n1. In the export request, use parameters to select which fields will be exported, in what order, and which data will be filtered.\n2. Use the returned id to track the export status with the [GET Export](/api-reference/exports/get-export) method.\n3. In the GET Export method, when the returned status field has the DONE value, the export file has been generated.\n4. Use the URL in the result property to download the file. You must be logged to your Voucherify account on a given cluster in the browser to be able to download the file.\nAn export request will almost always result in a single file being generated by the system. However, when the data volume is large, the system may split the results into multiple files.\nAn example export file can look as follows:\n\n\n 👍 Export Campaign Transactions\n This method works in the same way the [POST Export Campaign Transactions](/api-reference/campaigns/export-campaign-transactions) does, but it is limited to loyalty campaigns only. The POST Export Campaign Transactions method can also export gift card campaign transactions.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nExport transactions is an asynchronous process that generates a CSV file with the data about or point movements on all loyalty cards in a given campaign.\nTo export transactions:\n1. In the export request, use parameters to select which fields will be exported, in what order, and which data will be filtered.\n2. Use the returned id to track the export status with the [GET Export](/api-reference/exports/get-export) method.\n3. In the GET Export method, when the returned status field has the DONE value, the export file has been generated.\n4. Use the URL in the result property to download the file. You must be logged to your Voucherify account on a given cluster in the browser to be able to download the file.\nAn export request will almost always result in a single file being generated by the system. However, when the data volume is large, the system may split the results into multiple files.\nAn example export file can look as follows:\n\n\n\nExport Campaign Transactions\nThis method works in the same way the [POST Export Campaign Transactions](/api-reference/campaigns/export-campaign-transactions) does, but it is limited to loyalty campaigns only. The POST Export Campaign Transactions method can also export gift card campaign transactions.\n",
"requestBody": {
"description": "Specify the parameters for the transaction export.",
"content": {
@@ -69196,11 +69218,12 @@
],
"get": {
"operationId": "list-loyalty-card-transactions-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Card Transactions with campaign ID",
- "description": "Retrieve transaction data related to point movements for a specific loyalty card.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve transaction data related to point movements for a specific loyalty card.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -69565,11 +69588,12 @@
],
"get": {
"operationId": "list-loyalty-card-transactions",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Card Transactions",
- "description": "Retrieve transaction data related to point movements for a specific loyalty card.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve transaction data related to point movements for a specific loyalty card.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -69934,11 +69958,12 @@
],
"post": {
"operationId": "export-loyalty-card-transactions",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Export Loyalty Card Transactions",
- "description": "Export transactions that are associated with point movements on a loyalty card.\n\n\n",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nExport transactions that are associated with point movements on a loyalty card.\n\n\n",
"parameters": [],
"security": [
{
@@ -70082,11 +70107,12 @@
],
"post": {
"operationId": "export-loyalty-card-transactions-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Export Loyalty Card Transactions with campaign ID",
- "description": "Export transactions that are associated with point movements on a loyalty card.\n\n\n",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nExport transactions that are associated with point movements on a loyalty card.\n\n\n",
"parameters": [],
"security": [
{
@@ -70230,11 +70256,12 @@
],
"get": {
"operationId": "list-points-expiration",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Card Point Expiration",
- "description": "Retrieve loyalty point expiration buckets for a given loyalty card. Expired point buckets are not returned in this endpoint. You can use the [Exports API](/api-reference/exports/create-export) to retrieve a list of both ACTIVE and EXPIRED point buckets.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve loyalty point expiration buckets for a given loyalty card. Expired point buckets are not returned in this endpoint. You can use the [Exports API](/api-reference/exports/create-export) to retrieve a list of both ACTIVE and EXPIRED point buckets.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -70341,11 +70368,12 @@
],
"post": {
"operationId": "create-points-expiration-export",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Export Loyalty Campaign Point Expiration",
- "description": "Schedule the generation of a point expiration CSV file for a particular campaign. It can list point buckets, which can have an ACTIVE or EXPIRED status.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nSchedule the generation of a point expiration CSV file for a particular campaign. It can list point buckets, which can have an ACTIVE or EXPIRED status.",
"parameters": [],
"security": [
{
@@ -70514,11 +70542,12 @@
],
"get": {
"operationId": "list-earning-rules",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Earning Rules",
- "description": "Returns a list of all earning rules within a given campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nReturns a list of all earning rules within a given campaign.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -71084,11 +71113,12 @@
},
"post": {
"operationId": "create-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Create Earning Rule",
- "description": "Create earning rules for a loyalty campaign.\n 🚧 Maximum number of earning rules\n You can create up to 100 earning rules per project. The limit can be customized for clients with a single-tenant setup.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nCreate earning rules for a loyalty campaign.\n\nMaximum number of earning rules\nYou can create up to 100 earning rules per project. The limit can be customized for clients with a single-tenant setup.\n",
"parameters": [],
"security": [
{
@@ -72259,11 +72289,12 @@
],
"get": {
"operationId": "get-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Earning Rule",
- "description": "Retrieves an earning rule assigned to a campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieves an earning rule assigned to a campaign.",
"parameters": [],
"security": [
{
@@ -72542,11 +72573,12 @@
},
"put": {
"operationId": "update-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Update Earning Rule",
- "description": "Update an earning rule definition.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nUpdate an earning rule definition.",
"parameters": [],
"security": [
{
@@ -72656,11 +72688,12 @@
},
"delete": {
"operationId": "delete-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Delete Earning Rule",
- "description": "This method deletes an earning rule for a specific loyalty campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nThis method deletes an earning rule for a specific loyalty campaign.",
"parameters": [],
"security": [
{
@@ -72702,11 +72735,12 @@
],
"post": {
"operationId": "enable-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Enable Earning Rule",
- "description": "Enable an earning rule.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nEnable an earning rule.",
"parameters": [],
"security": [
{
@@ -72789,11 +72823,12 @@
],
"post": {
"operationId": "disable-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Disable Earning Rule",
- "description": "Disable an earning rule.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nDisable an earning rule.",
"parameters": [],
"security": [
{
@@ -72861,11 +72896,12 @@
],
"get": {
"operationId": "list-member-rewards",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Rewards",
- "description": "Retrieves the list of rewards that the given customer (identified by member_id, which is a loyalty card assigned to a particular customer) **can get in exchange for loyalty points**. \nYou can use the affordable_only parameter to limit the results to rewards that the customer can actually afford (only rewards whose price in points is not higher than the loyalty points balance on a loyalty card). \nPlease note that rewards that are disabled (i.e. set to Not Available in the Dashboard) for a given loyalty tier reward mapping will not be returned in this endpoint.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieves the list of rewards that the given customer (identified by member_id, which is a loyalty card assigned to a particular customer) **can get in exchange for loyalty points**. \nYou can use the affordable_only parameter to limit the results to rewards that the customer can actually afford (only rewards whose price in points is not higher than the loyalty points balance on a loyalty card). \nPlease note that rewards that are disabled (i.e. set to Not Available in the Dashboard) for a given loyalty tier reward mapping will not be returned in this endpoint.",
"parameters": [
{
"in": "query",
@@ -73113,11 +73149,12 @@
],
"get": {
"operationId": "get-reward-details",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Reward Details",
- "description": "Get reward details in the context of a loyalty campaign and reward assignment ID.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nGet reward details in the context of a loyalty campaign and reward assignment ID.",
"parameters": [],
"security": [
{
@@ -73221,11 +73258,12 @@
],
"get": {
"operationId": "list-reward-assignments-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Reward Assignments with campaign ID",
- "description": "Returns reward assignments from a given loyalty campaign.\n 📘 Alternative endpoint\n This endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-campaign-rewards). The URL was re-designed to be more contextual to the type of data returned in the response.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nReturns reward assignments from a given loyalty campaign.\n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-campaign-rewards). The URL was re-designed to be more contextual to the type of data returned in the response.\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -73421,11 +73459,12 @@
],
"get": {
"operationId": "list-reward-assignments-2",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Campaign Rewards",
- "description": "Returns active rewards from a given loyalty campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nReturns active rewards from a given loyalty campaign.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -73515,11 +73554,12 @@
},
"post": {
"operationId": "create-reward-assignment-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Create Loyalty Campaign Reward Assignment",
- "description": "Add rewards to a loyalty campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nAdd rewards to a loyalty campaign.",
"parameters": [],
"security": [
{
@@ -73635,11 +73675,12 @@
],
"get": {
"operationId": "get-reward-assignment-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Campaign Reward Assignments",
- "description": "Retrieve specific reward assignment.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve specific reward assignment.",
"parameters": [],
"security": [
{
@@ -73706,11 +73747,12 @@
],
"get": {
"operationId": "get-reward-assignment-2",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Campaign Reward Assignment",
- "description": "Retrieve specific reward assignment.\n 📘 Alternative endpoint\n This endpoint is an alternative to this [endpoint](/api-reference/loyalties/get-campaign-reward-assignments). ",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve specific reward assignment.\n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/get-campaign-reward-assignments).\n",
"parameters": [],
"security": [
{
@@ -73755,11 +73797,12 @@
},
"put": {
"operationId": "update-reward-assignment-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Update Campaign Reward Assignment",
- "description": "Updates rewards parameters, i.e. the points cost for the specific reward.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nUpdates rewards parameters, i.e. the points cost for the specific reward.",
"parameters": [],
"security": [
{
@@ -73826,11 +73869,12 @@
},
"delete": {
"operationId": "delete-reward-assignment-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Delete Campaign Reward Assignment",
- "description": "This method deletes a reward assignment for a particular loyalty campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nThis method deletes a reward assignment for a particular loyalty campaign.",
"parameters": [],
"security": [
{
@@ -73872,11 +73916,12 @@
],
"post": {
"operationId": "redeem-reward-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Redeem Reward with campaign ID",
- "description": "Exchange points from a loyalty card for a specified reward. This API method returns an assigned award in the response. It means that if a requesting customer gets a coupon code with a discount for the next order, that discount code will be visible in response as part of the reward object definition.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nExchange points from a loyalty card for a specified reward. This API method returns an assigned award in the response. It means that if a requesting customer gets a coupon code with a discount for the next order, that discount code will be visible in response as part of the reward object definition.",
"parameters": [],
"security": [
{
@@ -75316,11 +75361,12 @@
],
"post": {
"operationId": "redeem-reward",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Redeem Reward",
- "description": "\n 📘 Alternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/redeem-reward-with-campaign-id). The URL was re-designed to allow you to redeem a reward without having to provide the campaignId as a path parameter.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/redeem-reward-with-campaign-id). The URL was re-designed to allow you to redeem a reward without having to provide the campaignId as a path parameter.\n",
"parameters": [],
"security": [
{
@@ -75599,11 +75645,12 @@
],
"get": {
"operationId": "list-loyalty-tiers",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Tiers",
- "description": "Retrieve a list of loyalty tiers which were added to the loyalty program.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve a list of loyalty tiers which were added to the loyalty program.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -75759,11 +75806,12 @@
},
"post": {
"operationId": "create-in-bulk-loyalty-tiers",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Create loyalty tiers",
- "description": "Creates loyalty tiers for desired campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nCreates loyalty tiers for desired campaign.",
"parameters": [],
"security": [
{
@@ -75823,11 +75871,12 @@
],
"get": {
"operationId": "get-loyalty-tier",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Loyalty Tier",
- "description": "Retrieve a loyalty tier from a loyalty campaign by the loyalty tier ID.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve a loyalty tier from a loyalty campaign by the loyalty tier ID.",
"parameters": [],
"security": [
{
@@ -75916,11 +75965,12 @@
],
"get": {
"operationId": "list-member-loyalty-tier",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member's Loyalty Tiers",
- "description": "Retrieve member tiers using the loyalty card ID.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve member tiers using the loyalty card ID.",
"parameters": [],
"security": [
{
@@ -76034,11 +76084,12 @@
],
"get": {
"operationId": "list-loyalty-tier-earning-rules",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Tier Earning Rules",
- "description": "Retrieve available earning rules for a given tier and the calculation method for earning points.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve available earning rules for a given tier and the calculation method for earning points.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -76650,11 +76701,12 @@
],
"get": {
"operationId": "list-loyalty-tier-rewards",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Tier Rewards",
- "description": "Get available rewards for a given tier.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nGet available rewards for a given tier.",
"parameters": [],
"security": [
{
@@ -77123,7 +77175,7 @@
"Customers"
],
"summary": "Create Customer",
- "description": "Creates a customer object.\n 📘 Upsert Mode\n If you pass an id or a source_id that already exists in the customer database, Voucherify will return a related customer object with updated fields.",
+ "description": "Creates a customer object.\n\nUpsert Mode\nIf you pass an id or a source_id that already exists in the customer database, Voucherify will return a related customer object with updated fields.\n",
"parameters": [],
"security": [
{
@@ -77589,7 +77641,7 @@
"Customers"
],
"summary": "Import and Update Customers using CSV",
- "description": "This API method lets you import or update customer data. To get a proper and valid response, please send a CSV file with data separated by commas. \n# Request Example\n# CSV File Format\nThe CSV file has to include headers in the first line. All properties which cannot be mapped to standard customer fields will be added to the metadata object.\n 📘 Standard customer fields mapping\n **No spaces allowed in field names** \n Id, Name, Email, Phone, Birthdate, Source_id, Address_line_1, Address_line_2, Address_Postal_Code, Address_City, Address_State, Address_Country, Description, Metadata_name_1, Metadata_name_2\n# Update Customers using CSV\nIf you would like to update customers data, you can do it using the CSV file with new data. However, remember to include a source_id in your CSV file to manage the update successfully.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
+ "description": "This API method lets you import or update customer data. To get a proper and valid response, please send a CSV file with data separated by commas. \n# Request Example\n# CSV File Format\nThe CSV file has to include headers in the first line. All properties which cannot be mapped to standard customer fields will be added to the metadata object.\n\nStandard customer fields mapping\n**No spaces allowed in field names** Id, Name, Email, Phone, Birthdate, Source_id, Address_line_1, Address_line_2, Address_Postal_Code, Address_City, Address_State, Address_Country, Description, Metadata_name_1, Metadata_name_2\n\n# Update Customers using CSV\nIf you would like to update customers data, you can do it using the CSV file with new data. However, remember to include a source_id in your CSV file to manage the update successfully.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
"parameters": [],
"security": [
{
@@ -78923,7 +78975,7 @@
"Orders"
],
"summary": "Create Order",
- "description": "Creates an order object and triggers an order creation event.\n 📘 Upsert Mode\n If you pass an id or a source_id that already exists in the order database, Voucherify will return a related order object with updated fields.",
+ "description": "Creates an order object and triggers an order creation event.\n\nUpsert Mode\nIf you pass an id or a source_id that already exists in the order database, Voucherify will return a related order object with updated fields.\n",
"parameters": [],
"security": [
{
@@ -79369,7 +79421,7 @@
"Orders"
],
"summary": "Import Orders",
- "description": "\n 🚧 Historical orders\n This endpoint should only be used to import historical orders into Voucherify. For on-going synchronization, the [update order](/api-reference/orders/update-order) endpoint should be used. This is critical because this endpoint does not store events or launch distributions.\nThe orders will also have a created_at date thats assigned when theyve been imported to Voucherify. To keep track of the actual order creation date, add an order metadata in ISO 8601 date or date time format to each imported order.\n# Limitations\n## Import volume\nThere can be only a single on-going order import per tenant per project at a given time. The user can schedule more imports but those extra imports will be scheduled to run in sequence one by one. \n## Maximum count of orders in single import\nThere is a 2000 limit of orders per one request.\n# Notifications\nThere are no notifications on the Dashboard because this import is launched via the API.\n# Triggered actions\n \nIf you import orders with customers, then a logic will be scheduled responsible for placing these customers into segments and refreshing the segments summary. Consequently, this update will trigger \n- Customers entering into segments\n- Distributions based on any rules tied to customer entering segment(s)\n- Earning rules based on the customer entering segment(s)\n# What is not triggered\n1. No webhooks are triggered during the import of orders - for both orders and upserted products / SKUs. \n2. Distributions based on Order Update, Order Paid, Order Created and Order Cancelled. In other words if you have a distribution based on Order Paid and you import an order with a PAID status, the distribution is not going to be triggered. \n3. No events are created during the import of orders - for both orders and upserted products / SKUs. In other words you wont see any events in the Activity tab in the Dashboard such as Order created or Order paid. If you are additionally upserting products / SKUs, then you wont see the Product created events listed, etc. \n4. Earning rules based on Order Paid wont be triggered.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request with [GET Async Action](/api-reference/async-actions/get-async-action) endpoint.",
+ "description": "\n\nHistorical orders\nThis endpoint should only be used to import historical orders into Voucherify. For on-going synchronization, the [update order](/api-reference/orders/update-order) endpoint should be used. This is critical because this endpoint does not store events or launch distributions.\n\nThe orders will also have a created_at date thats assigned when theyve been imported to Voucherify. To keep track of the actual order creation date, add an order metadata in ISO 8601 date or date time format to each imported order.\n# Limitations\n## Import volume\nThere can be only a single on-going order import per tenant per project at a given time. The user can schedule more imports but those extra imports will be scheduled to run in sequence one by one. \n## Maximum count of orders in single import\nThere is a 2000 limit of orders per one request.\n# Notifications\nThere are no notifications on the Dashboard because this import is launched via the API.\n# Triggered actions\n \nIf you import orders with customers, then a logic will be scheduled responsible for placing these customers into segments and refreshing the segments summary. Consequently, this update will trigger \n- Customers entering into segments\n- Distributions based on any rules tied to customer entering segment(s)\n- Earning rules based on the customer entering segment(s)\n# What is not triggered\n1. No webhooks are triggered during the import of orders - for both orders and upserted products / SKUs. \n2. Distributions based on Order Update, Order Paid, Order Created and Order Cancelled. In other words if you have a distribution based on Order Paid and you import an order with a PAID status, the distribution is not going to be triggered. \n3. No events are created during the import of orders - for both orders and upserted products / SKUs. In other words you wont see any events in the Activity tab in the Dashboard such as Order created or Order paid. If you are additionally upserting products / SKUs, then you wont see the Product created events listed, etc. \n4. Earning rules based on Order Paid wont be triggered.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request with [GET Async Action](/api-reference/async-actions/get-async-action) endpoint.",
"parameters": [],
"security": [
{
@@ -79971,7 +80023,7 @@
"Products"
],
"summary": "Create Product",
- "description": "Creates a product object.\n 📘 Upsert Mode\n If you pass an id or a source_id that already exists in the product database, Voucherify will return a related product object with updated fields.",
+ "description": "Creates a product object.\n\nUpsert Mode\nIf you pass an id or a source_id that already exists in the product database, Voucherify will return a related product object with updated fields.\n",
"parameters": [],
"security": [
{
@@ -80631,7 +80683,7 @@
"Products"
],
"summary": "Create SKU",
- "description": "This method adds product variants to a [created product](/api-reference/products/create-product). \n 📘 Upsert Mode\n If you pass an id or a source_id that already exists in the sku database, Voucherify will return a related sku object with updated fields.",
+ "description": "This method adds product variants to a [created product](/api-reference/products/create-product). \n\nUpsert Mode\nIf you pass an id or a source_id that already exists in the sku database, Voucherify will return a related sku object with updated fields.\n",
"parameters": [],
"security": [
{
@@ -80847,7 +80899,7 @@
"Products"
],
"summary": "Import Products using CSV",
- "description": "Import products into the repository using a CSV file.\nThe CSV file has to include headers in the first line.\n 📘 Standard product fields mapping\n - Create a **comma separated value (CSV) file** or download our CSV import template. You can find an example template [here](https://s3.amazonaws.com/helpscout.net/docs/assets/5902f1c12c7d3a057f88a36d/attachments/627b82ed68d51e779443f550/Import_products_template.csv).\n - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name\n - **Name** is a **required** field. The remaining fields in the CSV template are optional.\n - Override/Update products **names** in Voucherify using this method. Data will be updated for each product included in the CSV file whose **source_id** matches a source ID in Voucherify. No other data can be updated other than the product name.\n - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 standard**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11\n - YYYY-MM-DD\n - YYYY-MM-DDTHH\n - YYYY-MM-DDTHH:mm\n - YYYY-MM-DDTHH:mm:ss\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ss.SSSZ\n - Columns that cannot be mapped to standard fields, will be mapped to **Custom attributes** and added as **products metadata**. There is no limit on the number of custom attributes that you can import as metadata. \n - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](/prepare/metadata#add-metadata).\n - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2.\n - Headers with metadata names **cant contain white-space characters**.\n - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: \n - array of strings: subscribed,premium \n - array of numbers: 123,234. \n - array of dates: 2000-01-01,2000-01-02\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
+ "description": "Import products into the repository using a CSV file.\nThe CSV file has to include headers in the first line.\n\nStandard product fields mapping\n- Create a **comma separated value (CSV) file** or download our CSV import template. You can find an example template [here](https://s3.amazonaws.com/helpscout.net/docs/assets/5902f1c12c7d3a057f88a36d/attachments/627b82ed68d51e779443f550/Import_products_template.csv).\n- Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name\n- **Name** is a **required** field. The remaining fields in the CSV template are optional.\n- Override/Update products **names** in Voucherify using this method. Data will be updated for each product included in the CSV file whose **source_id** matches a source ID in Voucherify. No other data can be updated other than the product name.\n- Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 standard**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11\n - YYYY-MM-DD\n - YYYY-MM-DDTHH\n - YYYY-MM-DDTHH:mm\n - YYYY-MM-DDTHH:mm:ss\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ss.SSSZ\n- Columns that cannot be mapped to standard fields, will be mapped to **Custom attributes** and added as **products metadata**. There is no limit on the number of custom attributes that you can import as metadata.\n- To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](/prepare/metadata#add-metadata).\n- **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2.\n- Headers with metadata names **cant contain white-space characters**.\n- If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example:\n - array of strings: subscribed,premium\n - array of numbers: 123,234.\n - array of dates: 2000-01-01,2000-01-02\n\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
"parameters": [],
"security": [
{
@@ -80898,7 +80950,7 @@
"Products"
],
"summary": "Import SKUs using CSV",
- "description": "Import SKUs into the repository using a CSV file.\nThe CSV file has to include headers in the first line. All properties which cannot be mapped to standard SKU fields will be added to the metadata object. You can find an example template [here](https://s3.amazonaws.com/helpscout.net/docs/assets/5902f1c12c7d3a057f88a36d/attachments/627b98d08c9b585083488a4c/Import_SKUS_template.csv). \n 🚧 Import sequence\n First import products using the [dedicated endpoint](/api-reference/products/import-products-using-csv), then import SKUs using this endpoint to properly match SKUs to products.\n 📘 Standard SKU fields mapping\n - **Required** fields are source_id and product_id.\n - Supported CSV file headers: product_id,sku,source_id,price,image_url,attributes\n - SKU **source_id** must be unique in the entire product catalog, no duplicates are allowed.\n - SKU attributes need to be in the form of a stringy-fied json, i.e.{color:blue}. These attributes must be defined in the **product** beforehand so you can import them to the SKU.\n - You can use this method to update the following parameters in bulk: **sku** and the sku **price**.\n - Columns that cannot be mapped to standard fields will be mapped to Custom attributes and added as product metadata. There is no limit on the number of custom attributes that you can import as metadata.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
+ "description": "Import SKUs into the repository using a CSV file.\nThe CSV file has to include headers in the first line. All properties which cannot be mapped to standard SKU fields will be added to the metadata object. You can find an example template [here](https://s3.amazonaws.com/helpscout.net/docs/assets/5902f1c12c7d3a057f88a36d/attachments/627b98d08c9b585083488a4c/Import_SKUS_template.csv). \n\nImport sequence\nFirst import products using the [dedicated endpoint](/api-reference/products/import-products-using-csv), then import SKUs using this endpoint to properly match SKUs to products.\n\n\nStandard SKU fields mapping\n- **Required** fields are source_id and product_id.\n- Supported CSV file headers: product_id,sku,source_id,price,image_url,attributes\n- SKU **source_id** must be unique in the entire product catalog, no duplicates are allowed.\n- SKU attributes need to be in the form of a stringy-fied json, i.e.{color:blue}. These attributes must be defined in the **product** beforehand so you can import them to the SKU.\n- You can use this method to update the following parameters in bulk: **sku** and the sku **price**.\n- Columns that cannot be mapped to standard fields will be mapped to Custom attributes and added as product metadata. There is no limit on the number of custom attributes that you can import as metadata.\n\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
"parameters": [],
"security": [
{
@@ -81769,7 +81821,7 @@
"Validation Rules"
],
"summary": "Create Validation Rules",
- "description": "Create a validation rule.\n 🚧 Managing validation rules\n It is recommended to [create or update validation rules](/personalize/create-validation-rules) in the Voucherify dashboard. The rule builder in the dashboard helps configuring the desired conditions in a convenient way. The API should not be used as a preferable way to create and manage validation rules.",
+ "description": "Create a validation rule.\n\nManaging validation rules\nIt is recommended to [create or update validation rules](/personalize/create-validation-rules) in the Voucherify dashboard. The rule builder in the dashboard helps configuring the desired conditions in a convenient way. The API should not be used as a preferable way to create and manage validation rules.\n",
"parameters": [],
"security": [
{
@@ -82033,7 +82085,7 @@
"Validation Rules"
],
"summary": "Update Validation Rule",
- "description": "Update validation rule parameters.\n 🚧 Managing validation rules\n It is recommended to [create or update validation rules](/personalize/create-validation-rules) in the Voucherify dashboard. The rule builder in the dashboard helps configuring the desired conditions in a convenient way. The API should not be used as a preferable way to create and manage validation rules.",
+ "description": "Update validation rule parameters.\n\nManaging validation rules\nIt is recommended to [create or update validation rules](/personalize/create-validation-rules) in the Voucherify dashboard. The rule builder in the dashboard helps configuring the desired conditions in a convenient way. The API should not be used as a preferable way to create and manage validation rules.\n",
"parameters": [],
"security": [
{
@@ -82735,7 +82787,7 @@
"Segments"
],
"summary": "Create Segment",
- "description": "Create a customer segment.\n 🚧 Limit on static segments\n There is a cap on the number of customers that you can assign to a static segment: **20,000**. If you would like to create a bigger segment, then you can use the unlimited auto-update or passive segment instead and use some customer metadata to build this segment.\n 🚧 Limit on Active and Passive segments\n You can create a maximum of 100 passive and active segments.",
+ "description": "Create a customer segment.\n\nLimit on static segments\nThere is a cap on the number of customers that you can assign to a static segment: **20,000**. If you would like to create a bigger segment, then you can use the unlimited auto-update or passive segment instead and use some customer metadata to build this segment.\n\n\nLimit on Active and Passive segments\nYou can create a maximum of 100 passive and active segments.\n",
"parameters": [],
"security": [
{
@@ -83603,7 +83655,7 @@
"Exports"
],
"summary": "Create Export",
- "description": "Create export object. The export can be any of the following types: voucher, redemption, publication, customer, order, points_expiration, voucher_transactions, product, or sku. \n# Defaults\nIf you only specify the object type in the request body without specifying the fields, the API will return the following fields per export object:\n\n\n 📘 Date and time in the export API\n The exported date and times are always provided in the UTC time zone.\n# Fetching particular data sets\nUsing the parameters body parameter, you can narrow down which fields to export and how to filter the results. The fields are an array of strings containing the data that you would like to export. These fields define the headers in the CSV file. The array can be a combination of any of the following available fields:\n# Orders \n\n\n# Vouchers \n\n\n\n\n\n# Publications\n\n\n# Redemptions\n\n\n\n# Customers\n\n\n\n\n\n\n# Points Expirations\n\n\n # Gift Card Transactions\n\n\n # Loyalty Card Transactions\n\n\n",
+ "description": "Create export object. The export can be any of the following types: voucher, redemption, publication, customer, order, points_expiration, voucher_transactions, product, or sku. \n# Defaults\nIf you only specify the object type in the request body without specifying the fields, the API will return the following fields per export object:\n\n\n\nDate and time in the export API\nThe exported date and times are always provided in the UTC time zone.\n\n# Fetching particular data sets\nUsing the parameters body parameter, you can narrow down which fields to export and how to filter the results. The fields are an array of strings containing the data that you would like to export. These fields define the headers in the CSV file. The array can be a combination of any of the following available fields:\n# Orders \n\n\n# Vouchers \n\n\n\n\n\n# Publications\n\n\n# Redemptions\n\n\n\n# Customers\n\n\n\n\n\n\n# Points Expirations\n\n\n # Gift Card Transactions\n\n\n # Loyalty Card Transactions\n\n\n",
"parameters": [],
"security": [
{
@@ -83896,7 +83948,7 @@
"Exports"
],
"summary": "Download Export",
- "description": "Download the contents of the exported CSV file. \n 📘 Important notes\n **Base URL:** \n - https://download.voucherify.io (Europe) \n - https://us1.download.voucherify.io (US) \n - https://as1.download.voucherify.io (Asia) \n **Token:** Can be found within the result parameter of the [Get Export](/api-reference/exports/get-export) method response.",
+ "description": "Download the contents of the exported CSV file. \n\nImportant notes\n**Base URL:**\n- https://download.voucherify.io (Europe)\n- https://us1.download.voucherify.io (US)\n- https://as1.download.voucherify.io (Asia)\n**Token:** Can be found within the result parameter of the [Get Export](/api-reference/exports/get-export) method response.\n",
"parameters": [],
"security": [
{
@@ -84222,7 +84274,7 @@
"Metadata Schemas"
],
"summary": "List Metadata Schema Definitions",
- "description": "Retrieve metadata schema definitions.\n📘 Management API\nIf you have Management API enabled, you can also use the [List Metadata Schemas](/api-reference/management/list-metadata-schemas) endpoint to list all metadata schemas.",
+ "description": "Retrieve metadata schema definitions.\n\nManagement API\nIf you have Management API enabled, you can also use the [List Metadata Schemas](/api-reference/management/list-metadata-schemas) endpoint to list all metadata schemas.\n",
"parameters": [],
"security": [
{
@@ -84731,7 +84783,7 @@
"Metadata Schemas"
],
"summary": "Get Metadata Schema",
- "description": "Retrieves a metadata schema per resource type.\n# Resource types\n## Standard\nYou can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter.\n- campaign\n- customer\n- earning_rule\n- loyalty_tier\n- order\n- order_item\n- product\n- promotion_tier\n- publication\n- redemption\n- reward\n- voucher\n## Custom\nIf you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details.\n📘 Management API\nIf you have Management API enabled, you can also use the [Get Metadata Schemas](/api-reference/management/get-metadata-schema) endpoint to retrieve a metadata schema using its ID.",
+ "description": "Retrieves a metadata schema per resource type.\n# Resource types\n## Standard\nYou can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter.\n- campaign\n- customer\n- earning_rule\n- loyalty_tier\n- order\n- order_item\n- product\n- promotion_tier\n- publication\n- redemption\n- reward\n- voucher\n## Custom\nIf you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details.\n\nManagement API\nIf you have Management API enabled, you can also use the [Get Metadata Schemas](/api-reference/management/get-metadata-schema) endpoint to retrieve a metadata schema using its ID.\n",
"parameters": [],
"security": [
{
@@ -85531,7 +85583,7 @@
"Referrals"
],
"summary": "Add Referral Code Holders with Campaign ID",
- "description": "Adds new holders to a referral code as **referees**. The data sent in the request is upserted into the customer data.\nIf the request returns an error even for one customer, you have to resend the whole request. Customer data is upserted if the data for all customers is correct.\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (customers.modify)\n- Publish Voucher (vouchers.publish)\n 👍\nTo add a holder as a referrer, use the [Create Publication](/api-reference/publications/create-publication) endpoint.",
+ "description": "Adds new holders to a referral code as **referees**. The data sent in the request is upserted into the customer data.\nIf the request returns an error even for one customer, you have to resend the whole request. Customer data is upserted if the data for all customers is correct.\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (customers.modify)\n- Publish Voucher (vouchers.publish)\n\nTo add a holder as a referrer, use the [Create Publication](/api-reference/publications/create-publication) endpoint.\n",
"parameters": [],
"security": [
{
@@ -85799,7 +85851,7 @@
"Referrals"
],
"summary": "Add Referral Code Holders",
- "description": "Adds new holders to a referral code as **referees**. The data sent in the request is upserted into the customer data.\nIf the request returns an error even for one customer, you have to resend the whole request. Customer data is upserted if the data for all customers is correct.\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (customers.modify)\n- Publish Voucher (vouchers.publish)\n 👍\nTo add a holder as a referrer, use the [Create Publication](/api-reference/publications/create-publication) endpoint.\n 📘 Alternative endpoint\nThis endpoint is an alternative to the [Add Referral Code Holders endpoint](/api-reference/referrals/add-referral-code-holders-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the campaignId as a path paremeter.",
+ "description": "Adds new holders to a referral code as **referees**. The data sent in the request is upserted into the customer data.\nIf the request returns an error even for one customer, you have to resend the whole request. Customer data is upserted if the data for all customers is correct.\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (customers.modify)\n- Publish Voucher (vouchers.publish)\n\nTo add a holder as a referrer, use the [Create Publication](/api-reference/publications/create-publication) endpoint.\n\n\nAlternative endpoint\nThis endpoint is an alternative to the [Add Referral Code Holders endpoint](/api-reference/referrals/add-referral-code-holders-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the campaignId as a path paremeter.\n",
"parameters": [],
"security": [
{
@@ -85902,7 +85954,7 @@
"Referrals"
],
"summary": "List Referral Code Holders",
- "description": "Retrieves the holders of the referral code from a referral campaign.\nTo use this endpoint, you must have the following permissions:\n- Read Customers (customers.details.read)\n 📘 Alternative endpoint\nThis endpoint is an alternative to the [List Member Holders endpoint](/api-reference/referrals/list-referral-code-holders-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the campaignId as a path paremeter.",
+ "description": "Retrieves the holders of the referral code from a referral campaign.\nTo use this endpoint, you must have the following permissions:\n- Read Customers (customers.details.read)\n\nAlternative endpoint\nThis endpoint is an alternative to the [List Member Holders endpoint](/api-reference/referrals/list-referral-code-holders-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the campaignId as a path paremeter.\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -86021,7 +86073,7 @@
"Referrals"
],
"summary": "Remove Referral Card Holder",
- "description": "Removes the holder from a referral card. You can remove a referee only.\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (customers.modify)\n- Publish Voucher (vouchers.publish)\n 📘 Alternative endpoint\nThis endpoint is an alternative to the [Remove Referral Card Holder endpoint](/api-reference/referrals/remove-referral-card-holder-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the campaignId as a path paremeter.",
+ "description": "Removes the holder from a referral card. You can remove a referee only.\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (customers.modify)\n- Publish Voucher (vouchers.publish)\n\nAlternative endpoint\nThis endpoint is an alternative to the [Remove Referral Card Holder endpoint](/api-reference/referrals/remove-referral-card-holder-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the campaignId as a path paremeter.\n",
"parameters": [],
"security": [
{
@@ -86180,7 +86232,7 @@
"Templates"
],
"summary": "List Campaign Templates",
- "description": "Lists all campaign templates available in the project.\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Lists all campaign templates available in the project.\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -86277,7 +86329,7 @@
"Templates"
],
"summary": "Create Campaign Template",
- "description": "Creates a template for a discount or gift campaign, or a promotion tier.\nA template stores campaign configuration **without** the following details:\n- Campaign name\n- Category\n- Code count\nThe following elements are not supported by campaign templates:\n- Redeeming API keys\n- Redeeming users\n- Customer loyalty tier\n- Static segments\n 👍 Promotion Tiers and Campaign Templates\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the DISCOUNT_COUPON type. You can use this template to create:\n- [Discount campaign](/api-reference/templates/create-campaign-from-template),\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template).\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Creates a template for a discount or gift campaign, or a promotion tier.\nA template stores campaign configuration **without** the following details:\n- Campaign name\n- Category\n- Code count\nThe following elements are not supported by campaign templates:\n- Redeeming API keys\n- Redeeming users\n- Customer loyalty tier\n- Static segments\n\nPromotion Tiers and Campaign Templates\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the DISCOUNT_COUPON type. You can use this template to create:\n- [Discount campaign](/api-reference/templates/create-campaign-from-template),\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template).\n\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -86344,7 +86396,7 @@
"Templates"
],
"summary": "Get Campaign Template",
- "description": "Retrieves a campaign template available in the project.\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Retrieves a campaign template available in the project.\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -86387,7 +86439,7 @@
"Templates"
],
"summary": "Update Campaign Template",
- "description": "Updates the name or description of the campaign template.\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Updates the name or description of the campaign template.\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -86442,7 +86494,7 @@
"Templates"
],
"summary": "Delete Campaign Template",
- "description": "Deletes the campaign template permanently.\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Deletes the campaign template permanently.\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -86479,7 +86531,7 @@
"Templates"
],
"summary": "Create Campaign From Template",
- "description": "Creates a campaign out of a campaign template.\nTo create a campaign, you need to provide the name in the request, while other fields are optional. If no other fields are sent, the configuration from the template will be used.\nYou can send new values of the fields listed below to replace the settings saved in the template. However, you cannot assign an existing validation rule or create a new one in the request. If the template has a validation rule, a new validation rule is always created for the campaign. When the campaign has been created, then you can:\n- [Update the validation rule](/api-reference/validation-rules/update-validation-rule),\n- [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment),\n- [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments).\n 👍 Promotion Tiers and Campaign Templates\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the DISCOUNT_COUPON type. You can use this template to create:\n- [Discount campaign](/api-reference/templates/create-campaign-from-template)\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template)\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Creates a campaign out of a campaign template.\nTo create a campaign, you need to provide the name in the request, while other fields are optional. If no other fields are sent, the configuration from the template will be used.\nYou can send new values of the fields listed below to replace the settings saved in the template. However, you cannot assign an existing validation rule or create a new one in the request. If the template has a validation rule, a new validation rule is always created for the campaign. When the campaign has been created, then you can:\n- [Update the validation rule](/api-reference/validation-rules/update-validation-rule),\n- [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment),\n- [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments).\n\nPromotion Tiers and Campaign Templates\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the DISCOUNT_COUPON type. You can use this template to create:\n- [Discount campaign](/api-reference/templates/create-campaign-from-template)\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template)\n\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -86643,7 +86695,7 @@
"Templates"
],
"summary": "Add Promotion Tier From Template",
- "description": "Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign.\nTo add a promotion tier to a campaign, you need to provide the name in the request and the campaign ID. Other fields are optional. If no other fields are sent, the configuration from the template will be used.\nYou can send new values of the fields listed below to replace the settings saved in the template. However, you cannot assign an action or an existing validation rule or create a new one in the request. If the template has a validation rule, a new validation rule is always created for the promotion tier. When the promotion tier has been created, then you can:\n- [Update the validation rule](/api-reference/validation-rules/update-validation-rule),\n- [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment),\n- [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment).\n 👍 Promotion Tiers and Campaign Templates\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the DISCOUNT_COUPON type. You can use this template to create:\n- [Discount campaign](/api-reference/templates/create-campaign-from-template)\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template)\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign.\nTo add a promotion tier to a campaign, you need to provide the name in the request and the campaign ID. Other fields are optional. If no other fields are sent, the configuration from the template will be used.\nYou can send new values of the fields listed below to replace the settings saved in the template. However, you cannot assign an action or an existing validation rule or create a new one in the request. If the template has a validation rule, a new validation rule is always created for the promotion tier. When the promotion tier has been created, then you can:\n- [Update the validation rule](/api-reference/validation-rules/update-validation-rule),\n- [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment),\n- [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment).\n\nPromotion Tiers and Campaign Templates\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the DISCOUNT_COUPON type. You can use this template to create:\n- [Discount campaign](/api-reference/templates/create-campaign-from-template)\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template)\n\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -87432,7 +87484,7 @@
"Management"
],
"summary": "Delete Project",
- "description": "Deletes an existing project.\nThe users currently using the deleted project will be automatically logged out.\n 🚧 Sandbox Project\nThe sandbox project cannot be deleted.",
+ "description": "Deletes an existing project.\nThe users currently using the deleted project will be automatically logged out.\n\nSandbox Project\nThe sandbox project cannot be deleted.\n",
"parameters": [],
"security": [
{
@@ -87465,7 +87517,7 @@
"Management"
],
"summary": "Assign User",
- "description": "Assigns a user to a given project. The user must be an existing user in Voucherify.\n 🚧 Correct Use of Data\nTo avoid errors, use the role key with either id or login keys.",
+ "description": "Assigns a user to a given project. The user must be an existing user in Voucherify.\n\nCorrect Use of Data\nTo avoid errors, use the role key with either id or login keys.\n",
"parameters": [],
"security": [
{
@@ -87774,7 +87826,7 @@
"Management"
],
"summary": "List Campaign Templates",
- "description": "Lists all campaign templates available in the project.\n 👍 List Campaign Templates\n This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates).\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Lists all campaign templates available in the project.\n\nList Campaign Templates\nThis endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates).\n\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -87889,7 +87941,7 @@
"Management"
],
"summary": "Copy Campaign Template to a Project",
- "description": "Copies a campaign template to another project.\nThe resources, like validation rules or products, will not be copied to the destination project yet. When the template is used to create a new campaign or add a new promotion tier, the resources will be created in the destination project.\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Copies a campaign template to another project.\nThe resources, like validation rules or products, will not be copied to the destination project yet. When the template is used to create a new campaign or add a new promotion tier, the resources will be created in the destination project.\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -87952,7 +88004,7 @@
"Management"
],
"summary": "Create Stacking Rules",
- "description": "Overwrites the default stacking rules.\nIf new stacking rules have been created for the project earlier (e.g. in the user interface), it returns an error. Use [Update stacking rules](/api-reference/management/update-stacking-rules) endpoint to change the rules.\n 📘 Stacking rules documentation\n Read [the Stacking rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Overwrites the default stacking rules.\nIf new stacking rules have been created for the project earlier (e.g. in the user interface), it returns an error. Use [Update stacking rules](/api-reference/management/update-stacking-rules) endpoint to change the rules.\n\nStacking rules documentation\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n",
"parameters": [],
"security": [
{
@@ -88030,7 +88082,7 @@
"Management"
],
"summary": "List Stacking Rules",
- "description": "Lists all stacking rules.\nReturns always a list with one item.\nThis endpoint can be used to retrieve the default stacking rules. The default stacking rules do not have an ID that could be used with the [Get Stacking Rules](/api-reference/management/get-stacking-rules) or [Update Stacking Rules](/api-reference/management/update-stacking-rules) endpoints.\n 📘 Stacking Rules Documentation\n Read [the Stacking Rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Lists all stacking rules.\nReturns always a list with one item.\nThis endpoint can be used to retrieve the default stacking rules. The default stacking rules do not have an ID that could be used with the [Get Stacking Rules](/api-reference/management/get-stacking-rules) or [Update Stacking Rules](/api-reference/management/update-stacking-rules) endpoints.\n\nStacking Rules Documentation\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n",
"parameters": [],
"security": [
{
@@ -88127,7 +88179,7 @@
"Management"
],
"summary": "Get Stacking Rules",
- "description": "Retrieves the stacking rules for the project.\n 📘 Stacking Rules Documentation\n Read [the Stacking Rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Retrieves the stacking rules for the project.\n\nStacking Rules Documentation\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n",
"parameters": [],
"security": [
{
@@ -88195,7 +88247,7 @@
"Management"
],
"summary": "Update Stacking Rules",
- "description": "Updates the stacking rules.\nOnly the provided fields will be updated. However, if you update an array, the content of the array is overwritten. This means that if you want to add new values to an array and retain existing ones, you need to provide both the existing and new values in the request.\n 📘 Stacking Rules Documentation\n Read [the Stacking Rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Updates the stacking rules.\nOnly the provided fields will be updated. However, if you update an array, the content of the array is overwritten. This means that if you want to add new values to an array and retain existing ones, you need to provide both the existing and new values in the request.\n\nStacking Rules Documentation\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n",
"parameters": [],
"security": [
{
@@ -88274,7 +88326,7 @@
"Management"
],
"summary": "Delete Stacking Rules",
- "description": "Deletes permanently the current settings for the stacking rules.\nThe stacking rules are restored to default values.\n 📘 Stacking Rules Documentation\n Read [the Stacking Rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Deletes permanently the current settings for the stacking rules.\nThe stacking rules are restored to default values.\n\nStacking Rules Documentation\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n",
"parameters": [],
"security": [
{
@@ -88307,7 +88359,7 @@
"Management"
],
"summary": "Create Metadata Schema",
- "description": "Creates a new metadata (custom attribute) schema for a given resource.\nThe schema consists of a set of key-value pairs to customize Voucherify resources. \nYou can nest your object within a standard metadata schema, e.g. within a campaign or customer schema. However, your nested object cant include another nested object. The standard metadata schemas are:\n- Campaign\n- Voucher\n- Publication\n- Redemption\n- Product\n- Customer\n- Order\n- Order line item\n- Loyalty Tier\n- Promotion Tier\n- Earning rule\n- Reward\nUse this endpoint to define a metadata schema of a given resource for the first time. Once you configure a metadata schema for a given related_object, use the PUT [Update metadata schema](/api-reference/management/update-metadata-schema) endpoint to either update or add new metadata key-value pairs. For example, use this endpoint to define a metadata schema for related_object: campaign for the first time. If you want define a new metadata property for campaign, use the [PUT Update metadata schema](/api-reference/management/update-metadata-schema) endpoint.\n 📘 Metadata Documentation\n Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Creates a new metadata (custom attribute) schema for a given resource.\nThe schema consists of a set of key-value pairs to customize Voucherify resources. \nYou can nest your object within a standard metadata schema, e.g. within a campaign or customer schema. However, your nested object cant include another nested object. The standard metadata schemas are:\n- Campaign\n- Voucher\n- Publication\n- Redemption\n- Product\n- Customer\n- Order\n- Order line item\n- Loyalty Tier\n- Promotion Tier\n- Earning rule\n- Reward\nUse this endpoint to define a metadata schema of a given resource for the first time. Once you configure a metadata schema for a given related_object, use the PUT [Update metadata schema](/api-reference/management/update-metadata-schema) endpoint to either update or add new metadata key-value pairs. For example, use this endpoint to define a metadata schema for related_object: campaign for the first time. If you want define a new metadata property for campaign, use the [PUT Update metadata schema](/api-reference/management/update-metadata-schema) endpoint.\n\nMetadata Documentation\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -88371,7 +88423,7 @@
"Management"
],
"summary": "List Metadata Schemas",
- "description": "Lists all metadata schemas available in the project.\n 📘 Metadata Documentation\n Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Lists all metadata schemas available in the project.\n\nMetadata Documentation\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -88683,7 +88735,7 @@
"Management"
],
"summary": "Get Metadata Schema",
- "description": "Retrieves a metadata schema.\n 📘 Metadata Documentation\n Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Retrieves a metadata schema.\n\nMetadata Documentation\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -88770,7 +88822,7 @@
"Management"
],
"summary": "Update Metadata Schema",
- "description": "Updates a metadata schema.\nWith this request, you can:\n- Add a nonexistent attribute definition to the metadata schema.\n- Update an existing attribute definition by overwriting its current values.\nIn the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged.\nHowever, if you want to update a definition, you will have to add all its current key-value pairs as well. Only the pairs sent in the request are saved for this definition. This means that the key-value pairs that are not sent in a request are restored to default values. For example, if your definition has an array with values and it is not sent in an update request, the array values will be deleted.\n 👍 Additional Notes\n- You cannot change the type of an existing schema, e.g. from string to number.\n- You can remove a definition with this endpoint by providing deleted: true in the request. It will be moved to the Removed definitions section in the user interface. However, you cannot permanently remove a definition with this endpoint.\n 📘 Metadata Documentation\n Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Updates a metadata schema.\nWith this request, you can:\n- Add a nonexistent attribute definition to the metadata schema.\n- Update an existing attribute definition by overwriting its current values.\nIn the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged.\nHowever, if you want to update a definition, you will have to add all its current key-value pairs as well. Only the pairs sent in the request are saved for this definition. This means that the key-value pairs that are not sent in a request are restored to default values. For example, if your definition has an array with values and it is not sent in an update request, the array values will be deleted.\n\nAdditional Notes\n- You cannot change the type of an existing schema, e.g. from string to number.\n- You can remove a definition with this endpoint by providing deleted: true in the request. It will be moved to the Removed definitions section in the user interface. However, you cannot permanently remove a definition with this endpoint.\n\n\nMetadata Documentation\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -88834,7 +88886,7 @@
"Management"
],
"summary": "Delete Metadata Schema",
- "description": "Deletes permanently the metadata schema.\nIn standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are:\n- Campaign\n- Voucher\n- Publication\n- Redemption\n- Product\n- Customer\n- Order\n- Order line item\n- Loyalty Tier\n- Promotion Tier\n- Earning rule\n- Reward\nIf you want to delete only one definition, use the [Update Metadata Schema](/api-reference/management/update-metadata-schema) endpoint. In the request, provide the deleted: true pair in the definition object. This definition will be moved to Removed definitions.\nIf you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint.\n 🚧 Metadata Purging\nThis endpoint deletes permanently the metadata schemas only. However, it does not purge the metadata from associated entities, so the metadata added to those entities will remain.\nIf you want to purge metadata from the entities:\n1. Remove all the definitions you want to purge. You can do this either in Voucherify Project Settings > Metadata Schema tab or with the [Update Metadata Schema](/api-reference/management/update-metadata-schema) endpoint.\n2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema.\n3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities.\nNote:\n- This is an asynchronous action. You will be notified when it has been completed.\n- You cannot purge metadata for the Redemption and Publication schemas.\n4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify.\n 📘 Metadata Documentation\n Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Deletes permanently the metadata schema.\nIn standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are:\n- Campaign\n- Voucher\n- Publication\n- Redemption\n- Product\n- Customer\n- Order\n- Order line item\n- Loyalty Tier\n- Promotion Tier\n- Earning rule\n- Reward\nIf you want to delete only one definition, use the [Update Metadata Schema](/api-reference/management/update-metadata-schema) endpoint. In the request, provide the deleted: true pair in the definition object. This definition will be moved to Removed definitions.\nIf you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint.\n\nMetadata Purging\nThis endpoint deletes permanently the metadata schemas only. However, it does not purge the metadata from associated entities, so the metadata added to those entities will remain.\nIf you want to purge metadata from the entities:\n1. Remove all the definitions you want to purge. You can do this either in Voucherify Project Settings > Metadata Schema tab or with the [Update Metadata Schema](/api-reference/management/update-metadata-schema) endpoint.\n2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema.\n3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities.\nNote:\n- This is an asynchronous action. You will be notified when it has been completed.\n- You cannot purge metadata for the Redemption and Publication schemas.\n4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify.\n\n\nMetadata Documentation\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -88867,7 +88919,7 @@
"Management"
],
"summary": "Create Custom Event Schema",
- "description": "Creates a custom event schema.\nThe properties object is required, but it can be empty, however. This object is for optional custom properties (metadata).\n 📘 Custom Event Documentation\n Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Creates a custom event schema.\nThe properties object is required, but it can be empty, however. This object is for optional custom properties (metadata).\n\nCustom Event Documentation\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n",
"parameters": [],
"security": [
{
@@ -88923,7 +88975,7 @@
"Management"
],
"summary": "List Custom Event Schemas",
- "description": "Lists all custom event schemas available in the project.\n 📘 Custom Event Documentation\n Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Lists all custom event schemas available in the project.\n\nCustom Event Documentation\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n",
"parameters": [],
"security": [
{
@@ -89011,7 +89063,7 @@
"Management"
],
"summary": "Get Custom Event Schema",
- "description": "Retrieves a custom event schema.\n 📘 Custom Event Documentation\n Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Retrieves a custom event schema.\n\nCustom Event Documentation\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n",
"parameters": [],
"security": [
{
@@ -89054,7 +89106,7 @@
"Management"
],
"summary": "Update Custom Event Schema",
- "description": "Updates a custom event schema.\nWith this request, you can:\n- Add a nonexistent property to a custom event schema.\n- Update an existing property.\nIn the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged.\n 👍 Additional Notes\n- You can change the type of an existing property, e.g. from string to number.\n- You can remove a custom property with this endpoint by providing deleted: true in the request. However, you cannot permanently remove an event definition or its property with this endpoint.\n 📘 Custom Event Documentation\n Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Updates a custom event schema.\nWith this request, you can:\n- Add a nonexistent property to a custom event schema.\n- Update an existing property.\nIn the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged.\n\nAdditional Notes\n- You can change the type of an existing property, e.g. from string to number.\n- You can remove a custom property with this endpoint by providing deleted: true in the request. However, you cannot permanently remove an event definition or its property with this endpoint.\n\n\nCustom Event Documentation\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n",
"parameters": [],
"security": [
{
@@ -89119,7 +89171,7 @@
"Management"
],
"summary": "Delete Custom Event Schema",
- "description": "Deletes permanently the custom event schema with its custom properties (metadata).\n 📘 Custom Event Documentation\n Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Deletes permanently the custom event schema with its custom properties (metadata).\n\nCustom Event Documentation\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n",
"parameters": [],
"security": [
{
@@ -89152,7 +89204,7 @@
"Management"
],
"summary": "Create Webhook",
- "description": "Creates a new webhook configuration.\n 📘 Webhook Documentation\n Read [Webhooks v2024-01-01](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Creates a new webhook configuration.\n\nWebhook Documentation\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -89204,7 +89256,7 @@
"Management"
],
"summary": "List Webhooks",
- "description": "Lists all webhook configurations for the project.\n 📘 Webhook Documentation\n Read [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Lists all webhook configurations for the project.\n\nWebhook Documentation\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -89320,7 +89372,7 @@
"Management"
],
"summary": "Get Webhook",
- "description": "Retrieves a webhook configuration.\n 📘 Webhook Documentation\n Read [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Retrieves a webhook configuration.\n\nWebhook Documentation\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -89361,7 +89413,7 @@
"Management"
],
"summary": "Update Webhook",
- "description": "Updates a webhook configuration.\nThe events listed in the request are overwritten. If you want to add more events, provide also the events that are already in the webhook configuration.\n 📘 Webhook Documentation\n Read [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Updates a webhook configuration.\nThe events listed in the request are overwritten. If you want to add more events, provide also the events that are already in the webhook configuration.\n\nWebhook Documentation\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -89413,7 +89465,7 @@
"Management"
],
"summary": "Delete Webhook",
- "description": "Deletes a webhook configuration.\n 📘 Webhook Documentation\n Read [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Deletes a webhook configuration.\n\nWebhook Documentation\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -89446,7 +89498,7 @@
"Management"
],
"summary": "Create Brand",
- "description": "Creates a new brand configuration.\nYou can have only one brand configured for a project.\n 📘 White Labelling\n The white labelling settings which can be found in Project Settings > Brand Details and which are available only for Enterprise clients as a separate service can be configured only in the user interface.",
+ "description": "Creates a new brand configuration.\nYou can have only one brand configured for a project.\n\nWhite Labelling\nThe white labelling settings which can be found in Project Settings > Brand Details and which are available only for Enterprise clients as a separate service can be configured only in the user interface.\n",
"parameters": [],
"security": [
{
@@ -89666,7 +89718,7 @@
"Management"
],
"summary": "Update Brand",
- "description": "Updates a brand configuration.\nOnly the fields sent in the request will be updated. The fields omitted in the request will remain unchanged.\n 📘 White Labelling\n The white labelling settings which can be found in Project Settings > Brand Details and which are available only for Enterprise clients as a separate service can be configured only in the user interface.",
+ "description": "Updates a brand configuration.\nOnly the fields sent in the request will be updated. The fields omitted in the request will remain unchanged.\n\nWhite Labelling\nThe white labelling settings which can be found in Project Settings > Brand Details and which are available only for Enterprise clients as a separate service can be configured only in the user interface.\n",
"parameters": [],
"security": [
{
@@ -89752,7 +89804,7 @@
"OAuth"
],
"summary": "Generate OAuth 2.0 Token",
- "description": "Generate an OAuth 2.0 token for an API client. The token can be used to authorize access to the Voucherify API. The token inherits the permissions and IP whitelists of the API key that is used to generate the OAuth token. You can define the scope that limits its usage. You can generate up to 1000 OAuth tokens per project. The token expires in 900 seconds (15 minutes).\nIf the API key that is used to generate the OAuth token is deleted or blocked, you cannot generate new OAuth tokens and the existing ones will stop working within one minute.\nIf the API key used to generate an OAuth token is regenerated, the OAuth token can still be used.\n🚧 Format of scope values\nSeparate the values of the scope property with spaces.",
+ "description": "Generate an OAuth 2.0 token for an API client. The token can be used to authorize access to the Voucherify API. The token inherits the permissions and IP whitelists of the API key that is used to generate the OAuth token. You can define the scope that limits its usage. You can generate up to 1000 OAuth tokens per project. The token expires in 900 seconds (15 minutes).\nIf the API key that is used to generate the OAuth token is deleted or blocked, you cannot generate new OAuth tokens and the existing ones will stop working within one minute.\nIf the API key used to generate an OAuth token is regenerated, the OAuth token can still be used.\n\nFormat of scope values\nSeparate the values of the scope property with spaces.\n",
"parameters": [],
"security": [
{
@@ -89919,7 +89971,7 @@
"Client-side"
],
"summary": "Check Eligibility (client-side)",
- "description": "Generate a list of redeemables that are applicable in the context of the customer and order.\nThe new qualifications method is an improved version of [Campaign Qualifications](/api-reference/campaigns/examine-campaign-qualification), [Voucher Qualifications](/api-reference/vouchers/examine-voucher-qualification) API requests. The new qualification method introduces the following improvements:\n- Qualification results are returned faster\n- No limit on the number of returned redeemables\n- Introduces new qualification scenarios, not available in the previous version\n 👍 Scenario Guide\n Read our dedicated guide to learn about some use cases this endpoint can cover [here](/guides/checking-eligibility).\n# Paging \nThe Voucherify Qualifications API request will return to you all of the redeemables available for the customer in batches of up to 50 redeemables per page. To get the next batch of redeemables, you need to use the starting_after cursor.\nTo process of paging the redeemables works in the following manner:\n- You send the first API request for Qualifications without the starting_after parameter.\n- The response will contain a parameter named has_more. If the parameters value is set to true, then more redeemables are available.\n- Get the value of the created_at parameter of the last returned redeemable. The value of this parameter will be used as a cursor to retrieve the next page of redeemables.\n- Send another API request for Qualification with the starting_after parameter set to the value taken from the created_at parameter from the last returned redeemable.\n- Voucherify will return the next page of redeemables.\n- If the has_more parameter is set to true, apply steps 3-5 to get the next page of redeemables.\n# Caching\nQualification has a 5-minute cache for the returned results. If you change your campaign settings or validation rules, the changes will apply to qualification results after the cache refreshes.",
+ "description": "Generate a list of redeemables that are applicable in the context of the customer and order.\nThe new qualifications method is an improved version of [Campaign Qualifications](/api-reference/campaigns/examine-campaign-qualification), [Voucher Qualifications](/api-reference/vouchers/examine-voucher-qualification) API requests. The new qualification method introduces the following improvements:\n- Qualification results are returned faster\n- No limit on the number of returned redeemables\n- Introduces new qualification scenarios, not available in the previous version\n\nScenario Guide\nRead our dedicated guide to learn about some use cases this endpoint can cover [here](/guides/checking-eligibility).\n\n# Paging \nThe Voucherify Qualifications API request will return to you all of the redeemables available for the customer in batches of up to 50 redeemables per page. To get the next batch of redeemables, you need to use the starting_after cursor.\nTo process of paging the redeemables works in the following manner:\n- You send the first API request for Qualifications without the starting_after parameter.\n- The response will contain a parameter named has_more. If the parameters value is set to true, then more redeemables are available.\n- Get the value of the created_at parameter of the last returned redeemable. The value of this parameter will be used as a cursor to retrieve the next page of redeemables.\n- Send another API request for Qualification with the starting_after parameter set to the value taken from the created_at parameter from the last returned redeemable.\n- Voucherify will return the next page of redeemables.\n- If the has_more parameter is set to true, apply steps 3-5 to get the next page of redeemables.\n# Caching\nQualification has a 5-minute cache for the returned results. If you change your campaign settings or validation rules, the changes will apply to qualification results after the cache refreshes.",
"parameters": [],
"security": [
{
@@ -90207,7 +90259,7 @@
"Client-side"
],
"summary": "Redeem Stackable Discounts (client-side)",
- "description": "This method is accessible through public keys which you can use in client side requests coming from mobile and web browser applications.\n# How API returns calculated discounts and order amounts in the response\nIn the table below, you can see the logic the API follows to calculate discounts and amounts:\n\n\n 📘 Rollbacks\n You cant roll back a child redemption. When you call rollback on a stacked redemption, all child redemptions will be rolled back. You need to refer to a parent redemption ID in your [rollback request](/api-reference/redemptions/rollback-stackable-redemptions).",
+ "description": "This method is accessible through public keys which you can use in client side requests coming from mobile and web browser applications.\n# How API returns calculated discounts and order amounts in the response\nIn the table below, you can see the logic the API follows to calculate discounts and amounts:\n\n\n\nRollbacks\nYou cant roll back a child redemption. When you call rollback on a stacked redemption, all child redemptions will be rolled back. You need to refer to a parent redemption ID in your [rollback request](/api-reference/redemptions/rollback-stackable-redemptions).\n",
"parameters": [
{
"$ref": "#/components/parameters/origin"
diff --git a/reference/readonly-sdks/php/OpenAPI.json b/reference/readonly-sdks/php/OpenAPI.json
index 84d2b5c50..29a63c108 100644
--- a/reference/readonly-sdks/php/OpenAPI.json
+++ b/reference/readonly-sdks/php/OpenAPI.json
@@ -46915,7 +46915,7 @@
"Publications"
],
"summary": "Create Publication with GET",
- "description": "This method selects vouchers that are suitable for publication, adds a publish entry and returns the publication.\nA voucher is suitable for publication when its active and hasnt been published yet.\n ❗️ Limited access\n Access to this endpoint is limited. This endpoint is designed for specific integrations and the API keys need to be configured to access this endpoint. Navigate to the **Dashboard** → **Project Settings** → **General** → **Integration Keys** to set up a pair of API keys and use them to send the request. \n 🚧 Clearly define the source of the voucher\n You must clearly define which source you want to publish the voucher code from. It can either be a code from a campaign or a specific voucher identified by a code. \n 🚧 Publish multiple vouchers\n This endpoint does not support the publishing of multiple vouchers from a single campaign. In case you want to publish multiple vouchers within a single publication, you need to use a [dedicated endpoint](/api-reference/publications/create-publication). \n 📘 Auto-update campaign\n In case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use an **auto-update** campaign. \n# Example Request \n \n ❗️ Required \n Query param voucher OR campaign MUST be filled out. If you provide both, campaign param will be skipped.",
+ "description": "This method selects vouchers that are suitable for publication, adds a publish entry and returns the publication.\nA voucher is suitable for publication when its active and hasnt been published yet.\n\nLimited access\nAccess to this endpoint is limited. This endpoint is designed for specific integrations and the API keys need to be configured to access this endpoint. Navigate to the **Dashboard** → **Project Settings** → **General** → **Integration Keys** to set up a pair of API keys and use them to send the request.\n\n\nClearly define the source of the voucher\nYou must clearly define which source you want to publish the voucher code from. It can either be a code from a campaign or a specific voucher identified by a code.\n\n\nPublish multiple vouchers\nThis endpoint does not support the publishing of multiple vouchers from a single campaign. In case you want to publish multiple vouchers within a single publication, you need to use a [dedicated endpoint](/api-reference/publications/create-publication).\n\n\nAuto-update campaign\nIn case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use an **auto-update** campaign.\n\n# Example Request \n \n\nRequired\nQuery param voucher OR campaign MUST be filled out. If you provide both, campaign param will be skipped.\n",
"parameters": [
{
"schema": {
@@ -47080,7 +47080,7 @@
"Qualifications"
],
"summary": "Check Eligibility",
- "description": "\n 🚧 The Qualifications endpoint ignores the rules checking:\n \n - Limit of total redeemed discount amount per campaign\n - Limit of total redemptions count per campaign\n - Redemptions per customer\n - Redemptions per customer in a campaign\n- Total amount before discount \nGenerate a list of redeemables that are applicable in the context of the customer and order.\nThe new qualifications method is an improved version of [Campaign Qualifications](/api-reference/campaigns/examine-campaign-qualification), [Voucher Qualifications](/api-reference/vouchers/examine-voucher-qualification) API requests. The new qualification method introduces the following improvements:\n- Qualification results are returned faster\n- No limit on the number of returned redeemables\n- Introduces new qualification scenarios, not available in the previous version\n 👍 Scenario Guide\n Read [the dedicated guide](/guides/checking-eligibility) to learn about some use cases this endpoint can cover.\n# Paging \nThe Voucherify Qualifications API request will return to you all of the redeemables available for the customer in batches of up to 50 redeemables per page. To get the next batch of redeemables, you need to use the starting_after cursor.\nTo process of paging the redeemables works in the following manner:\n- You send the first API request for Qualifications without the starting_after parameter.\n- The response will contain a parameter named has_more. If the parameters value is set to true, then more redeemables are available.\n- Get the value of the created_at parameter of the last returned redeemable. The value of this parameter will be used as a cursor to retrieve the next page of redeemables.\n- Send another API request for Qualification with the starting_after parameter set to the value taken from the created_at parameter from the last returned redeemable.\n- Voucherify will return the next page of redeemables.\n- If the has_more parameter is set to true, apply steps 3-5 to get the next page of redeemables.\n# Caching\nQualification has a 5-minute cache for the returned results. If you change your campaign settings or validation rules, the changes will apply to qualification results after the cache refreshes.",
+ "description": "\n\nThe Qualifications endpoint ignores the rules checking:\n- Limit of total redeemed discount amount per campaign\n- Limit of total redemptions count per campaign\n- Redemptions per customer\n- Redemptions per customer in a campaign\n- Total amount before discount\n\nGenerate a list of redeemables that are applicable in the context of the customer and order.\nThe new qualifications method is an improved version of [Campaign Qualifications](/api-reference/campaigns/examine-campaign-qualification), [Voucher Qualifications](/api-reference/vouchers/examine-voucher-qualification) API requests. The new qualification method introduces the following improvements:\n- Qualification results are returned faster\n- No limit on the number of returned redeemables\n- Introduces new qualification scenarios, not available in the previous version\n\nScenario Guide\nRead [the dedicated guide](/guides/checking-eligibility) to learn about some use cases this endpoint can cover.\n\n# Paging \nThe Voucherify Qualifications API request will return to you all of the redeemables available for the customer in batches of up to 50 redeemables per page. To get the next batch of redeemables, you need to use the starting_after cursor.\nTo process of paging the redeemables works in the following manner:\n- You send the first API request for Qualifications without the starting_after parameter.\n- The response will contain a parameter named has_more. If the parameters value is set to true, then more redeemables are available.\n- Get the value of the created_at parameter of the last returned redeemable. The value of this parameter will be used as a cursor to retrieve the next page of redeemables.\n- Send another API request for Qualification with the starting_after parameter set to the value taken from the created_at parameter from the last returned redeemable.\n- Voucherify will return the next page of redeemables.\n- If the has_more parameter is set to true, apply steps 3-5 to get the next page of redeemables.\n# Caching\nQualification has a 5-minute cache for the returned results. If you change your campaign settings or validation rules, the changes will apply to qualification results after the cache refreshes.",
"parameters": [],
"security": [
{
@@ -48623,7 +48623,7 @@
"Redemptions"
],
"summary": "Redeem Stackable Discounts",
- "description": "In the table below, you can see the logic the API follows to calculate discounts and amounts:\n\n\nAPI keys with a Merchant role cant use this endpoint.\n 📘 Rollbacks\n You cant roll back a child redemption. When you call rollback on a stacked redemption, all child redemptions will be rolled back. You need to refer to a parent redemption ID in your [rollback request](/api-reference/redemptions/rollback-stackable-redemptions). \n 📘 Also available on client-side\n This method is also accessible through public keys which you can use in client-side apps: mobile and web browser apps. Go to the dedicated [endpoint](/api-reference/client-side/redeem-stackable-discounts-client-side) to learn more.",
+ "description": "In the table below, you can see the logic the API follows to calculate discounts and amounts:\n\n\nAPI keys with a Merchant role cant use this endpoint.\n\nRollbacks\nYou cant roll back a child redemption. When you call rollback on a stacked redemption, all child redemptions will be rolled back. You need to refer to a parent redemption ID in your [rollback request](/api-reference/redemptions/rollback-stackable-redemptions).\n\n\nAlso available on client-side\nThis method is also accessible through public keys which you can use in client-side apps: mobile and web browser apps. Go to the dedicated [endpoint](/api-reference/client-side/redeem-stackable-discounts-client-side) to learn more.\n",
"parameters": [],
"security": [
{
@@ -48946,7 +48946,7 @@
"Vouchers"
],
"summary": "Generate Random Code",
- "description": "Create a generic (standalone) vouchers. You can choose to create a GIFT_VOUCHER, a DISCOUNT_VOUCHER, or a LOYALTY_CARD. \nWhen you create a new voucher, you can specify a type to create it.\nCreating a new voucher will create a new generic (standalone) vouchers if no campaign name or campaign_id is provided. However, if an ID or name of a campaign with the type set to STANDALONE is provided, the voucher will be added to such campaign. In case of the loyalty card, a campaign name is required.\nYou can optionally use the code parameter to define a specific code or the code_config parameter to design rules for Voucherify API to create a random code. If neither of the two parameters are passed, then a random code is generated by the Voucherify API.\nThis method will return an error when trying to create a voucher that already exists.\n🚧 Standalone Vouchers and Campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. The vouchers created with POST Create voucher and POST Generate random code endpoints do not have a campaign attached, so the values for campaign and campaign_id are null.\nTo create a generic (standalone) voucher with a type: STANDALONE, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.",
+ "description": "Create a generic (standalone) vouchers. You can choose to create a GIFT_VOUCHER, a DISCOUNT_VOUCHER, or a LOYALTY_CARD. \nWhen you create a new voucher, you can specify a type to create it.\nCreating a new voucher will create a new generic (standalone) vouchers if no campaign name or campaign_id is provided. However, if an ID or name of a campaign with the type set to STANDALONE is provided, the voucher will be added to such campaign. In case of the loyalty card, a campaign name is required.\nYou can optionally use the code parameter to define a specific code or the code_config parameter to design rules for Voucherify API to create a random code. If neither of the two parameters are passed, then a random code is generated by the Voucherify API.\nThis method will return an error when trying to create a voucher that already exists.\n\nStandalone Vouchers and Campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. The vouchers created with POST Create voucher and POST Generate random code endpoints do not have a campaign attached, so the values for campaign and campaign_id are null.\nTo create a generic (standalone) voucher with a type: STANDALONE, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.\n",
"parameters": [],
"security": [
{
@@ -50568,7 +50568,7 @@
"Vouchers"
],
"summary": "Create Voucher",
- "description": "Create a generic (standalone) voucher or a voucher in a campaign. You can choose to create a GIFT_VOUCHER, a DISCOUNT_VOUCHER, or a LOYALTY_CARD. The code path parameter can use all letters of the English alphabet, Arabic numerals and special characters.\nWhen you create a new voucher, you can specify a type to create it.\nIf no campaign name or campaign_id is provided, the new voucher will be a generic (standalone) one. However, if an ID or name of a campaign with the type set to STANDALONE is provided, the voucher will be added to this campaign. For a loyalty card, a campaign name or ID is required.\n🚧 Standalone Vouchers and Campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers created through The vouchers created with POST Create voucher and POST Generate random code endpoints do not have a campaign attached, so the values for campaign and campaign_id are null.\nTo create a generic (standalone) voucher with a type: STANDALONE, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.",
+ "description": "Create a generic (standalone) voucher or a voucher in a campaign. You can choose to create a GIFT_VOUCHER, a DISCOUNT_VOUCHER, or a LOYALTY_CARD. The code path parameter can use all letters of the English alphabet, Arabic numerals and special characters.\nWhen you create a new voucher, you can specify a type to create it.\nIf no campaign name or campaign_id is provided, the new voucher will be a generic (standalone) one. However, if an ID or name of a campaign with the type set to STANDALONE is provided, the voucher will be added to this campaign. For a loyalty card, a campaign name or ID is required.\n\nStandalone Vouchers and Campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers created through The vouchers created with POST Create voucher and POST Generate random code endpoints do not have a campaign attached, so the values for campaign and campaign_id are null.\nTo create a generic (standalone) voucher with a type: STANDALONE, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.\n",
"parameters": [],
"security": [
{
@@ -51075,7 +51075,7 @@
"Vouchers"
],
"summary": "Enable Voucher",
- "description": "There are various times when youll want to manage a vouchers accessibility. This can be done by two API methods for managing the voucher state - *enable* and *disable*. \n___\nThe method sets the voucher state to **active**. The voucher can be redeemed - only if the redemption occurs after the start date and the voucher is not expired.",
+ "description": "The method sets the voucher state to **active**. The voucher can be redeemed - only if the redemption occurs after the start date and the voucher is not expired.",
"parameters": [],
"security": [
{
@@ -51182,7 +51182,7 @@
"Vouchers"
],
"summary": "Disable Voucher",
- "description": "There are various times when youll want to manage a vouchers accessibility. This can be done by two API methods for managing the voucher state - *enable* and *disable*. \n___\nThis method sets the voucher state to **inactive**. The voucher cannot be redeemed.",
+ "description": "This method sets the voucher state to **inactive**. The voucher cannot be redeemed.",
"parameters": [],
"security": [
{
@@ -51775,7 +51775,7 @@
"Vouchers"
],
"summary": "Import Vouchers",
- "description": "Import generic (standalone) vouchers and gift cards into the repository.\nYou can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. \n Also, the request can include up to **10 MB** of data.\n 📘 Important notes\n - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z.\n - Custom code attributes (not supported by-default) need to be added as code **metadata**.\n - You **cannot import the same codes** to a single Voucherify Project.\nAny parameters not provided in the payload will be left blank or null.\nFor both **standalone discount vouchers and gift cards**, you can import the following fields: \n- code\n- category\n- active\n- type\n- start_date\n- expiration_date\n- redemption.quantity\n- additional_info\n- metadata\nFor **gift cards**, you can also import the following field:\n- gift.amount\nFor **discount vouchers**, you can import the discount object. The object will slightly vary depending on the type of discount. Each discount type **requires** the type to be defined in the import.\n\n\nFields other than the ones listed above wont be imported. Even if provided, they will be silently skipped.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).\n🚧 Standalone Vouchers and Campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers imported through the dashboard in the Vouchers section or through the API do not have a campaign attached, so the values for campaign and campaign_id are null.\nTo create a generic (standalone) voucher with a type: STANDALONE, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.",
+ "description": "Import generic (standalone) vouchers and gift cards into the repository.\nYou can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. \n Also, the request can include up to **10 MB** of data.\n\nImportant notes\n- **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z.\n- Custom code attributes (not supported by-default) need to be added as code **metadata**.\n- You **cannot import the same codes** to a single Voucherify Project.\n\nAny parameters not provided in the payload will be left blank or null.\nFor both **standalone discount vouchers and gift cards**, you can import the following fields: \n- code\n- category\n- active\n- type\n- start_date\n- expiration_date\n- redemption.quantity\n- additional_info\n- metadata\nFor **gift cards**, you can also import the following field:\n- gift.amount\nFor **discount vouchers**, you can import the discount object. The object will slightly vary depending on the type of discount. Each discount type **requires** the type to be defined in the import.\n\n\nFields other than the ones listed above wont be imported. Even if provided, they will be silently skipped.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).\n\nStandalone Vouchers and Campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers imported through the dashboard in the Vouchers section or through the API do not have a campaign attached, so the values for campaign and campaign_id are null.\nTo create a generic (standalone) voucher with a type: STANDALONE, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.\n",
"parameters": [],
"security": [
{
@@ -52048,7 +52048,7 @@
"Vouchers"
],
"summary": "Import Vouchers using CSV",
- "description": "Import generic (standalone) vouchers into the repository using a CSV file.\nThe CSV file has to include headers in the first line. All properties listed in the file headers that cannot be mapped to standard voucher fields will be added to the metadata object.\nYou can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. \n Also, the request can include a max. **10 MB** CSV file.\nYou can find an example CSV file [here](/build/discount-code-import).\n___\n 📘 Standard voucher fields mapping\n - Go to the [import vouchers](/api-reference/vouchers/import-vouchers) endpoint to see all standard CSV fields description (body params section).\n - Supported CSV file headers: Code,Voucher Type,Value,Discount Type,Category,Start Date,Expiration Date,Redemption Limit,Redeemed Quantity, Redeemed Amount,Active,Additional Info,Custom Metadata Property Name\n- **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. \n - YYYY-MM-DD\n - YYYY-MM-DDTHH\n - YYYY-MM-DDTHH:mm\n - YYYY-MM-DDTHH:mm:ss\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ss.SSSZ\n - Custom code attributes (not supported by-default) need to be added as code **metadata**.\n - You **cannot import the same codes** to a single Voucherify project.\n - You can, however, upload the same codes to update them.\n 📘 Categories\n In the structure representing your data, you can define a category that the voucher belongs to. You can later use the category of a voucher to group and search by specific criteria in the Dashboard and using the [List Vouchers](/api-reference/vouchers/list-vouchers) endpoint.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).\nYou can pass the webhooks_enable true parameter to trigger a webhook sendout for created or updated vouchers. Configure the [respective webhooks](/api-reference/introduction-to-webhooks) in Project settings. For updated webhooks, a webhook is sent even if the voucher hasnt been changed in the CSV file.\n🚧 Generic (standalone) vouchers and campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers imported through the dashboard in the Vouchers section or through the API do not have a campaign attached, so the values for campaign and campaign_id are null.",
+ "description": "Import generic (standalone) vouchers into the repository using a CSV file.\nThe CSV file has to include headers in the first line. All properties listed in the file headers that cannot be mapped to standard voucher fields will be added to the metadata object.\nYou can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. \n Also, the request can include a max. **10 MB** CSV file.\nYou can find an example CSV file [here](/build/discount-code-import).\n___\n\nStandard voucher fields mapping\n- Go to the [import vouchers](/api-reference/vouchers/import-vouchers) endpoint to see all standard CSV fields description (body params section).\n- Supported CSV file headers: Code,Voucher Type,Value,Discount Type,Category,Start Date,Expiration Date,Redemption Limit,Redeemed Quantity, Redeemed Amount,Active,Additional Info,Custom Metadata Property Name\n- **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z.\n - YYYY-MM-DD\n - YYYY-MM-DDTHH\n - YYYY-MM-DDTHH:mm\n - YYYY-MM-DDTHH:mm:ss\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ss.SSSZ\n- Custom code attributes (not supported by-default) need to be added as code **metadata**.\n- You **cannot import the same codes** to a single Voucherify project.\n- You can, however, upload the same codes to update them.\n\n\nCategories\nIn the structure representing your data, you can define a category that the voucher belongs to. You can later use the category of a voucher to group and search by specific criteria in the Dashboard and using the [List Vouchers](/api-reference/vouchers/list-vouchers) endpoint.\n\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).\nYou can pass the webhooks_enable true parameter to trigger a webhook sendout for created or updated vouchers. Configure the [respective webhooks](/api-reference/introduction-to-webhooks) in Project settings. For updated webhooks, a webhook is sent even if the voucher hasnt been changed in the CSV file.\n\nGeneric (standalone) vouchers and campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers imported through the dashboard in the Vouchers section or through the API do not have a campaign attached, so the values for campaign and campaign_id are null.\n",
"parameters": [],
"security": [
{
@@ -52094,7 +52094,7 @@
"Vouchers"
],
"summary": "Update Vouchers in Bulk",
- "description": "Updates specific metadata parameters for each code, respectively, in one asynchronous operation.\nThe request can include up to **10 MB** of data.\nUpserts are not supported.\n 🚧 Currently, only **metadata** updates are supported.\nThe response returns a unique asynchronous action ID. Use this ID in the query paramater of the [GET Async Action](/api-reference/async-actions/get-async-action) endpoint to check, e.g.:\n- The status of your request (in queue, in progress, done, or failed)\n- Resources that failed to be updated\n- The report file with details about the update\nThis API request starts a process that affects Voucherify data in bulk. In the case of small jobs (like bulk update), the request is put into a queue and processed when every other bulk request placed in the queue prior to this request is finished.",
+ "description": "Updates specific metadata parameters for each code, respectively, in one asynchronous operation.\nThe request can include up to **10 MB** of data.\nUpserts are not supported.\n\nCurrently, only **metadata** updates are supported.\n\nThe response returns a unique asynchronous action ID. Use this ID in the query paramater of the [GET Async Action](/api-reference/async-actions/get-async-action) endpoint to check, e.g.:\n- The status of your request (in queue, in progress, done, or failed)\n- Resources that failed to be updated\n- The report file with details about the update\nThis API request starts a process that affects Voucherify data in bulk. In the case of small jobs (like bulk update), the request is put into a queue and processed when every other bulk request placed in the queue prior to this request is finished.",
"parameters": [],
"security": [
{
@@ -52244,7 +52244,7 @@
"Vouchers"
],
"summary": "Release Validation Session",
- "description": "Manually release a validation session that has been set up for the voucher. This method undoes the actions that are explained in the [Locking validation session](/guides/locking-validation-session) guide. \n 📘 Release session in the Dashboard\n You can also use the [Validations Manager](/optimize/validations-and-redemptions#sessions) in the Dashboard to unlock sessions.",
+ "description": "Manually release a validation session that has been set up for the voucher. This method undoes the actions that are explained in the [Locking validation session](/guides/locking-validation-session) guide. \n\nRelease session in the Dashboard\nYou can also use the [Validations Manager](/optimize/validations-and-redemptions#sessions) in the Dashboard to unlock sessions.\n",
"parameters": [],
"security": [
{
@@ -52266,7 +52266,7 @@
"Campaigns"
],
"summary": "Create Campaign",
- "description": "Method to create a batch of vouchers aggregated in one campaign. You can choose a variety of voucher types and define a unique pattern for generating codes. \n 📘 Global uniqueness\n All campaign codes are unique across the whole project. Voucherify will not allow you to generate 2 campaigns with the same coupon code. \n 🚧 Code generation status\n This is an asynchronous action; you cant read or modify a newly created campaign until the code generation is completed. See the creation_status field in the [campaign object](/api-reference/campaigns/campaign-object) description.",
+ "description": "Method to create a batch of vouchers aggregated in one campaign. You can choose a variety of voucher types and define a unique pattern for generating codes. \n\nGlobal uniqueness\nAll campaign codes are unique across the whole project. Voucherify will not allow you to generate 2 campaigns with the same coupon code.\n\n\nCode generation status\nThis is an asynchronous action; you cant read or modify a newly created campaign until the code generation is completed. See the creation_status field in the [campaign object](/api-reference/campaigns/campaign-object) description.\n",
"parameters": [],
"security": [
{
@@ -53461,7 +53461,7 @@
"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. \nFields other than the ones listed in the request body wont be modified. Even if provided, they will be silently skipped. \n 🚧 Vouchers will be affected\n This method will update vouchers aggregated in the campaign. It will affect all vouchers that are not published or redeemed yet.",
+ "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. \nFields other than the ones listed in the request body wont be modified. Even if provided, they will be silently skipped. \n\nVouchers will be affected\nThis method will update vouchers aggregated in the campaign. It will affect all vouchers that are not published or redeemed yet.\n",
"parameters": [],
"security": [
{
@@ -54072,7 +54072,7 @@
"Campaigns"
],
"summary": "Enable Campaign",
- "description": "There are various times when youll want to manage a campaigns accessibility. This can be done by two API methods for managing the campaign state - *enable* and *disable*. \nSets campaign state to **active**. The vouchers in this campaign can be redeemed - only if the redemption occurs after the start date of the campaign and voucher and the voucher and campaign are not expired.",
+ "description": "Sets campaign state to **active**. The vouchers in this campaign can be redeemed - only if the redemption occurs after the start date of the campaign and voucher and the voucher and campaign are not expired.",
"parameters": [],
"security": [
{
@@ -54117,7 +54117,7 @@
"Campaigns"
],
"summary": "Disable Campaign",
- "description": "There are various times when youll want to manage a campaigns accessibility. This can be done by two API methods for managing the campaign state - *enable* and *disable*. \nSets campaign state to **inactive**. The vouchers in this campaign can no longer be redeemed.",
+ "description": "Sets campaign state to **inactive**. The vouchers in this campaign can no longer be redeemed.",
"parameters": [],
"security": [
{
@@ -54162,7 +54162,7 @@
"Campaigns"
],
"summary": "List Campaign Transactions",
- "description": "Retrieves all transactions for the campaign with the given campaign ID or campaign name. The id filter denotes the unique transaction identifier.\n 🚧\n The endpoint works only for gift card and loyalty campaigns.",
+ "description": "Retrieves all transactions for the campaign with the given campaign ID or campaign name. The id filter denotes the unique transaction identifier.\n\nThe endpoint works only for gift card and loyalty campaigns.\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -54316,7 +54316,7 @@
}
],
"summary": "Export Campaign Transactions",
- "description": "Export transactions is an asynchronous process that generates a CSV file with the data about credit movements on all gift cards or point movements on all loyalty cards in a given campaign.\nTo export transactions:\n1. In the export request, use parameters to select which fields will be exported, in what order, and which data will be filtered.\n2. Use the returned id to track the export status with the [GET Export](/api-reference/exports/get-export) method.\n3. In the GET Export method, when the returned status field has the DONE value, the export file has been generated.\n4. Use the URL in the result property to download the file. You must be logged to your Voucherify account on a given cluster in the browser to be able to download the file.\nAn export request will almost always result in a single file being generated by the system. However, when the data volume is large, the system may split the results into multiple files.\nAn example export file can look as follows:\n\n\n 👍 Export Loyalty Campaign Transactions\n For loyalty campaigns, this method works in the same way the [POST Export Loyalty Campaign Transactions](/api-reference/loyalties/export-loyalty-campaign-transactions) does.",
+ "description": "Export transactions is an asynchronous process that generates a CSV file with the data about credit movements on all gift cards or point movements on all loyalty cards in a given campaign.\nTo export transactions:\n1. In the export request, use parameters to select which fields will be exported, in what order, and which data will be filtered.\n2. Use the returned id to track the export status with the [GET Export](/api-reference/exports/get-export) method.\n3. In the GET Export method, when the returned status field has the DONE value, the export file has been generated.\n4. Use the URL in the result property to download the file. You must be logged to your Voucherify account on a given cluster in the browser to be able to download the file.\nAn export request will almost always result in a single file being generated by the system. However, when the data volume is large, the system may split the results into multiple files.\nAn example export file can look as follows:\n\n\n\nExport Loyalty Campaign Transactions\nFor loyalty campaigns, this method works in the same way the [POST Export Loyalty Campaign Transactions](/api-reference/loyalties/export-loyalty-campaign-transactions) does.\n",
"requestBody": {
"description": "Specify the parameters for the transaction export.",
"content": {
@@ -54445,7 +54445,7 @@
"Campaigns"
],
"summary": "Get Campaign Summary",
- "description": "Returns data for campaign analytics, covering validations, redemptions, publications, and other details specific to a given campaign type.\nUse start_date and end_date to narrow down the data to specific periods.\n🚧 Campaigns created before 17 June 2025\nThis endpoint returns analytics data for campaigns that were created after 17 June 2025. Older campaigns return empty data.",
+ "description": "Returns data for campaign analytics, covering validations, redemptions, publications, and other details specific to a given campaign type.\nUse start_date and end_date to narrow down the data to specific periods.\n\nCampaigns created before 17 June 2025\nThis endpoint returns analytics data for campaigns that were created after 17 June 2025. Older campaigns return empty data.\n",
"parameters": [
{
"name": "start_date",
@@ -56746,7 +56746,7 @@
"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.\n# Pagination\n 🚧 Important!\n 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.\n# Filter Query\nThe filters query parameter allows for joining multiple parameters with logical operators. The syntax looks as follows:\n\n## Examples\n\n",
+ "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.\n# Pagination\n\nImportant!\nIf 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.\n\n# Filter Query\nThe filters query parameter allows for joining multiple parameters with logical operators. The syntax looks as follows:\n\n## Examples\n\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -56973,7 +56973,7 @@
"Publications"
],
"summary": "Create Publication",
- "description": "This method selects vouchers that are suitable for publication, adds a publish entry and returns the publication.\nA voucher is suitable for publication when its active and hasnt been published yet. \n 🚧 Clearly define the source of the voucher\n You must clearly define which source you want to publish the voucher code from. It can either be a code from a campaign or a specific voucher identified by a code. \n 🚧 Publish multiple vouchers\n In case you want to publish multiple vouchers within a single publication, you need to specify the campaign name and number of vouchers you want to publish. \n 📘 Auto-update campaign\n In case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use an **auto-update** campaign.",
+ "description": "This method selects vouchers that are suitable for publication, adds a publish entry and returns the publication.\nA voucher is suitable for publication when its active and hasnt been published yet. \n\nClearly define the source of the voucher\nYou must clearly define which source you want to publish the voucher code from. It can either be a code from a campaign or a specific voucher identified by a code.\n\n\nPublish multiple vouchers\nIn case you want to publish multiple vouchers within a single publication, you need to specify the campaign name and number of vouchers you want to publish.\n\n\nAuto-update campaign\nIn case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use an **auto-update** campaign.\n",
"parameters": [
{
"schema": {
@@ -59115,7 +59115,7 @@
"Redemptions"
],
"summary": "Rollback Redemption",
- "description": "Your business logic may include a case when you need to undo a redemption. You can revert a redemption by calling this API endpoint. This endpoint rolls back only single redemptions, meaning those that are not stacked. Stacked redemptions belong to a parent redemption. To roll back a parent redemption, including all of its individual redemptions, use the [POST Rollback Stackable Redemptions](/api-reference/redemptions/rollback-stackable-redemptions) \n🚧 \nYou can roll back a redemption up to 3 months back. \n # Effect \nThe operation \n- creates a rollback entry in vouchers redemption history (redemption.redemption_entries) and \n- gives 1 redemption back to the pool (decreases redeemed_quantity by 1). \n# Returned funds \nIn case of *gift card vouchers*, this method returns funds back according to the source redemption. In case of *loyalty card vouchers*, this method returns points back according to the source redemption.",
+ "description": "Your business logic may include a case when you need to undo a redemption. You can revert a redemption by calling this API endpoint. This endpoint rolls back only single redemptions, meaning those that are not stacked. Stacked redemptions belong to a parent redemption. To roll back a parent redemption, including all of its individual redemptions, use the [POST Rollback Stackable Redemptions](/api-reference/redemptions/rollback-stackable-redemptions) \n\nYou can roll back a redemption up to 3 months back.\n\n # Effect \nThe operation \n- creates a rollback entry in vouchers redemption history (redemption.redemption_entries) and \n- gives 1 redemption back to the pool (decreases redeemed_quantity by 1). \n# Returned funds \nIn case of *gift card vouchers*, this method returns funds back according to the source redemption. In case of *loyalty card vouchers*, this method returns points back according to the source redemption.",
"parameters": [
{
"schema": {
@@ -59802,7 +59802,7 @@
"Redemptions"
],
"summary": "Rollback Stackable Redemptions",
- "description": "Rollback a stackable redemption. When you roll back a stacked redemption, all child redemptions will be rolled back. Provide the parent redemption ID as the path parameter. However, you can use this endpoint to roll back a single redemption that does not have a parent, similarly to [POST Rollback redemption](/api-reference/redemptions/rollback-redemption).\n🚧 \n You can roll back a redemption up to 3 months back.",
+ "description": "Rollback a stackable redemption. When you roll back a stacked redemption, all child redemptions will be rolled back. Provide the parent redemption ID as the path parameter. However, you can use this endpoint to roll back a single redemption that does not have a parent, similarly to [POST Rollback redemption](/api-reference/redemptions/rollback-redemption).\n\nYou can roll back a redemption up to 3 months back.\n",
"parameters": [
{
"schema": {
@@ -59887,11 +59887,12 @@
"/v1/loyalties": {
"get": {
"operationId": "list-loyalty-programs",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Campaigns",
- "description": "Returns a list of your loyalty campaigns.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nReturns a list of your loyalty campaigns.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -60094,11 +60095,12 @@
},
"post": {
"operationId": "create-loyalty-program",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Create Loyalty Campaign",
- "description": "Creates a batch of [loyalty cards](/api-reference/loyalties/get-member) aggregated in a single loyalty campaign. It also allows you to define a custom codes pattern. \n 📘 Global uniqueness\n All codes are unique across the whole project. Voucherify wont allow to generate the same codes in any of your campaigns.\n 🚧 Asynchronous action!\n This is an asynchronous action, you cant read or modify a newly created campaign until the code generation is completed. See creation_status field in the [loyalty campaign object](/api-reference/loyalties/loyalty-campaign-object) description.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nCreates a batch of [loyalty cards](/api-reference/loyalties/get-member) aggregated in a single loyalty campaign. It also allows you to define a custom codes pattern. \n\nGlobal uniqueness\nAll codes are unique across the whole project. Voucherify wont allow to generate the same codes in any of your campaigns.\n\n\nAsynchronous action!\nThis is an asynchronous action, you cant read or modify a newly created campaign until the code generation is completed. See creation_status field in the [loyalty campaign object](/api-reference/loyalties/loyalty-campaign-object) description.\n",
"parameters": [],
"security": [
{
@@ -60303,11 +60305,12 @@
],
"get": {
"operationId": "get-loyalty-program",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Loyalty Campaign",
- "description": "Retrieve a specific loyalty campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve a specific loyalty campaign.",
"parameters": [],
"security": [
{
@@ -60410,11 +60413,12 @@
},
"put": {
"operationId": "update-loyalty-program",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Update Loyalty Campaign",
- "description": "Updates a loyalty program. \nFields other than those specified in the allowed request body payload wont be modified (even if provided they are silently skipped). Any parameters not provided will be left unchanged. \nThis method will update the [loyalty cards](/api-reference/loyalties/get-member) which have not been published or redeemed yet.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nUpdates a loyalty program. \nFields other than those specified in the allowed request body payload wont be modified (even if provided they are silently skipped). Any parameters not provided will be left unchanged. \nThis method will update the [loyalty cards](/api-reference/loyalties/get-member) which have not been published or redeemed yet.",
"parameters": [],
"security": [
{
@@ -60600,11 +60604,12 @@
},
"delete": {
"operationId": "delete-loyalty-program",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Delete Loyalty Campaign",
- "description": "Deletes a loyalty campaign and all related loyalty cards. This action cannot be undone. Also, it immediately removes any redemptions on loyalty cards.\nIf the force parameter is set to false or not set at all, the loyalty campaign and all related loyalty cards will be moved to [the bin](/api-reference/bin/list-bin-entries).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nDeletes a loyalty campaign and all related loyalty cards. This action cannot be undone. Also, it immediately removes any redemptions on loyalty cards.\nIf the force parameter is set to false or not set at all, the loyalty campaign and all related loyalty cards will be moved to [the bin](/api-reference/bin/list-bin-entries).",
"parameters": [
{
"schema": {
@@ -60656,11 +60661,12 @@
],
"get": {
"operationId": "list-members",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Members",
- "description": "Returns a list of your loyalty cards. The loyalty cards are sorted by creation date, with the most recent loyalty cards appearing first.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nReturns a list of your loyalty cards. The loyalty cards are sorted by creation date, with the most recent loyalty cards appearing first.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -60831,11 +60837,12 @@
},
"post": {
"operationId": "add-member",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Add Member",
- "description": "This method assigns a loyalty card to a customer. It selects a [loyalty card](/api-reference/vouchers/get-voucher) suitable for publication, adds a publish entry, and returns the published voucher. \nA voucher is suitable for publication when its active and hasnt been published yet. \n 📘 Auto-update campaign\n In case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use **auto-update** campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nThis method assigns a loyalty card to a customer. It selects a [loyalty card](/api-reference/vouchers/get-voucher) suitable for publication, adds a publish entry, and returns the published voucher. \nA voucher is suitable for publication when its active and hasnt been published yet. \n\nAuto-update campaign\nIn case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use **auto-update** campaign.\n",
"parameters": [],
"security": [
{
@@ -61000,11 +61007,12 @@
],
"get": {
"operationId": "get-member-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Member with campaign ID",
- "description": "Retrieves the loyalty card with the given member ID (i.e. voucher code).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieves the loyalty card with the given member ID (i.e. voucher code).",
"parameters": [],
"security": [
{
@@ -61096,11 +61104,12 @@
],
"get": {
"operationId": "get-member",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Member",
- "description": "Retrieve loyalty card with the given member ID (i.e. voucher code). \n 📘 Alternative endpoint\n This endpoint is an alternative to this [endpoint](/api-reference/loyalties/get-member-with-campaign-id). The URL was re-designed to allow you to retrieve loyalty card details without having to provide the campaignId as a path parameter.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve loyalty card with the given member ID (i.e. voucher code). \n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/get-member-with-campaign-id). The URL was re-designed to allow you to retrieve loyalty card details without having to provide the campaignId as a path parameter.\n",
"parameters": [],
"security": [
{
@@ -61192,11 +61201,12 @@
],
"get": {
"operationId": "list-campaign-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Campaign Pending Points",
- "description": "Lists all pending points that are currently assigned to all loyalty cards in a campaign. Once the points are added to the card, the entry is no longer returned.\n👍 Configuring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nLists all pending points that are currently assigned to all loyalty cards in a campaign. Once the points are added to the card, the entry is no longer returned.\n\nConfiguring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n",
"parameters": [
{
"schema": {
@@ -61400,11 +61410,12 @@
],
"get": {
"operationId": "list-member-pending-points-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Pending Points with campaign ID",
- "description": "Lists all pending points that are currently assigned to the loyalty card. Once the points are added to the card, the entry is no longer returned.\n👍 Configuring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nLists all pending points that are currently assigned to the loyalty card. Once the points are added to the card, the entry is no longer returned.\n\nConfiguring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n",
"parameters": [
{
"schema": {
@@ -61599,11 +61610,12 @@
],
"get": {
"operationId": "list-member-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Pending Points",
- "description": "\n 📘 Alternative endpoint\n This endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-member-pending-points-with-campaign-id). The URL was re-designed to list member pending points without having to provide the campaignId as a path parameter.\nLists all pending points that are currently assigned to the loyalty card. Once the points are added to the card, the entry is no longer returned.\n👍 Configuring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-member-pending-points-with-campaign-id). The URL was re-designed to list member pending points without having to provide the campaignId as a path parameter.\n\nLists all pending points that are currently assigned to the loyalty card. Once the points are added to the card, the entry is no longer returned.\n\nConfiguring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n",
"parameters": [
{
"schema": {
@@ -61807,11 +61819,12 @@
],
"post": {
"operationId": "activate-member-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Activate Member Pending Points",
- "description": "Activate manually the pending points and add them to the loyalty card. The pending points are determined by the pending point ID.\nOnce activated, the pending point entry with that ID is not listed by the endpoints: List member ([with campaign ID](/api-reference/loyalties/list-member-pending-points-with-campaign-id), [without campaign ID](/api-reference/loyalties/list-member-pending-points)), [List campaign pending points](/api-reference/loyalties/list-campaign-pending-points).\nThis **POST** method does not require a request body.\n👍 Configuring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nActivate manually the pending points and add them to the loyalty card. The pending points are determined by the pending point ID.\nOnce activated, the pending point entry with that ID is not listed by the endpoints: List member ([with campaign ID](/api-reference/loyalties/list-member-pending-points-with-campaign-id), [without campaign ID](/api-reference/loyalties/list-member-pending-points)), [List campaign pending points](/api-reference/loyalties/list-campaign-pending-points).\nThis **POST** method does not require a request body.\n\nConfiguring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n",
"parameters": [],
"security": [
{
@@ -61872,11 +61885,12 @@
],
"post": {
"operationId": "adjust-member-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Adjust Member Pending Points",
- "description": "Adjusts the pending points with a given ID. You can add or subtract the number of points.\n👍 Configuring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nAdjusts the pending points with a given ID. You can add or subtract the number of points.\n\nConfiguring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n",
"parameters": [],
"security": [
{
@@ -61957,11 +61971,12 @@
],
"post": {
"operationId": "cancel-member-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Cancel Member Pending Points",
- "description": "Cancel manually the pending points for the loyalty card. The pending points are determined by the pending point ID.\nOnce canceled, the pending point entry with that ID is not listed by the endpoints: List member ([with campaign ID](/api-reference/loyalties/list-member-pending-points-with-campaign-id), [without campaign ID](/api-reference/loyalties/list-member-pending-points)), [List campaign pending points](/api-reference/loyalties/list-campaign-pending-points).\nThis **POST** method does not require a request body and it returns an empty, 204, response.\n👍 Configuring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nCancel manually the pending points for the loyalty card. The pending points are determined by the pending point ID.\nOnce canceled, the pending point entry with that ID is not listed by the endpoints: List member ([with campaign ID](/api-reference/loyalties/list-member-pending-points-with-campaign-id), [without campaign ID](/api-reference/loyalties/list-member-pending-points)), [List campaign pending points](/api-reference/loyalties/list-campaign-pending-points).\nThis **POST** method does not require a request body and it returns an empty, 204, response.\n\nConfiguring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n",
"parameters": [],
"security": [
{
@@ -61999,11 +62014,12 @@
],
"get": {
"operationId": "list-member-activity-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Activity with campaign ID",
- "description": "Retrieves the list of activities for the given member ID related to a voucher and customer who is the holder of the voucher.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieves the list of activities for the given member ID related to a voucher and customer who is the holder of the voucher.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -62059,11 +62075,12 @@
],
"get": {
"operationId": "list-member-activity",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Activity",
- "description": "\n 📘 Alternative endpoint\n This endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-member-activity-with-campaign-id). The URL was re-designed to allow you to get member activities without having to provide the campaignId as a path parameter.\nRetrieves the list of activities for the given member ID related to a voucher and customer who is the holder of the voucher.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-member-activity-with-campaign-id). The URL was re-designed to allow you to get member activities without having to provide the campaignId as a path parameter.\n\nRetrieves the list of activities for the given member ID related to a voucher and customer who is the holder of the voucher.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -62128,11 +62145,12 @@
],
"post": {
"operationId": "update-loyalty-card-balance-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Adjust Loyalty Card Balance with campaign ID",
- "description": "This method adds or removes balance to an existing loyalty card that is assigned to a holder. The removal of points will consume the points that expire the soonest. \n >🚧 Async Action\n \n This is an async action. If you want to perform several add or remove loyalty card balance actions in a short time and their order matters, set up sufficient time-out between the calls.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nThis method adds or removes balance to an existing loyalty card that is assigned to a holder. The removal of points will consume the points that expire the soonest. \n \nAsync Action\nThis is an async action. If you want to perform several add or remove loyalty card balance actions in a short time and their order matters, set up sufficient time-out between the calls.\n",
"parameters": [],
"security": [
{
@@ -62220,11 +62238,12 @@
],
"post": {
"operationId": "update-loyalty-card-balance",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Adjust Loyalty Card Balance",
- "description": "This method gives adds or removes balance to an existing loyalty card that is assigned to a holder. The removal of points will consume the points that expire the soonest. \n >🚧 Async Action\n \n This is an async action. If you want to perform several add or remove loyalty card balance actions in a short time and their order matters, set up sufficient time-out between the calls.\n 📘 Alternative endpoint\n This endpoint is an alternative to this [endpoint](/api-reference/loyalties/adjust-loyalty-card-balance-with-campaign-id). The URL was re-designed to allow you to add or remove loyalty card balance without having to provide the campaignId as a path parameter.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nThis method gives adds or removes balance to an existing loyalty card that is assigned to a holder. The removal of points will consume the points that expire the soonest. \n \nAsync Action\nThis is an async action. If you want to perform several add or remove loyalty card balance actions in a short time and their order matters, set up sufficient time-out between the calls.\n\n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/adjust-loyalty-card-balance-with-campaign-id). The URL was re-designed to allow you to add or remove loyalty card balance without having to provide the campaignId as a path parameter.\n",
"parameters": [],
"security": [
{
@@ -62308,11 +62327,12 @@
],
"post": {
"operationId": "transfer-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Transfer Loyalty Points",
- "description": "Transfer points between different loyalty cards which have holders.\nProvide the campaign ID and the loyalty card ID you want the points to be transferred to as path parameters. In the request body, provide the loyalty cards you want the points to be transferred from and the number of points to transfer from each card.\nTransfer works only for loyalty cards that have holders, meaning the cards were published to customers.\nThe transferred points expire according to the target program expiration rules.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nTransfer points between different loyalty cards which have holders.\nProvide the campaign ID and the loyalty card ID you want the points to be transferred to as path parameters. In the request body, provide the loyalty cards you want the points to be transferred from and the number of points to transfer from each card.\nTransfer works only for loyalty cards that have holders, meaning the cards were published to customers.\nThe transferred points expire according to the target program expiration rules.",
"parameters": [],
"security": [
{
@@ -62428,11 +62448,12 @@
],
"get": {
"operationId": "list-loyalty-campaign-transactions",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Campaign Transactions",
- "description": "Retrieves all transactions for the campaign with the given campaign ID or campaign name.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieves all transactions for the campaign with the given campaign ID or campaign name.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -62575,6 +62596,7 @@
],
"post": {
"operationId": "export-loyalty-campaign-transactions",
+ "deprecated": true,
"tags": [
"Loyalties"
],
@@ -62586,7 +62608,7 @@
}
],
"summary": "Export Loyalty Campaign Transactions",
- "description": "Export transactions is an asynchronous process that generates a CSV file with the data about or point movements on all loyalty cards in a given campaign.\nTo export transactions:\n1. In the export request, use parameters to select which fields will be exported, in what order, and which data will be filtered.\n2. Use the returned id to track the export status with the [GET Export](/api-reference/exports/get-export) method.\n3. In the GET Export method, when the returned status field has the DONE value, the export file has been generated.\n4. Use the URL in the result property to download the file. You must be logged to your Voucherify account on a given cluster in the browser to be able to download the file.\nAn export request will almost always result in a single file being generated by the system. However, when the data volume is large, the system may split the results into multiple files.\nAn example export file can look as follows:\n\n\n 👍 Export Campaign Transactions\n This method works in the same way the [POST Export Campaign Transactions](/api-reference/campaigns/export-campaign-transactions) does, but it is limited to loyalty campaigns only. The POST Export Campaign Transactions method can also export gift card campaign transactions.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nExport transactions is an asynchronous process that generates a CSV file with the data about or point movements on all loyalty cards in a given campaign.\nTo export transactions:\n1. In the export request, use parameters to select which fields will be exported, in what order, and which data will be filtered.\n2. Use the returned id to track the export status with the [GET Export](/api-reference/exports/get-export) method.\n3. In the GET Export method, when the returned status field has the DONE value, the export file has been generated.\n4. Use the URL in the result property to download the file. You must be logged to your Voucherify account on a given cluster in the browser to be able to download the file.\nAn export request will almost always result in a single file being generated by the system. However, when the data volume is large, the system may split the results into multiple files.\nAn example export file can look as follows:\n\n\n\nExport Campaign Transactions\nThis method works in the same way the [POST Export Campaign Transactions](/api-reference/campaigns/export-campaign-transactions) does, but it is limited to loyalty campaigns only. The POST Export Campaign Transactions method can also export gift card campaign transactions.\n",
"requestBody": {
"description": "Specify the parameters for the transaction export.",
"content": {
@@ -62720,11 +62742,12 @@
],
"get": {
"operationId": "list-loyalty-card-transactions-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Card Transactions with campaign ID",
- "description": "Retrieve transaction data related to point movements for a specific loyalty card.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve transaction data related to point movements for a specific loyalty card.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -63075,11 +63098,12 @@
],
"get": {
"operationId": "list-loyalty-card-transactions",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Card Transactions",
- "description": "Retrieve transaction data related to point movements for a specific loyalty card.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve transaction data related to point movements for a specific loyalty card.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -63430,11 +63454,12 @@
],
"post": {
"operationId": "export-loyalty-card-transactions",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Export Loyalty Card Transactions",
- "description": "Export transactions that are associated with point movements on a loyalty card.\n\n\n",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nExport transactions that are associated with point movements on a loyalty card.\n\n\n",
"parameters": [],
"security": [
{
@@ -63573,11 +63598,12 @@
],
"post": {
"operationId": "export-loyalty-card-transactions-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Export Loyalty Card Transactions with campaign ID",
- "description": "Export transactions that are associated with point movements on a loyalty card.\n\n\n",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nExport transactions that are associated with point movements on a loyalty card.\n\n\n",
"parameters": [],
"security": [
{
@@ -63716,11 +63742,12 @@
],
"get": {
"operationId": "list-points-expiration",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Card Point Expiration",
- "description": "Retrieve loyalty point expiration buckets for a given loyalty card. Expired point buckets are not returned in this endpoint. You can use the [Exports API](/api-reference/exports/create-export) to retrieve a list of both ACTIVE and EXPIRED point buckets.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve loyalty point expiration buckets for a given loyalty card. Expired point buckets are not returned in this endpoint. You can use the [Exports API](/api-reference/exports/create-export) to retrieve a list of both ACTIVE and EXPIRED point buckets.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -63823,11 +63850,12 @@
],
"post": {
"operationId": "create-points-expiration-export",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Export Loyalty Campaign Point Expiration",
- "description": "Schedule the generation of a point expiration CSV file for a particular campaign. It can list point buckets, which can have an ACTIVE or EXPIRED status.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nSchedule the generation of a point expiration CSV file for a particular campaign. It can list point buckets, which can have an ACTIVE or EXPIRED status.",
"parameters": [],
"security": [
{
@@ -63991,11 +64019,12 @@
],
"get": {
"operationId": "list-earning-rules",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Earning Rules",
- "description": "Returns a list of all earning rules within a given campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nReturns a list of all earning rules within a given campaign.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -64557,11 +64586,12 @@
},
"post": {
"operationId": "create-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Create Earning Rule",
- "description": "Create earning rules for a loyalty campaign.\n 🚧 Maximum number of earning rules\n You can create up to 100 earning rules per project. The limit can be customized for clients with a single-tenant setup.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nCreate earning rules for a loyalty campaign.\n\nMaximum number of earning rules\nYou can create up to 100 earning rules per project. The limit can be customized for clients with a single-tenant setup.\n",
"parameters": [],
"security": [
{
@@ -65727,11 +65757,12 @@
],
"get": {
"operationId": "get-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Earning Rule",
- "description": "Retrieves an earning rule assigned to a campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieves an earning rule assigned to a campaign.",
"parameters": [],
"security": [
{
@@ -66006,11 +66037,12 @@
},
"put": {
"operationId": "update-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Update Earning Rule",
- "description": "Update an earning rule definition.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nUpdate an earning rule definition.",
"parameters": [],
"security": [
{
@@ -66115,11 +66147,12 @@
},
"delete": {
"operationId": "delete-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Delete Earning Rule",
- "description": "This method deletes an earning rule for a specific loyalty campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nThis method deletes an earning rule for a specific loyalty campaign.",
"parameters": [],
"security": [
{
@@ -66157,11 +66190,12 @@
],
"post": {
"operationId": "enable-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Enable Earning Rule",
- "description": "Enable an earning rule.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nEnable an earning rule.",
"parameters": [],
"security": [
{
@@ -66240,11 +66274,12 @@
],
"post": {
"operationId": "disable-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Disable Earning Rule",
- "description": "Disable an earning rule.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nDisable an earning rule.",
"parameters": [],
"security": [
{
@@ -66308,11 +66343,12 @@
],
"get": {
"operationId": "list-member-rewards",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Rewards",
- "description": "Retrieves the list of rewards that the given customer (identified by member_id, which is a loyalty card assigned to a particular customer) **can get in exchange for loyalty points**. \nYou can use the affordable_only parameter to limit the results to rewards that the customer can actually afford (only rewards whose price in points is not higher than the loyalty points balance on a loyalty card). \nPlease note that rewards that are disabled (i.e. set to Not Available in the Dashboard) for a given loyalty tier reward mapping will not be returned in this endpoint.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieves the list of rewards that the given customer (identified by member_id, which is a loyalty card assigned to a particular customer) **can get in exchange for loyalty points**. \nYou can use the affordable_only parameter to limit the results to rewards that the customer can actually afford (only rewards whose price in points is not higher than the loyalty points balance on a loyalty card). \nPlease note that rewards that are disabled (i.e. set to Not Available in the Dashboard) for a given loyalty tier reward mapping will not be returned in this endpoint.",
"parameters": [
{
"in": "query",
@@ -66556,11 +66592,12 @@
],
"get": {
"operationId": "get-reward-details",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Reward Details",
- "description": "Get reward details in the context of a loyalty campaign and reward assignment ID.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nGet reward details in the context of a loyalty campaign and reward assignment ID.",
"parameters": [],
"security": [
{
@@ -66660,11 +66697,12 @@
],
"get": {
"operationId": "list-reward-assignments-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Reward Assignments with campaign ID",
- "description": "Returns reward assignments from a given loyalty campaign.\n 📘 Alternative endpoint\n This endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-campaign-rewards). The URL was re-designed to be more contextual to the type of data returned in the response.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nReturns reward assignments from a given loyalty campaign.\n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-campaign-rewards). The URL was re-designed to be more contextual to the type of data returned in the response.\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -66856,11 +66894,12 @@
],
"get": {
"operationId": "list-reward-assignments-2",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Campaign Rewards",
- "description": "Returns active rewards from a given loyalty campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nReturns active rewards from a given loyalty campaign.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -66946,11 +66985,12 @@
},
"post": {
"operationId": "create-reward-assignment-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Create Loyalty Campaign Reward Assignment",
- "description": "Add rewards to a loyalty campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nAdd rewards to a loyalty campaign.",
"parameters": [],
"security": [
{
@@ -67061,11 +67101,12 @@
],
"get": {
"operationId": "get-reward-assignment-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Campaign Reward Assignments",
- "description": "Retrieve specific reward assignment.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve specific reward assignment.",
"parameters": [],
"security": [
{
@@ -67128,11 +67169,12 @@
],
"get": {
"operationId": "get-reward-assignment-2",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Campaign Reward Assignment",
- "description": "Retrieve specific reward assignment.\n 📘 Alternative endpoint\n This endpoint is an alternative to this [endpoint](/api-reference/loyalties/get-campaign-reward-assignments). ",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve specific reward assignment.\n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/get-campaign-reward-assignments).\n",
"parameters": [],
"security": [
{
@@ -67173,11 +67215,12 @@
},
"put": {
"operationId": "update-reward-assignment-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Update Campaign Reward Assignment",
- "description": "Updates rewards parameters, i.e. the points cost for the specific reward.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nUpdates rewards parameters, i.e. the points cost for the specific reward.",
"parameters": [],
"security": [
{
@@ -67239,11 +67282,12 @@
},
"delete": {
"operationId": "delete-reward-assignment-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Delete Campaign Reward Assignment",
- "description": "This method deletes a reward assignment for a particular loyalty campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nThis method deletes a reward assignment for a particular loyalty campaign.",
"parameters": [],
"security": [
{
@@ -67281,11 +67325,12 @@
],
"post": {
"operationId": "redeem-reward-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Redeem Reward with campaign ID",
- "description": "Exchange points from a loyalty card for a specified reward. This API method returns an assigned award in the response. It means that if a requesting customer gets a coupon code with a discount for the next order, that discount code will be visible in response as part of the reward object definition.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nExchange points from a loyalty card for a specified reward. This API method returns an assigned award in the response. It means that if a requesting customer gets a coupon code with a discount for the next order, that discount code will be visible in response as part of the reward object definition.",
"parameters": [],
"security": [
{
@@ -68720,11 +68765,12 @@
],
"post": {
"operationId": "redeem-reward",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Redeem Reward",
- "description": "\n 📘 Alternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/redeem-reward-with-campaign-id). The URL was re-designed to allow you to redeem a reward without having to provide the campaignId as a path parameter.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/redeem-reward-with-campaign-id). The URL was re-designed to allow you to redeem a reward without having to provide the campaignId as a path parameter.\n",
"parameters": [],
"security": [
{
@@ -68998,11 +69044,12 @@
],
"get": {
"operationId": "list-loyalty-tiers",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Tiers",
- "description": "Retrieve a list of loyalty tiers which were added to the loyalty program.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve a list of loyalty tiers which were added to the loyalty program.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -69154,11 +69201,12 @@
},
"post": {
"operationId": "create-in-bulk-loyalty-tiers",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Create loyalty tiers",
- "description": "Creates loyalty tiers for desired campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nCreates loyalty tiers for desired campaign.",
"parameters": [],
"security": [
{
@@ -69213,11 +69261,12 @@
],
"get": {
"operationId": "get-loyalty-tier",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Loyalty Tier",
- "description": "Retrieve a loyalty tier from a loyalty campaign by the loyalty tier ID.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve a loyalty tier from a loyalty campaign by the loyalty tier ID.",
"parameters": [],
"security": [
{
@@ -69302,11 +69351,12 @@
],
"get": {
"operationId": "list-member-loyalty-tier",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member's Loyalty Tiers",
- "description": "Retrieve member tiers using the loyalty card ID.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve member tiers using the loyalty card ID.",
"parameters": [],
"security": [
{
@@ -69416,11 +69466,12 @@
],
"get": {
"operationId": "list-loyalty-tier-earning-rules",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Tier Earning Rules",
- "description": "Retrieve available earning rules for a given tier and the calculation method for earning points.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve available earning rules for a given tier and the calculation method for earning points.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -70028,11 +70079,12 @@
],
"get": {
"operationId": "list-loyalty-tier-rewards",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Tier Rewards",
- "description": "Get available rewards for a given tier.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nGet available rewards for a given tier.",
"parameters": [],
"security": [
{
@@ -70487,7 +70539,7 @@
"Customers"
],
"summary": "Create Customer",
- "description": "Creates a customer object.\n 📘 Upsert Mode\n If you pass an id or a source_id that already exists in the customer database, Voucherify will return a related customer object with updated fields.",
+ "description": "Creates a customer object.\n\nUpsert Mode\nIf you pass an id or a source_id that already exists in the customer database, Voucherify will return a related customer object with updated fields.\n",
"parameters": [],
"security": [
{
@@ -70931,7 +70983,7 @@
"Customers"
],
"summary": "Import and Update Customers using CSV",
- "description": "This API method lets you import or update customer data. To get a proper and valid response, please send a CSV file with data separated by commas. \n# Request Example\n# CSV File Format\nThe CSV file has to include headers in the first line. All properties which cannot be mapped to standard customer fields will be added to the metadata object.\n 📘 Standard customer fields mapping\n **No spaces allowed in field names** \n Id, Name, Email, Phone, Birthdate, Source_id, Address_line_1, Address_line_2, Address_Postal_Code, Address_City, Address_State, Address_Country, Description, Metadata_name_1, Metadata_name_2\n# Update Customers using CSV\nIf you would like to update customers data, you can do it using the CSV file with new data. However, remember to include a source_id in your CSV file to manage the update successfully.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
+ "description": "This API method lets you import or update customer data. To get a proper and valid response, please send a CSV file with data separated by commas. \n# Request Example\n# CSV File Format\nThe CSV file has to include headers in the first line. All properties which cannot be mapped to standard customer fields will be added to the metadata object.\n\nStandard customer fields mapping\n**No spaces allowed in field names** Id, Name, Email, Phone, Birthdate, Source_id, Address_line_1, Address_line_2, Address_Postal_Code, Address_City, Address_State, Address_Country, Description, Metadata_name_1, Metadata_name_2\n\n# Update Customers using CSV\nIf you would like to update customers data, you can do it using the CSV file with new data. However, remember to include a source_id in your CSV file to manage the update successfully.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
"parameters": [],
"security": [
{
@@ -72234,7 +72286,7 @@
"Orders"
],
"summary": "Create Order",
- "description": "Creates an order object and triggers an order creation event.\n 📘 Upsert Mode\n If you pass an id or a source_id that already exists in the order database, Voucherify will return a related order object with updated fields.",
+ "description": "Creates an order object and triggers an order creation event.\n\nUpsert Mode\nIf you pass an id or a source_id that already exists in the order database, Voucherify will return a related order object with updated fields.\n",
"parameters": [],
"security": [
{
@@ -72666,7 +72718,7 @@
"Orders"
],
"summary": "Import Orders",
- "description": "\n 🚧 Historical orders\n This endpoint should only be used to import historical orders into Voucherify. For on-going synchronization, the [update order](/api-reference/orders/update-order) endpoint should be used. This is critical because this endpoint does not store events or launch distributions.\nThe orders will also have a created_at date thats assigned when theyve been imported to Voucherify. To keep track of the actual order creation date, add an order metadata in ISO 8601 date or date time format to each imported order.\n# Limitations\n## Import volume\nThere can be only a single on-going order import per tenant per project at a given time. The user can schedule more imports but those extra imports will be scheduled to run in sequence one by one. \n## Maximum count of orders in single import\nThere is a 2000 limit of orders per one request.\n# Notifications\nThere are no notifications on the Dashboard because this import is launched via the API.\n# Triggered actions\n \nIf you import orders with customers, then a logic will be scheduled responsible for placing these customers into segments and refreshing the segments summary. Consequently, this update will trigger \n- Customers entering into segments\n- Distributions based on any rules tied to customer entering segment(s)\n- Earning rules based on the customer entering segment(s)\n# What is not triggered\n1. No webhooks are triggered during the import of orders - for both orders and upserted products / SKUs. \n2. Distributions based on Order Update, Order Paid, Order Created and Order Cancelled. In other words if you have a distribution based on Order Paid and you import an order with a PAID status, the distribution is not going to be triggered. \n3. No events are created during the import of orders - for both orders and upserted products / SKUs. In other words you wont see any events in the Activity tab in the Dashboard such as Order created or Order paid. If you are additionally upserting products / SKUs, then you wont see the Product created events listed, etc. \n4. Earning rules based on Order Paid wont be triggered.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request with [GET Async Action](/api-reference/async-actions/get-async-action) endpoint.",
+ "description": "\n\nHistorical orders\nThis endpoint should only be used to import historical orders into Voucherify. For on-going synchronization, the [update order](/api-reference/orders/update-order) endpoint should be used. This is critical because this endpoint does not store events or launch distributions.\n\nThe orders will also have a created_at date thats assigned when theyve been imported to Voucherify. To keep track of the actual order creation date, add an order metadata in ISO 8601 date or date time format to each imported order.\n# Limitations\n## Import volume\nThere can be only a single on-going order import per tenant per project at a given time. The user can schedule more imports but those extra imports will be scheduled to run in sequence one by one. \n## Maximum count of orders in single import\nThere is a 2000 limit of orders per one request.\n# Notifications\nThere are no notifications on the Dashboard because this import is launched via the API.\n# Triggered actions\n \nIf you import orders with customers, then a logic will be scheduled responsible for placing these customers into segments and refreshing the segments summary. Consequently, this update will trigger \n- Customers entering into segments\n- Distributions based on any rules tied to customer entering segment(s)\n- Earning rules based on the customer entering segment(s)\n# What is not triggered\n1. No webhooks are triggered during the import of orders - for both orders and upserted products / SKUs. \n2. Distributions based on Order Update, Order Paid, Order Created and Order Cancelled. In other words if you have a distribution based on Order Paid and you import an order with a PAID status, the distribution is not going to be triggered. \n3. No events are created during the import of orders - for both orders and upserted products / SKUs. In other words you wont see any events in the Activity tab in the Dashboard such as Order created or Order paid. If you are additionally upserting products / SKUs, then you wont see the Product created events listed, etc. \n4. Earning rules based on Order Paid wont be triggered.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request with [GET Async Action](/api-reference/async-actions/get-async-action) endpoint.",
"parameters": [],
"security": [
{
@@ -73254,7 +73306,7 @@
"Products"
],
"summary": "Create Product",
- "description": "Creates a product object.\n 📘 Upsert Mode\n If you pass an id or a source_id that already exists in the product database, Voucherify will return a related product object with updated fields.",
+ "description": "Creates a product object.\n\nUpsert Mode\nIf you pass an id or a source_id that already exists in the product database, Voucherify will return a related product object with updated fields.\n",
"parameters": [],
"security": [
{
@@ -73878,7 +73930,7 @@
"Products"
],
"summary": "Create SKU",
- "description": "This method adds product variants to a [created product](/api-reference/products/create-product). \n 📘 Upsert Mode\n If you pass an id or a source_id that already exists in the sku database, Voucherify will return a related sku object with updated fields.",
+ "description": "This method adds product variants to a [created product](/api-reference/products/create-product). \n\nUpsert Mode\nIf you pass an id or a source_id that already exists in the sku database, Voucherify will return a related sku object with updated fields.\n",
"parameters": [],
"security": [
{
@@ -74080,7 +74132,7 @@
"Products"
],
"summary": "Import Products using CSV",
- "description": "Import products into the repository using a CSV file.\nThe CSV file has to include headers in the first line.\n 📘 Standard product fields mapping\n - Create a **comma separated value (CSV) file** or download our CSV import template. You can find an example template [here](https://s3.amazonaws.com/helpscout.net/docs/assets/5902f1c12c7d3a057f88a36d/attachments/627b82ed68d51e779443f550/Import_products_template.csv).\n - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name\n - **Name** is a **required** field. The remaining fields in the CSV template are optional.\n - Override/Update products **names** in Voucherify using this method. Data will be updated for each product included in the CSV file whose **source_id** matches a source ID in Voucherify. No other data can be updated other than the product name.\n - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 standard**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11\n - YYYY-MM-DD\n - YYYY-MM-DDTHH\n - YYYY-MM-DDTHH:mm\n - YYYY-MM-DDTHH:mm:ss\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ss.SSSZ\n - Columns that cannot be mapped to standard fields, will be mapped to **Custom attributes** and added as **products metadata**. There is no limit on the number of custom attributes that you can import as metadata. \n - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](/prepare/metadata#add-metadata).\n - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2.\n - Headers with metadata names **cant contain white-space characters**.\n - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: \n - array of strings: subscribed,premium \n - array of numbers: 123,234. \n - array of dates: 2000-01-01,2000-01-02\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
+ "description": "Import products into the repository using a CSV file.\nThe CSV file has to include headers in the first line.\n\nStandard product fields mapping\n- Create a **comma separated value (CSV) file** or download our CSV import template. You can find an example template [here](https://s3.amazonaws.com/helpscout.net/docs/assets/5902f1c12c7d3a057f88a36d/attachments/627b82ed68d51e779443f550/Import_products_template.csv).\n- Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name\n- **Name** is a **required** field. The remaining fields in the CSV template are optional.\n- Override/Update products **names** in Voucherify using this method. Data will be updated for each product included in the CSV file whose **source_id** matches a source ID in Voucherify. No other data can be updated other than the product name.\n- Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 standard**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11\n - YYYY-MM-DD\n - YYYY-MM-DDTHH\n - YYYY-MM-DDTHH:mm\n - YYYY-MM-DDTHH:mm:ss\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ss.SSSZ\n- Columns that cannot be mapped to standard fields, will be mapped to **Custom attributes** and added as **products metadata**. There is no limit on the number of custom attributes that you can import as metadata.\n- To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](/prepare/metadata#add-metadata).\n- **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2.\n- Headers with metadata names **cant contain white-space characters**.\n- If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example:\n - array of strings: subscribed,premium\n - array of numbers: 123,234.\n - array of dates: 2000-01-01,2000-01-02\n\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
"parameters": [],
"security": [
{
@@ -74126,7 +74178,7 @@
"Products"
],
"summary": "Import SKUs using CSV",
- "description": "Import SKUs into the repository using a CSV file.\nThe CSV file has to include headers in the first line. All properties which cannot be mapped to standard SKU fields will be added to the metadata object. You can find an example template [here](https://s3.amazonaws.com/helpscout.net/docs/assets/5902f1c12c7d3a057f88a36d/attachments/627b98d08c9b585083488a4c/Import_SKUS_template.csv). \n 🚧 Import sequence\n First import products using the [dedicated endpoint](/api-reference/products/import-products-using-csv), then import SKUs using this endpoint to properly match SKUs to products.\n 📘 Standard SKU fields mapping\n - **Required** fields are source_id and product_id.\n - Supported CSV file headers: product_id,sku,source_id,price,image_url,attributes\n - SKU **source_id** must be unique in the entire product catalog, no duplicates are allowed.\n - SKU attributes need to be in the form of a stringy-fied json, i.e.{color:blue}. These attributes must be defined in the **product** beforehand so you can import them to the SKU.\n - You can use this method to update the following parameters in bulk: **sku** and the sku **price**.\n - Columns that cannot be mapped to standard fields will be mapped to Custom attributes and added as product metadata. There is no limit on the number of custom attributes that you can import as metadata.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
+ "description": "Import SKUs into the repository using a CSV file.\nThe CSV file has to include headers in the first line. All properties which cannot be mapped to standard SKU fields will be added to the metadata object. You can find an example template [here](https://s3.amazonaws.com/helpscout.net/docs/assets/5902f1c12c7d3a057f88a36d/attachments/627b98d08c9b585083488a4c/Import_SKUS_template.csv). \n\nImport sequence\nFirst import products using the [dedicated endpoint](/api-reference/products/import-products-using-csv), then import SKUs using this endpoint to properly match SKUs to products.\n\n\nStandard SKU fields mapping\n- **Required** fields are source_id and product_id.\n- Supported CSV file headers: product_id,sku,source_id,price,image_url,attributes\n- SKU **source_id** must be unique in the entire product catalog, no duplicates are allowed.\n- SKU attributes need to be in the form of a stringy-fied json, i.e.{color:blue}. These attributes must be defined in the **product** beforehand so you can import them to the SKU.\n- You can use this method to update the following parameters in bulk: **sku** and the sku **price**.\n- Columns that cannot be mapped to standard fields will be mapped to Custom attributes and added as product metadata. There is no limit on the number of custom attributes that you can import as metadata.\n\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
"parameters": [],
"security": [
{
@@ -74967,7 +75019,7 @@
"Validation Rules"
],
"summary": "Create Validation Rules",
- "description": "Create a validation rule.\n 🚧 Managing validation rules\n It is recommended to [create or update validation rules](/personalize/create-validation-rules) in the Voucherify dashboard. The rule builder in the dashboard helps configuring the desired conditions in a convenient way. The API should not be used as a preferable way to create and manage validation rules.",
+ "description": "Create a validation rule.\n\nManaging validation rules\nIt is recommended to [create or update validation rules](/personalize/create-validation-rules) in the Voucherify dashboard. The rule builder in the dashboard helps configuring the desired conditions in a convenient way. The API should not be used as a preferable way to create and manage validation rules.\n",
"parameters": [],
"security": [
{
@@ -75222,7 +75274,7 @@
"Validation Rules"
],
"summary": "Update Validation Rule",
- "description": "Update validation rule parameters.\n 🚧 Managing validation rules\n It is recommended to [create or update validation rules](/personalize/create-validation-rules) in the Voucherify dashboard. The rule builder in the dashboard helps configuring the desired conditions in a convenient way. The API should not be used as a preferable way to create and manage validation rules.",
+ "description": "Update validation rule parameters.\n\nManaging validation rules\nIt is recommended to [create or update validation rules](/personalize/create-validation-rules) in the Voucherify dashboard. The rule builder in the dashboard helps configuring the desired conditions in a convenient way. The API should not be used as a preferable way to create and manage validation rules.\n",
"parameters": [],
"security": [
{
@@ -75890,7 +75942,7 @@
"Segments"
],
"summary": "Create Segment",
- "description": "Create a customer segment.\n 🚧 Limit on static segments\n There is a cap on the number of customers that you can assign to a static segment: **20,000**. If you would like to create a bigger segment, then you can use the unlimited auto-update or passive segment instead and use some customer metadata to build this segment.\n 🚧 Limit on Active and Passive segments\n You can create a maximum of 100 passive and active segments.",
+ "description": "Create a customer segment.\n\nLimit on static segments\nThere is a cap on the number of customers that you can assign to a static segment: **20,000**. If you would like to create a bigger segment, then you can use the unlimited auto-update or passive segment instead and use some customer metadata to build this segment.\n\n\nLimit on Active and Passive segments\nYou can create a maximum of 100 passive and active segments.\n",
"parameters": [],
"security": [
{
@@ -76740,7 +76792,7 @@
"Exports"
],
"summary": "Create Export",
- "description": "Create export object. The export can be any of the following types: voucher, redemption, publication, customer, order, points_expiration, voucher_transactions, product, or sku. \n# Defaults\nIf you only specify the object type in the request body without specifying the fields, the API will return the following fields per export object:\n\n\n 📘 Date and time in the export API\n The exported date and times are always provided in the UTC time zone.\n# Fetching particular data sets\nUsing the parameters body parameter, you can narrow down which fields to export and how to filter the results. The fields are an array of strings containing the data that you would like to export. These fields define the headers in the CSV file. The array can be a combination of any of the following available fields:\n# Orders \n\n\n# Vouchers \n\n\n\n\n\n# Publications\n\n\n# Redemptions\n\n\n\n# Customers\n\n\n\n\n\n\n# Points Expirations\n\n\n # Gift Card Transactions\n\n\n # Loyalty Card Transactions\n\n\n",
+ "description": "Create export object. The export can be any of the following types: voucher, redemption, publication, customer, order, points_expiration, voucher_transactions, product, or sku. \n# Defaults\nIf you only specify the object type in the request body without specifying the fields, the API will return the following fields per export object:\n\n\n\nDate and time in the export API\nThe exported date and times are always provided in the UTC time zone.\n\n# Fetching particular data sets\nUsing the parameters body parameter, you can narrow down which fields to export and how to filter the results. The fields are an array of strings containing the data that you would like to export. These fields define the headers in the CSV file. The array can be a combination of any of the following available fields:\n# Orders \n\n\n# Vouchers \n\n\n\n\n\n# Publications\n\n\n# Redemptions\n\n\n\n# Customers\n\n\n\n\n\n\n# Points Expirations\n\n\n # Gift Card Transactions\n\n\n # Loyalty Card Transactions\n\n\n",
"parameters": [],
"security": [
{
@@ -77016,7 +77068,7 @@
"Exports"
],
"summary": "Download Export",
- "description": "Download the contents of the exported CSV file. \n 📘 Important notes\n **Base URL:** \n - https://download.voucherify.io (Europe) \n - https://us1.download.voucherify.io (US) \n - https://as1.download.voucherify.io (Asia) \n **Token:** Can be found within the result parameter of the [Get Export](/api-reference/exports/get-export) method response.",
+ "description": "Download the contents of the exported CSV file. \n\nImportant notes\n**Base URL:**\n- https://download.voucherify.io (Europe)\n- https://us1.download.voucherify.io (US)\n- https://as1.download.voucherify.io (Asia)\n**Token:** Can be found within the result parameter of the [Get Export](/api-reference/exports/get-export) method response.\n",
"parameters": [],
"security": [
{
@@ -77316,7 +77368,7 @@
"Metadata Schemas"
],
"summary": "List Metadata Schema Definitions",
- "description": "Retrieve metadata schema definitions.\n📘 Management API\nIf you have Management API enabled, you can also use the [List Metadata Schemas](/api-reference/management/list-metadata-schemas) endpoint to list all metadata schemas.",
+ "description": "Retrieve metadata schema definitions.\n\nManagement API\nIf you have Management API enabled, you can also use the [List Metadata Schemas](/api-reference/management/list-metadata-schemas) endpoint to list all metadata schemas.\n",
"parameters": [],
"security": [
{
@@ -77821,7 +77873,7 @@
"Metadata Schemas"
],
"summary": "Get Metadata Schema",
- "description": "Retrieves a metadata schema per resource type.\n# Resource types\n## Standard\nYou can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter.\n- campaign\n- customer\n- earning_rule\n- loyalty_tier\n- order\n- order_item\n- product\n- promotion_tier\n- publication\n- redemption\n- reward\n- voucher\n## Custom\nIf you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details.\n📘 Management API\nIf you have Management API enabled, you can also use the [Get Metadata Schemas](/api-reference/management/get-metadata-schema) endpoint to retrieve a metadata schema using its ID.",
+ "description": "Retrieves a metadata schema per resource type.\n# Resource types\n## Standard\nYou can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter.\n- campaign\n- customer\n- earning_rule\n- loyalty_tier\n- order\n- order_item\n- product\n- promotion_tier\n- publication\n- redemption\n- reward\n- voucher\n## Custom\nIf you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details.\n\nManagement API\nIf you have Management API enabled, you can also use the [Get Metadata Schemas](/api-reference/management/get-metadata-schema) endpoint to retrieve a metadata schema using its ID.\n",
"parameters": [],
"security": [
{
@@ -78609,7 +78661,7 @@
"Referrals"
],
"summary": "Add Referral Code Holders with Campaign ID",
- "description": "Adds new holders to a referral code as **referees**. The data sent in the request is upserted into the customer data.\nIf the request returns an error even for one customer, you have to resend the whole request. Customer data is upserted if the data for all customers is correct.\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (customers.modify)\n- Publish Voucher (vouchers.publish)\n 👍\nTo add a holder as a referrer, use the [Create Publication](/api-reference/publications/create-publication) endpoint.",
+ "description": "Adds new holders to a referral code as **referees**. The data sent in the request is upserted into the customer data.\nIf the request returns an error even for one customer, you have to resend the whole request. Customer data is upserted if the data for all customers is correct.\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (customers.modify)\n- Publish Voucher (vouchers.publish)\n\nTo add a holder as a referrer, use the [Create Publication](/api-reference/publications/create-publication) endpoint.\n",
"parameters": [],
"security": [
{
@@ -78864,7 +78916,7 @@
"Referrals"
],
"summary": "Add Referral Code Holders",
- "description": "Adds new holders to a referral code as **referees**. The data sent in the request is upserted into the customer data.\nIf the request returns an error even for one customer, you have to resend the whole request. Customer data is upserted if the data for all customers is correct.\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (customers.modify)\n- Publish Voucher (vouchers.publish)\n 👍\nTo add a holder as a referrer, use the [Create Publication](/api-reference/publications/create-publication) endpoint.\n 📘 Alternative endpoint\nThis endpoint is an alternative to the [Add Referral Code Holders endpoint](/api-reference/referrals/add-referral-code-holders-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the campaignId as a path paremeter.",
+ "description": "Adds new holders to a referral code as **referees**. The data sent in the request is upserted into the customer data.\nIf the request returns an error even for one customer, you have to resend the whole request. Customer data is upserted if the data for all customers is correct.\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (customers.modify)\n- Publish Voucher (vouchers.publish)\n\nTo add a holder as a referrer, use the [Create Publication](/api-reference/publications/create-publication) endpoint.\n\n\nAlternative endpoint\nThis endpoint is an alternative to the [Add Referral Code Holders endpoint](/api-reference/referrals/add-referral-code-holders-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the campaignId as a path paremeter.\n",
"parameters": [],
"security": [
{
@@ -78962,7 +79014,7 @@
"Referrals"
],
"summary": "List Referral Code Holders",
- "description": "Retrieves the holders of the referral code from a referral campaign.\nTo use this endpoint, you must have the following permissions:\n- Read Customers (customers.details.read)\n 📘 Alternative endpoint\nThis endpoint is an alternative to the [List Member Holders endpoint](/api-reference/referrals/list-referral-code-holders-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the campaignId as a path paremeter.",
+ "description": "Retrieves the holders of the referral code from a referral campaign.\nTo use this endpoint, you must have the following permissions:\n- Read Customers (customers.details.read)\n\nAlternative endpoint\nThis endpoint is an alternative to the [List Member Holders endpoint](/api-reference/referrals/list-referral-code-holders-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the campaignId as a path paremeter.\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -79077,7 +79129,7 @@
"Referrals"
],
"summary": "Remove Referral Card Holder",
- "description": "Removes the holder from a referral card. You can remove a referee only.\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (customers.modify)\n- Publish Voucher (vouchers.publish)\n 📘 Alternative endpoint\nThis endpoint is an alternative to the [Remove Referral Card Holder endpoint](/api-reference/referrals/remove-referral-card-holder-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the campaignId as a path paremeter.",
+ "description": "Removes the holder from a referral card. You can remove a referee only.\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (customers.modify)\n- Publish Voucher (vouchers.publish)\n\nAlternative endpoint\nThis endpoint is an alternative to the [Remove Referral Card Holder endpoint](/api-reference/referrals/remove-referral-card-holder-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the campaignId as a path paremeter.\n",
"parameters": [],
"security": [
{
@@ -79224,7 +79276,7 @@
"Templates"
],
"summary": "List Campaign Templates",
- "description": "Lists all campaign templates available in the project.\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Lists all campaign templates available in the project.\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -79317,7 +79369,7 @@
"Templates"
],
"summary": "Create Campaign Template",
- "description": "Creates a template for a discount or gift campaign, or a promotion tier.\nA template stores campaign configuration **without** the following details:\n- Campaign name\n- Category\n- Code count\nThe following elements are not supported by campaign templates:\n- Redeeming API keys\n- Redeeming users\n- Customer loyalty tier\n- Static segments\n 👍 Promotion Tiers and Campaign Templates\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the DISCOUNT_COUPON type. You can use this template to create:\n- [Discount campaign](/api-reference/templates/create-campaign-from-template),\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template).\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Creates a template for a discount or gift campaign, or a promotion tier.\nA template stores campaign configuration **without** the following details:\n- Campaign name\n- Category\n- Code count\nThe following elements are not supported by campaign templates:\n- Redeeming API keys\n- Redeeming users\n- Customer loyalty tier\n- Static segments\n\nPromotion Tiers and Campaign Templates\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the DISCOUNT_COUPON type. You can use this template to create:\n- [Discount campaign](/api-reference/templates/create-campaign-from-template),\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template).\n\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -79379,7 +79431,7 @@
"Templates"
],
"summary": "Get Campaign Template",
- "description": "Retrieves a campaign template available in the project.\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Retrieves a campaign template available in the project.\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -79418,7 +79470,7 @@
"Templates"
],
"summary": "Update Campaign Template",
- "description": "Updates the name or description of the campaign template.\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Updates the name or description of the campaign template.\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -79468,7 +79520,7 @@
"Templates"
],
"summary": "Delete Campaign Template",
- "description": "Deletes the campaign template permanently.\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Deletes the campaign template permanently.\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -79501,7 +79553,7 @@
"Templates"
],
"summary": "Create Campaign From Template",
- "description": "Creates a campaign out of a campaign template.\nTo create a campaign, you need to provide the name in the request, while other fields are optional. If no other fields are sent, the configuration from the template will be used.\nYou can send new values of the fields listed below to replace the settings saved in the template. However, you cannot assign an existing validation rule or create a new one in the request. If the template has a validation rule, a new validation rule is always created for the campaign. When the campaign has been created, then you can:\n- [Update the validation rule](/api-reference/validation-rules/update-validation-rule),\n- [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment),\n- [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments).\n 👍 Promotion Tiers and Campaign Templates\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the DISCOUNT_COUPON type. You can use this template to create:\n- [Discount campaign](/api-reference/templates/create-campaign-from-template)\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template)\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Creates a campaign out of a campaign template.\nTo create a campaign, you need to provide the name in the request, while other fields are optional. If no other fields are sent, the configuration from the template will be used.\nYou can send new values of the fields listed below to replace the settings saved in the template. However, you cannot assign an existing validation rule or create a new one in the request. If the template has a validation rule, a new validation rule is always created for the campaign. When the campaign has been created, then you can:\n- [Update the validation rule](/api-reference/validation-rules/update-validation-rule),\n- [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment),\n- [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments).\n\nPromotion Tiers and Campaign Templates\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the DISCOUNT_COUPON type. You can use this template to create:\n- [Discount campaign](/api-reference/templates/create-campaign-from-template)\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template)\n\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -79660,7 +79712,7 @@
"Templates"
],
"summary": "Add Promotion Tier From Template",
- "description": "Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign.\nTo add a promotion tier to a campaign, you need to provide the name in the request and the campaign ID. Other fields are optional. If no other fields are sent, the configuration from the template will be used.\nYou can send new values of the fields listed below to replace the settings saved in the template. However, you cannot assign an action or an existing validation rule or create a new one in the request. If the template has a validation rule, a new validation rule is always created for the promotion tier. When the promotion tier has been created, then you can:\n- [Update the validation rule](/api-reference/validation-rules/update-validation-rule),\n- [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment),\n- [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment).\n 👍 Promotion Tiers and Campaign Templates\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the DISCOUNT_COUPON type. You can use this template to create:\n- [Discount campaign](/api-reference/templates/create-campaign-from-template)\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template)\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign.\nTo add a promotion tier to a campaign, you need to provide the name in the request and the campaign ID. Other fields are optional. If no other fields are sent, the configuration from the template will be used.\nYou can send new values of the fields listed below to replace the settings saved in the template. However, you cannot assign an action or an existing validation rule or create a new one in the request. If the template has a validation rule, a new validation rule is always created for the promotion tier. When the promotion tier has been created, then you can:\n- [Update the validation rule](/api-reference/validation-rules/update-validation-rule),\n- [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment),\n- [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment).\n\nPromotion Tiers and Campaign Templates\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the DISCOUNT_COUPON type. You can use this template to create:\n- [Discount campaign](/api-reference/templates/create-campaign-from-template)\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template)\n\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -80442,7 +80494,7 @@
"Management"
],
"summary": "Delete Project",
- "description": "Deletes an existing project.\nThe users currently using the deleted project will be automatically logged out.\n 🚧 Sandbox Project\nThe sandbox project cannot be deleted.",
+ "description": "Deletes an existing project.\nThe users currently using the deleted project will be automatically logged out.\n\nSandbox Project\nThe sandbox project cannot be deleted.\n",
"parameters": [],
"security": [
{
@@ -80475,7 +80527,7 @@
"Management"
],
"summary": "Assign User",
- "description": "Assigns a user to a given project. The user must be an existing user in Voucherify.\n 🚧 Correct Use of Data\nTo avoid errors, use the role key with either id or login keys.",
+ "description": "Assigns a user to a given project. The user must be an existing user in Voucherify.\n\nCorrect Use of Data\nTo avoid errors, use the role key with either id or login keys.\n",
"parameters": [],
"security": [
{
@@ -80781,7 +80833,7 @@
"Management"
],
"summary": "List Campaign Templates",
- "description": "Lists all campaign templates available in the project.\n 👍 List Campaign Templates\n This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates).\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Lists all campaign templates available in the project.\n\nList Campaign Templates\nThis endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates).\n\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -80896,7 +80948,7 @@
"Management"
],
"summary": "Copy Campaign Template to a Project",
- "description": "Copies a campaign template to another project.\nThe resources, like validation rules or products, will not be copied to the destination project yet. When the template is used to create a new campaign or add a new promotion tier, the resources will be created in the destination project.\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Copies a campaign template to another project.\nThe resources, like validation rules or products, will not be copied to the destination project yet. When the template is used to create a new campaign or add a new promotion tier, the resources will be created in the destination project.\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -80958,7 +81010,7 @@
"Management"
],
"summary": "Create Stacking Rules",
- "description": "Overwrites the default stacking rules.\nIf new stacking rules have been created for the project earlier (e.g. in the user interface), it returns an error. Use [Update stacking rules](/api-reference/management/update-stacking-rules) endpoint to change the rules.\n 📘 Stacking rules documentation\n Read [the Stacking rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Overwrites the default stacking rules.\nIf new stacking rules have been created for the project earlier (e.g. in the user interface), it returns an error. Use [Update stacking rules](/api-reference/management/update-stacking-rules) endpoint to change the rules.\n\nStacking rules documentation\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n",
"parameters": [],
"security": [
{
@@ -81035,7 +81087,7 @@
"Management"
],
"summary": "List Stacking Rules",
- "description": "Lists all stacking rules.\nReturns always a list with one item.\nThis endpoint can be used to retrieve the default stacking rules. The default stacking rules do not have an ID that could be used with the [Get Stacking Rules](/api-reference/management/get-stacking-rules) or [Update Stacking Rules](/api-reference/management/update-stacking-rules) endpoints.\n 📘 Stacking Rules Documentation\n Read [the Stacking Rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Lists all stacking rules.\nReturns always a list with one item.\nThis endpoint can be used to retrieve the default stacking rules. The default stacking rules do not have an ID that could be used with the [Get Stacking Rules](/api-reference/management/get-stacking-rules) or [Update Stacking Rules](/api-reference/management/update-stacking-rules) endpoints.\n\nStacking Rules Documentation\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n",
"parameters": [],
"security": [
{
@@ -81132,7 +81184,7 @@
"Management"
],
"summary": "Get Stacking Rules",
- "description": "Retrieves the stacking rules for the project.\n 📘 Stacking Rules Documentation\n Read [the Stacking Rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Retrieves the stacking rules for the project.\n\nStacking Rules Documentation\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n",
"parameters": [],
"security": [
{
@@ -81200,7 +81252,7 @@
"Management"
],
"summary": "Update Stacking Rules",
- "description": "Updates the stacking rules.\nOnly the provided fields will be updated. However, if you update an array, the content of the array is overwritten. This means that if you want to add new values to an array and retain existing ones, you need to provide both the existing and new values in the request.\n 📘 Stacking Rules Documentation\n Read [the Stacking Rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Updates the stacking rules.\nOnly the provided fields will be updated. However, if you update an array, the content of the array is overwritten. This means that if you want to add new values to an array and retain existing ones, you need to provide both the existing and new values in the request.\n\nStacking Rules Documentation\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n",
"parameters": [],
"security": [
{
@@ -81278,7 +81330,7 @@
"Management"
],
"summary": "Delete Stacking Rules",
- "description": "Deletes permanently the current settings for the stacking rules.\nThe stacking rules are restored to default values.\n 📘 Stacking Rules Documentation\n Read [the Stacking Rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Deletes permanently the current settings for the stacking rules.\nThe stacking rules are restored to default values.\n\nStacking Rules Documentation\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n",
"parameters": [],
"security": [
{
@@ -81311,7 +81363,7 @@
"Management"
],
"summary": "Create Metadata Schema",
- "description": "Creates a new metadata (custom attribute) schema for a given resource.\nThe schema consists of a set of key-value pairs to customize Voucherify resources. \nYou can nest your object within a standard metadata schema, e.g. within a campaign or customer schema. However, your nested object cant include another nested object. The standard metadata schemas are:\n- Campaign\n- Voucher\n- Publication\n- Redemption\n- Product\n- Customer\n- Order\n- Order line item\n- Loyalty Tier\n- Promotion Tier\n- Earning rule\n- Reward\nUse this endpoint to define a metadata schema of a given resource for the first time. Once you configure a metadata schema for a given related_object, use the PUT [Update metadata schema](/api-reference/management/update-metadata-schema) endpoint to either update or add new metadata key-value pairs. For example, use this endpoint to define a metadata schema for related_object: campaign for the first time. If you want define a new metadata property for campaign, use the [PUT Update metadata schema](/api-reference/management/update-metadata-schema) endpoint.\n 📘 Metadata Documentation\n Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Creates a new metadata (custom attribute) schema for a given resource.\nThe schema consists of a set of key-value pairs to customize Voucherify resources. \nYou can nest your object within a standard metadata schema, e.g. within a campaign or customer schema. However, your nested object cant include another nested object. The standard metadata schemas are:\n- Campaign\n- Voucher\n- Publication\n- Redemption\n- Product\n- Customer\n- Order\n- Order line item\n- Loyalty Tier\n- Promotion Tier\n- Earning rule\n- Reward\nUse this endpoint to define a metadata schema of a given resource for the first time. Once you configure a metadata schema for a given related_object, use the PUT [Update metadata schema](/api-reference/management/update-metadata-schema) endpoint to either update or add new metadata key-value pairs. For example, use this endpoint to define a metadata schema for related_object: campaign for the first time. If you want define a new metadata property for campaign, use the [PUT Update metadata schema](/api-reference/management/update-metadata-schema) endpoint.\n\nMetadata Documentation\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -81374,7 +81426,7 @@
"Management"
],
"summary": "List Metadata Schemas",
- "description": "Lists all metadata schemas available in the project.\n 📘 Metadata Documentation\n Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Lists all metadata schemas available in the project.\n\nMetadata Documentation\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -81686,7 +81738,7 @@
"Management"
],
"summary": "Get Metadata Schema",
- "description": "Retrieves a metadata schema.\n 📘 Metadata Documentation\n Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Retrieves a metadata schema.\n\nMetadata Documentation\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -81773,7 +81825,7 @@
"Management"
],
"summary": "Update Metadata Schema",
- "description": "Updates a metadata schema.\nWith this request, you can:\n- Add a nonexistent attribute definition to the metadata schema.\n- Update an existing attribute definition by overwriting its current values.\nIn the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged.\nHowever, if you want to update a definition, you will have to add all its current key-value pairs as well. Only the pairs sent in the request are saved for this definition. This means that the key-value pairs that are not sent in a request are restored to default values. For example, if your definition has an array with values and it is not sent in an update request, the array values will be deleted.\n 👍 Additional Notes\n- You cannot change the type of an existing schema, e.g. from string to number.\n- You can remove a definition with this endpoint by providing deleted: true in the request. It will be moved to the Removed definitions section in the user interface. However, you cannot permanently remove a definition with this endpoint.\n 📘 Metadata Documentation\n Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Updates a metadata schema.\nWith this request, you can:\n- Add a nonexistent attribute definition to the metadata schema.\n- Update an existing attribute definition by overwriting its current values.\nIn the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged.\nHowever, if you want to update a definition, you will have to add all its current key-value pairs as well. Only the pairs sent in the request are saved for this definition. This means that the key-value pairs that are not sent in a request are restored to default values. For example, if your definition has an array with values and it is not sent in an update request, the array values will be deleted.\n\nAdditional Notes\n- You cannot change the type of an existing schema, e.g. from string to number.\n- You can remove a definition with this endpoint by providing deleted: true in the request. It will be moved to the Removed definitions section in the user interface. However, you cannot permanently remove a definition with this endpoint.\n\n\nMetadata Documentation\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -81836,7 +81888,7 @@
"Management"
],
"summary": "Delete Metadata Schema",
- "description": "Deletes permanently the metadata schema.\nIn standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are:\n- Campaign\n- Voucher\n- Publication\n- Redemption\n- Product\n- Customer\n- Order\n- Order line item\n- Loyalty Tier\n- Promotion Tier\n- Earning rule\n- Reward\nIf you want to delete only one definition, use the [Update Metadata Schema](/api-reference/management/update-metadata-schema) endpoint. In the request, provide the deleted: true pair in the definition object. This definition will be moved to Removed definitions.\nIf you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint.\n 🚧 Metadata Purging\nThis endpoint deletes permanently the metadata schemas only. However, it does not purge the metadata from associated entities, so the metadata added to those entities will remain.\nIf you want to purge metadata from the entities:\n1. Remove all the definitions you want to purge. You can do this either in Voucherify Project Settings > Metadata Schema tab or with the [Update Metadata Schema](/api-reference/management/update-metadata-schema) endpoint.\n2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema.\n3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities.\nNote:\n- This is an asynchronous action. You will be notified when it has been completed.\n- You cannot purge metadata for the Redemption and Publication schemas.\n4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify.\n 📘 Metadata Documentation\n Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Deletes permanently the metadata schema.\nIn standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are:\n- Campaign\n- Voucher\n- Publication\n- Redemption\n- Product\n- Customer\n- Order\n- Order line item\n- Loyalty Tier\n- Promotion Tier\n- Earning rule\n- Reward\nIf you want to delete only one definition, use the [Update Metadata Schema](/api-reference/management/update-metadata-schema) endpoint. In the request, provide the deleted: true pair in the definition object. This definition will be moved to Removed definitions.\nIf you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint.\n\nMetadata Purging\nThis endpoint deletes permanently the metadata schemas only. However, it does not purge the metadata from associated entities, so the metadata added to those entities will remain.\nIf you want to purge metadata from the entities:\n1. Remove all the definitions you want to purge. You can do this either in Voucherify Project Settings > Metadata Schema tab or with the [Update Metadata Schema](/api-reference/management/update-metadata-schema) endpoint.\n2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema.\n3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities.\nNote:\n- This is an asynchronous action. You will be notified when it has been completed.\n- You cannot purge metadata for the Redemption and Publication schemas.\n4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify.\n\n\nMetadata Documentation\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -81869,7 +81921,7 @@
"Management"
],
"summary": "Create Custom Event Schema",
- "description": "Creates a custom event schema.\nThe properties object is required, but it can be empty, however. This object is for optional custom properties (metadata).\n 📘 Custom Event Documentation\n Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Creates a custom event schema.\nThe properties object is required, but it can be empty, however. This object is for optional custom properties (metadata).\n\nCustom Event Documentation\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n",
"parameters": [],
"security": [
{
@@ -81924,7 +81976,7 @@
"Management"
],
"summary": "List Custom Event Schemas",
- "description": "Lists all custom event schemas available in the project.\n 📘 Custom Event Documentation\n Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Lists all custom event schemas available in the project.\n\nCustom Event Documentation\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n",
"parameters": [],
"security": [
{
@@ -82012,7 +82064,7 @@
"Management"
],
"summary": "Get Custom Event Schema",
- "description": "Retrieves a custom event schema.\n 📘 Custom Event Documentation\n Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Retrieves a custom event schema.\n\nCustom Event Documentation\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n",
"parameters": [],
"security": [
{
@@ -82055,7 +82107,7 @@
"Management"
],
"summary": "Update Custom Event Schema",
- "description": "Updates a custom event schema.\nWith this request, you can:\n- Add a nonexistent property to a custom event schema.\n- Update an existing property.\nIn the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged.\n 👍 Additional Notes\n- You can change the type of an existing property, e.g. from string to number.\n- You can remove a custom property with this endpoint by providing deleted: true in the request. However, you cannot permanently remove an event definition or its property with this endpoint.\n 📘 Custom Event Documentation\n Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Updates a custom event schema.\nWith this request, you can:\n- Add a nonexistent property to a custom event schema.\n- Update an existing property.\nIn the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged.\n\nAdditional Notes\n- You can change the type of an existing property, e.g. from string to number.\n- You can remove a custom property with this endpoint by providing deleted: true in the request. However, you cannot permanently remove an event definition or its property with this endpoint.\n\n\nCustom Event Documentation\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n",
"parameters": [],
"security": [
{
@@ -82119,7 +82171,7 @@
"Management"
],
"summary": "Delete Custom Event Schema",
- "description": "Deletes permanently the custom event schema with its custom properties (metadata).\n 📘 Custom Event Documentation\n Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Deletes permanently the custom event schema with its custom properties (metadata).\n\nCustom Event Documentation\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n",
"parameters": [],
"security": [
{
@@ -82152,7 +82204,7 @@
"Management"
],
"summary": "Create Webhook",
- "description": "Creates a new webhook configuration.\n 📘 Webhook Documentation\n Read [Webhooks v2024-01-01](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Creates a new webhook configuration.\n\nWebhook Documentation\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -82203,7 +82255,7 @@
"Management"
],
"summary": "List Webhooks",
- "description": "Lists all webhook configurations for the project.\n 📘 Webhook Documentation\n Read [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Lists all webhook configurations for the project.\n\nWebhook Documentation\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -82319,7 +82371,7 @@
"Management"
],
"summary": "Get Webhook",
- "description": "Retrieves a webhook configuration.\n 📘 Webhook Documentation\n Read [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Retrieves a webhook configuration.\n\nWebhook Documentation\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -82360,7 +82412,7 @@
"Management"
],
"summary": "Update Webhook",
- "description": "Updates a webhook configuration.\nThe events listed in the request are overwritten. If you want to add more events, provide also the events that are already in the webhook configuration.\n 📘 Webhook Documentation\n Read [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Updates a webhook configuration.\nThe events listed in the request are overwritten. If you want to add more events, provide also the events that are already in the webhook configuration.\n\nWebhook Documentation\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -82411,7 +82463,7 @@
"Management"
],
"summary": "Delete Webhook",
- "description": "Deletes a webhook configuration.\n 📘 Webhook Documentation\n Read [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Deletes a webhook configuration.\n\nWebhook Documentation\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -82444,7 +82496,7 @@
"Management"
],
"summary": "Create Brand",
- "description": "Creates a new brand configuration.\nYou can have only one brand configured for a project.\n 📘 White Labelling\n The white labelling settings which can be found in Project Settings > Brand Details and which are available only for Enterprise clients as a separate service can be configured only in the user interface.",
+ "description": "Creates a new brand configuration.\nYou can have only one brand configured for a project.\n\nWhite Labelling\nThe white labelling settings which can be found in Project Settings > Brand Details and which are available only for Enterprise clients as a separate service can be configured only in the user interface.\n",
"parameters": [],
"security": [
{
@@ -82663,7 +82715,7 @@
"Management"
],
"summary": "Update Brand",
- "description": "Updates a brand configuration.\nOnly the fields sent in the request will be updated. The fields omitted in the request will remain unchanged.\n 📘 White Labelling\n The white labelling settings which can be found in Project Settings > Brand Details and which are available only for Enterprise clients as a separate service can be configured only in the user interface.",
+ "description": "Updates a brand configuration.\nOnly the fields sent in the request will be updated. The fields omitted in the request will remain unchanged.\n\nWhite Labelling\nThe white labelling settings which can be found in Project Settings > Brand Details and which are available only for Enterprise clients as a separate service can be configured only in the user interface.\n",
"parameters": [],
"security": [
{
@@ -82747,7 +82799,7 @@
"Client-side"
],
"summary": "Check Eligibility (client-side)",
- "description": "Generate a list of redeemables that are applicable in the context of the customer and order.\nThe new qualifications method is an improved version of [Campaign Qualifications](/api-reference/campaigns/examine-campaign-qualification), [Voucher Qualifications](/api-reference/vouchers/examine-voucher-qualification) API requests. The new qualification method introduces the following improvements:\n- Qualification results are returned faster\n- No limit on the number of returned redeemables\n- Introduces new qualification scenarios, not available in the previous version\n 👍 Scenario Guide\n Read our dedicated guide to learn about some use cases this endpoint can cover [here](/guides/checking-eligibility).\n# Paging \nThe Voucherify Qualifications API request will return to you all of the redeemables available for the customer in batches of up to 50 redeemables per page. To get the next batch of redeemables, you need to use the starting_after cursor.\nTo process of paging the redeemables works in the following manner:\n- You send the first API request for Qualifications without the starting_after parameter.\n- The response will contain a parameter named has_more. If the parameters value is set to true, then more redeemables are available.\n- Get the value of the created_at parameter of the last returned redeemable. The value of this parameter will be used as a cursor to retrieve the next page of redeemables.\n- Send another API request for Qualification with the starting_after parameter set to the value taken from the created_at parameter from the last returned redeemable.\n- Voucherify will return the next page of redeemables.\n- If the has_more parameter is set to true, apply steps 3-5 to get the next page of redeemables.\n# Caching\nQualification has a 5-minute cache for the returned results. If you change your campaign settings or validation rules, the changes will apply to qualification results after the cache refreshes.",
+ "description": "Generate a list of redeemables that are applicable in the context of the customer and order.\nThe new qualifications method is an improved version of [Campaign Qualifications](/api-reference/campaigns/examine-campaign-qualification), [Voucher Qualifications](/api-reference/vouchers/examine-voucher-qualification) API requests. The new qualification method introduces the following improvements:\n- Qualification results are returned faster\n- No limit on the number of returned redeemables\n- Introduces new qualification scenarios, not available in the previous version\n\nScenario Guide\nRead our dedicated guide to learn about some use cases this endpoint can cover [here](/guides/checking-eligibility).\n\n# Paging \nThe Voucherify Qualifications API request will return to you all of the redeemables available for the customer in batches of up to 50 redeemables per page. To get the next batch of redeemables, you need to use the starting_after cursor.\nTo process of paging the redeemables works in the following manner:\n- You send the first API request for Qualifications without the starting_after parameter.\n- The response will contain a parameter named has_more. If the parameters value is set to true, then more redeemables are available.\n- Get the value of the created_at parameter of the last returned redeemable. The value of this parameter will be used as a cursor to retrieve the next page of redeemables.\n- Send another API request for Qualification with the starting_after parameter set to the value taken from the created_at parameter from the last returned redeemable.\n- Voucherify will return the next page of redeemables.\n- If the has_more parameter is set to true, apply steps 3-5 to get the next page of redeemables.\n# Caching\nQualification has a 5-minute cache for the returned results. If you change your campaign settings or validation rules, the changes will apply to qualification results after the cache refreshes.",
"parameters": [],
"security": [
{
@@ -83026,7 +83078,7 @@
"Client-side"
],
"summary": "Redeem Stackable Discounts (client-side)",
- "description": "This method is accessible through public keys which you can use in client side requests coming from mobile and web browser applications.\n# How API returns calculated discounts and order amounts in the response\nIn the table below, you can see the logic the API follows to calculate discounts and amounts:\n\n\n 📘 Rollbacks\n You cant roll back a child redemption. When you call rollback on a stacked redemption, all child redemptions will be rolled back. You need to refer to a parent redemption ID in your [rollback request](/api-reference/redemptions/rollback-stackable-redemptions).",
+ "description": "This method is accessible through public keys which you can use in client side requests coming from mobile and web browser applications.\n# How API returns calculated discounts and order amounts in the response\nIn the table below, you can see the logic the API follows to calculate discounts and amounts:\n\n\n\nRollbacks\nYou cant roll back a child redemption. When you call rollback on a stacked redemption, all child redemptions will be rolled back. You need to refer to a parent redemption ID in your [rollback request](/api-reference/redemptions/rollback-stackable-redemptions).\n",
"parameters": [
{
"$ref": "#/components/parameters/origin"
diff --git a/reference/readonly-sdks/python/OpenAPI.json b/reference/readonly-sdks/python/OpenAPI.json
index e5fea9847..79f1a6db8 100644
--- a/reference/readonly-sdks/python/OpenAPI.json
+++ b/reference/readonly-sdks/python/OpenAPI.json
@@ -52110,7 +52110,7 @@
"Publications"
],
"summary": "Create Publication with GET",
- "description": "This method selects vouchers that are suitable for publication, adds a publish entry and returns the publication.\nA voucher is suitable for publication when its active and hasnt been published yet.\n ❗️ Limited access\n Access to this endpoint is limited. This endpoint is designed for specific integrations and the API keys need to be configured to access this endpoint. Navigate to the **Dashboard** → **Project Settings** → **General** → **Integration Keys** to set up a pair of API keys and use them to send the request. \n 🚧 Clearly define the source of the voucher\n You must clearly define which source you want to publish the voucher code from. It can either be a code from a campaign or a specific voucher identified by a code. \n 🚧 Publish multiple vouchers\n This endpoint does not support the publishing of multiple vouchers from a single campaign. In case you want to publish multiple vouchers within a single publication, you need to use a [dedicated endpoint](/api-reference/publications/create-publication). \n 📘 Auto-update campaign\n In case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use an **auto-update** campaign. \n# Example Request \n \n ❗️ Required \n Query param voucher OR campaign MUST be filled out. If you provide both, campaign param will be skipped.",
+ "description": "This method selects vouchers that are suitable for publication, adds a publish entry and returns the publication.\nA voucher is suitable for publication when its active and hasnt been published yet.\n\nLimited access\nAccess to this endpoint is limited. This endpoint is designed for specific integrations and the API keys need to be configured to access this endpoint. Navigate to the **Dashboard** → **Project Settings** → **General** → **Integration Keys** to set up a pair of API keys and use them to send the request.\n\n\nClearly define the source of the voucher\nYou must clearly define which source you want to publish the voucher code from. It can either be a code from a campaign or a specific voucher identified by a code.\n\n\nPublish multiple vouchers\nThis endpoint does not support the publishing of multiple vouchers from a single campaign. In case you want to publish multiple vouchers within a single publication, you need to use a [dedicated endpoint](/api-reference/publications/create-publication).\n\n\nAuto-update campaign\nIn case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use an **auto-update** campaign.\n\n# Example Request \n \n\nRequired\nQuery param voucher OR campaign MUST be filled out. If you provide both, campaign param will be skipped.\n",
"parameters": [
{
"schema": {
@@ -52275,7 +52275,7 @@
"Qualifications"
],
"summary": "Check Eligibility",
- "description": "\n 🚧 The Qualifications endpoint ignores the rules checking:\n \n - Limit of total redeemed discount amount per campaign\n - Limit of total redemptions count per campaign\n - Redemptions per customer\n - Redemptions per customer in a campaign\n- Total amount before discount \nGenerate a list of redeemables that are applicable in the context of the customer and order.\nThe new qualifications method is an improved version of [Campaign Qualifications](/api-reference/campaigns/examine-campaign-qualification), [Voucher Qualifications](/api-reference/vouchers/examine-voucher-qualification) API requests. The new qualification method introduces the following improvements:\n- Qualification results are returned faster\n- No limit on the number of returned redeemables\n- Introduces new qualification scenarios, not available in the previous version\n 👍 Scenario Guide\n Read [the dedicated guide](/guides/checking-eligibility) to learn about some use cases this endpoint can cover.\n# Paging \nThe Voucherify Qualifications API request will return to you all of the redeemables available for the customer in batches of up to 50 redeemables per page. To get the next batch of redeemables, you need to use the starting_after cursor.\nTo process of paging the redeemables works in the following manner:\n- You send the first API request for Qualifications without the starting_after parameter.\n- The response will contain a parameter named has_more. If the parameters value is set to true, then more redeemables are available.\n- Get the value of the created_at parameter of the last returned redeemable. The value of this parameter will be used as a cursor to retrieve the next page of redeemables.\n- Send another API request for Qualification with the starting_after parameter set to the value taken from the created_at parameter from the last returned redeemable.\n- Voucherify will return the next page of redeemables.\n- If the has_more parameter is set to true, apply steps 3-5 to get the next page of redeemables.\n# Caching\nQualification has a 5-minute cache for the returned results. If you change your campaign settings or validation rules, the changes will apply to qualification results after the cache refreshes.",
+ "description": "\n\nThe Qualifications endpoint ignores the rules checking:\n- Limit of total redeemed discount amount per campaign\n- Limit of total redemptions count per campaign\n- Redemptions per customer\n- Redemptions per customer in a campaign\n- Total amount before discount\n\nGenerate a list of redeemables that are applicable in the context of the customer and order.\nThe new qualifications method is an improved version of [Campaign Qualifications](/api-reference/campaigns/examine-campaign-qualification), [Voucher Qualifications](/api-reference/vouchers/examine-voucher-qualification) API requests. The new qualification method introduces the following improvements:\n- Qualification results are returned faster\n- No limit on the number of returned redeemables\n- Introduces new qualification scenarios, not available in the previous version\n\nScenario Guide\nRead [the dedicated guide](/guides/checking-eligibility) to learn about some use cases this endpoint can cover.\n\n# Paging \nThe Voucherify Qualifications API request will return to you all of the redeemables available for the customer in batches of up to 50 redeemables per page. To get the next batch of redeemables, you need to use the starting_after cursor.\nTo process of paging the redeemables works in the following manner:\n- You send the first API request for Qualifications without the starting_after parameter.\n- The response will contain a parameter named has_more. If the parameters value is set to true, then more redeemables are available.\n- Get the value of the created_at parameter of the last returned redeemable. The value of this parameter will be used as a cursor to retrieve the next page of redeemables.\n- Send another API request for Qualification with the starting_after parameter set to the value taken from the created_at parameter from the last returned redeemable.\n- Voucherify will return the next page of redeemables.\n- If the has_more parameter is set to true, apply steps 3-5 to get the next page of redeemables.\n# Caching\nQualification has a 5-minute cache for the returned results. If you change your campaign settings or validation rules, the changes will apply to qualification results after the cache refreshes.",
"parameters": [],
"security": [
{
@@ -53824,7 +53824,7 @@
"Redemptions"
],
"summary": "Redeem Stackable Discounts",
- "description": "In the table below, you can see the logic the API follows to calculate discounts and amounts:\n\n\nAPI keys with a Merchant role cant use this endpoint.\n 📘 Rollbacks\n You cant roll back a child redemption. When you call rollback on a stacked redemption, all child redemptions will be rolled back. You need to refer to a parent redemption ID in your [rollback request](/api-reference/redemptions/rollback-stackable-redemptions). \n 📘 Also available on client-side\n This method is also accessible through public keys which you can use in client-side apps: mobile and web browser apps. Go to the dedicated [endpoint](/api-reference/client-side/redeem-stackable-discounts-client-side) to learn more.",
+ "description": "In the table below, you can see the logic the API follows to calculate discounts and amounts:\n\n\nAPI keys with a Merchant role cant use this endpoint.\n\nRollbacks\nYou cant roll back a child redemption. When you call rollback on a stacked redemption, all child redemptions will be rolled back. You need to refer to a parent redemption ID in your [rollback request](/api-reference/redemptions/rollback-stackable-redemptions).\n\n\nAlso available on client-side\nThis method is also accessible through public keys which you can use in client-side apps: mobile and web browser apps. Go to the dedicated [endpoint](/api-reference/client-side/redeem-stackable-discounts-client-side) to learn more.\n",
"parameters": [],
"security": [
{
@@ -54153,7 +54153,7 @@
"Vouchers"
],
"summary": "Generate Random Code",
- "description": "Create a generic (standalone) vouchers. You can choose to create a GIFT_VOUCHER, a DISCOUNT_VOUCHER, or a LOYALTY_CARD. \nWhen you create a new voucher, you can specify a type to create it.\nCreating a new voucher will create a new generic (standalone) vouchers if no campaign name or campaign_id is provided. However, if an ID or name of a campaign with the type set to STANDALONE is provided, the voucher will be added to such campaign. In case of the loyalty card, a campaign name is required.\nYou can optionally use the code parameter to define a specific code or the code_config parameter to design rules for Voucherify API to create a random code. If neither of the two parameters are passed, then a random code is generated by the Voucherify API.\nThis method will return an error when trying to create a voucher that already exists.\n🚧 Standalone Vouchers and Campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. The vouchers created with POST Create voucher and POST Generate random code endpoints do not have a campaign attached, so the values for campaign and campaign_id are null.\nTo create a generic (standalone) voucher with a type: STANDALONE, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.",
+ "description": "Create a generic (standalone) vouchers. You can choose to create a GIFT_VOUCHER, a DISCOUNT_VOUCHER, or a LOYALTY_CARD. \nWhen you create a new voucher, you can specify a type to create it.\nCreating a new voucher will create a new generic (standalone) vouchers if no campaign name or campaign_id is provided. However, if an ID or name of a campaign with the type set to STANDALONE is provided, the voucher will be added to such campaign. In case of the loyalty card, a campaign name is required.\nYou can optionally use the code parameter to define a specific code or the code_config parameter to design rules for Voucherify API to create a random code. If neither of the two parameters are passed, then a random code is generated by the Voucherify API.\nThis method will return an error when trying to create a voucher that already exists.\n\nStandalone Vouchers and Campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. The vouchers created with POST Create voucher and POST Generate random code endpoints do not have a campaign attached, so the values for campaign and campaign_id are null.\nTo create a generic (standalone) voucher with a type: STANDALONE, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.\n",
"parameters": [],
"security": [
{
@@ -55775,7 +55775,7 @@
"Vouchers"
],
"summary": "Create Voucher",
- "description": "Create a generic (standalone) voucher or a voucher in a campaign. You can choose to create a GIFT_VOUCHER, a DISCOUNT_VOUCHER, or a LOYALTY_CARD. The code path parameter can use all letters of the English alphabet, Arabic numerals and special characters.\nWhen you create a new voucher, you can specify a type to create it.\nIf no campaign name or campaign_id is provided, the new voucher will be a generic (standalone) one. However, if an ID or name of a campaign with the type set to STANDALONE is provided, the voucher will be added to this campaign. For a loyalty card, a campaign name or ID is required.\n🚧 Standalone Vouchers and Campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers created through The vouchers created with POST Create voucher and POST Generate random code endpoints do not have a campaign attached, so the values for campaign and campaign_id are null.\nTo create a generic (standalone) voucher with a type: STANDALONE, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.",
+ "description": "Create a generic (standalone) voucher or a voucher in a campaign. You can choose to create a GIFT_VOUCHER, a DISCOUNT_VOUCHER, or a LOYALTY_CARD. The code path parameter can use all letters of the English alphabet, Arabic numerals and special characters.\nWhen you create a new voucher, you can specify a type to create it.\nIf no campaign name or campaign_id is provided, the new voucher will be a generic (standalone) one. However, if an ID or name of a campaign with the type set to STANDALONE is provided, the voucher will be added to this campaign. For a loyalty card, a campaign name or ID is required.\n\nStandalone Vouchers and Campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers created through The vouchers created with POST Create voucher and POST Generate random code endpoints do not have a campaign attached, so the values for campaign and campaign_id are null.\nTo create a generic (standalone) voucher with a type: STANDALONE, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.\n",
"parameters": [],
"security": [
{
@@ -56282,7 +56282,7 @@
"Vouchers"
],
"summary": "Enable Voucher",
- "description": "There are various times when youll want to manage a vouchers accessibility. This can be done by two API methods for managing the voucher state - *enable* and *disable*. \n___\nThe method sets the voucher state to **active**. The voucher can be redeemed - only if the redemption occurs after the start date and the voucher is not expired.",
+ "description": "The method sets the voucher state to **active**. The voucher can be redeemed - only if the redemption occurs after the start date and the voucher is not expired.",
"parameters": [],
"security": [
{
@@ -56389,7 +56389,7 @@
"Vouchers"
],
"summary": "Disable Voucher",
- "description": "There are various times when youll want to manage a vouchers accessibility. This can be done by two API methods for managing the voucher state - *enable* and *disable*. \n___\nThis method sets the voucher state to **inactive**. The voucher cannot be redeemed.",
+ "description": "This method sets the voucher state to **inactive**. The voucher cannot be redeemed.",
"parameters": [],
"security": [
{
@@ -56982,7 +56982,7 @@
"Vouchers"
],
"summary": "Import Vouchers",
- "description": "Import generic (standalone) vouchers and gift cards into the repository.\nYou can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. \n Also, the request can include up to **10 MB** of data.\n 📘 Important notes\n - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z.\n - Custom code attributes (not supported by-default) need to be added as code **metadata**.\n - You **cannot import the same codes** to a single Voucherify Project.\nAny parameters not provided in the payload will be left blank or null.\nFor both **standalone discount vouchers and gift cards**, you can import the following fields: \n- code\n- category\n- active\n- type\n- start_date\n- expiration_date\n- redemption.quantity\n- additional_info\n- metadata\nFor **gift cards**, you can also import the following field:\n- gift.amount\nFor **discount vouchers**, you can import the discount object. The object will slightly vary depending on the type of discount. Each discount type **requires** the type to be defined in the import.\n\n\nFields other than the ones listed above wont be imported. Even if provided, they will be silently skipped.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).\n🚧 Standalone Vouchers and Campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers imported through the dashboard in the Vouchers section or through the API do not have a campaign attached, so the values for campaign and campaign_id are null.\nTo create a generic (standalone) voucher with a type: STANDALONE, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.",
+ "description": "Import generic (standalone) vouchers and gift cards into the repository.\nYou can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. \n Also, the request can include up to **10 MB** of data.\n\nImportant notes\n- **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z.\n- Custom code attributes (not supported by-default) need to be added as code **metadata**.\n- You **cannot import the same codes** to a single Voucherify Project.\n\nAny parameters not provided in the payload will be left blank or null.\nFor both **standalone discount vouchers and gift cards**, you can import the following fields: \n- code\n- category\n- active\n- type\n- start_date\n- expiration_date\n- redemption.quantity\n- additional_info\n- metadata\nFor **gift cards**, you can also import the following field:\n- gift.amount\nFor **discount vouchers**, you can import the discount object. The object will slightly vary depending on the type of discount. Each discount type **requires** the type to be defined in the import.\n\n\nFields other than the ones listed above wont be imported. Even if provided, they will be silently skipped.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).\n\nStandalone Vouchers and Campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers imported through the dashboard in the Vouchers section or through the API do not have a campaign attached, so the values for campaign and campaign_id are null.\nTo create a generic (standalone) voucher with a type: STANDALONE, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.\n",
"parameters": [],
"security": [
{
@@ -57255,7 +57255,7 @@
"Vouchers"
],
"summary": "Import Vouchers using CSV",
- "description": "Import generic (standalone) vouchers into the repository using a CSV file.\nThe CSV file has to include headers in the first line. All properties listed in the file headers that cannot be mapped to standard voucher fields will be added to the metadata object.\nYou can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. \n Also, the request can include a max. **10 MB** CSV file.\nYou can find an example CSV file [here](/build/discount-code-import).\n___\n 📘 Standard voucher fields mapping\n - Go to the [import vouchers](/api-reference/vouchers/import-vouchers) endpoint to see all standard CSV fields description (body params section).\n - Supported CSV file headers: Code,Voucher Type,Value,Discount Type,Category,Start Date,Expiration Date,Redemption Limit,Redeemed Quantity, Redeemed Amount,Active,Additional Info,Custom Metadata Property Name\n- **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. \n - YYYY-MM-DD\n - YYYY-MM-DDTHH\n - YYYY-MM-DDTHH:mm\n - YYYY-MM-DDTHH:mm:ss\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ss.SSSZ\n - Custom code attributes (not supported by-default) need to be added as code **metadata**.\n - You **cannot import the same codes** to a single Voucherify project.\n - You can, however, upload the same codes to update them.\n 📘 Categories\n In the structure representing your data, you can define a category that the voucher belongs to. You can later use the category of a voucher to group and search by specific criteria in the Dashboard and using the [List Vouchers](/api-reference/vouchers/list-vouchers) endpoint.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).\nYou can pass the webhooks_enable true parameter to trigger a webhook sendout for created or updated vouchers. Configure the [respective webhooks](/api-reference/introduction-to-webhooks) in Project settings. For updated webhooks, a webhook is sent even if the voucher hasnt been changed in the CSV file.\n🚧 Generic (standalone) vouchers and campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers imported through the dashboard in the Vouchers section or through the API do not have a campaign attached, so the values for campaign and campaign_id are null.",
+ "description": "Import generic (standalone) vouchers into the repository using a CSV file.\nThe CSV file has to include headers in the first line. All properties listed in the file headers that cannot be mapped to standard voucher fields will be added to the metadata object.\nYou can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. \n Also, the request can include a max. **10 MB** CSV file.\nYou can find an example CSV file [here](/build/discount-code-import).\n___\n\nStandard voucher fields mapping\n- Go to the [import vouchers](/api-reference/vouchers/import-vouchers) endpoint to see all standard CSV fields description (body params section).\n- Supported CSV file headers: Code,Voucher Type,Value,Discount Type,Category,Start Date,Expiration Date,Redemption Limit,Redeemed Quantity, Redeemed Amount,Active,Additional Info,Custom Metadata Property Name\n- **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z.\n - YYYY-MM-DD\n - YYYY-MM-DDTHH\n - YYYY-MM-DDTHH:mm\n - YYYY-MM-DDTHH:mm:ss\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ss.SSSZ\n- Custom code attributes (not supported by-default) need to be added as code **metadata**.\n- You **cannot import the same codes** to a single Voucherify project.\n- You can, however, upload the same codes to update them.\n\n\nCategories\nIn the structure representing your data, you can define a category that the voucher belongs to. You can later use the category of a voucher to group and search by specific criteria in the Dashboard and using the [List Vouchers](/api-reference/vouchers/list-vouchers) endpoint.\n\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).\nYou can pass the webhooks_enable true parameter to trigger a webhook sendout for created or updated vouchers. Configure the [respective webhooks](/api-reference/introduction-to-webhooks) in Project settings. For updated webhooks, a webhook is sent even if the voucher hasnt been changed in the CSV file.\n\nGeneric (standalone) vouchers and campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers imported through the dashboard in the Vouchers section or through the API do not have a campaign attached, so the values for campaign and campaign_id are null.\n",
"parameters": [],
"security": [
{
@@ -57301,7 +57301,7 @@
"Vouchers"
],
"summary": "Update Vouchers in Bulk",
- "description": "Updates specific metadata parameters for each code, respectively, in one asynchronous operation.\nThe request can include up to **10 MB** of data.\nUpserts are not supported.\n 🚧 Currently, only **metadata** updates are supported.\nThe response returns a unique asynchronous action ID. Use this ID in the query paramater of the [GET Async Action](/api-reference/async-actions/get-async-action) endpoint to check, e.g.:\n- The status of your request (in queue, in progress, done, or failed)\n- Resources that failed to be updated\n- The report file with details about the update\nThis API request starts a process that affects Voucherify data in bulk. In the case of small jobs (like bulk update), the request is put into a queue and processed when every other bulk request placed in the queue prior to this request is finished.",
+ "description": "Updates specific metadata parameters for each code, respectively, in one asynchronous operation.\nThe request can include up to **10 MB** of data.\nUpserts are not supported.\n\nCurrently, only **metadata** updates are supported.\n\nThe response returns a unique asynchronous action ID. Use this ID in the query paramater of the [GET Async Action](/api-reference/async-actions/get-async-action) endpoint to check, e.g.:\n- The status of your request (in queue, in progress, done, or failed)\n- Resources that failed to be updated\n- The report file with details about the update\nThis API request starts a process that affects Voucherify data in bulk. In the case of small jobs (like bulk update), the request is put into a queue and processed when every other bulk request placed in the queue prior to this request is finished.",
"parameters": [],
"security": [
{
@@ -57451,7 +57451,7 @@
"Vouchers"
],
"summary": "Release Validation Session",
- "description": "Manually release a validation session that has been set up for the voucher. This method undoes the actions that are explained in the [Locking validation session](/guides/locking-validation-session) guide. \n 📘 Release session in the Dashboard\n You can also use the [Validations Manager](/optimize/validations-and-redemptions#sessions) in the Dashboard to unlock sessions.",
+ "description": "Manually release a validation session that has been set up for the voucher. This method undoes the actions that are explained in the [Locking validation session](/guides/locking-validation-session) guide. \n\nRelease session in the Dashboard\nYou can also use the [Validations Manager](/optimize/validations-and-redemptions#sessions) in the Dashboard to unlock sessions.\n",
"parameters": [],
"security": [
{
@@ -57473,7 +57473,7 @@
"Campaigns"
],
"summary": "Create Campaign",
- "description": "Method to create a batch of vouchers aggregated in one campaign. You can choose a variety of voucher types and define a unique pattern for generating codes. \n 📘 Global uniqueness\n All campaign codes are unique across the whole project. Voucherify will not allow you to generate 2 campaigns with the same coupon code. \n 🚧 Code generation status\n This is an asynchronous action; you cant read or modify a newly created campaign until the code generation is completed. See the creation_status field in the [campaign object](/api-reference/campaigns/campaign-object) description.",
+ "description": "Method to create a batch of vouchers aggregated in one campaign. You can choose a variety of voucher types and define a unique pattern for generating codes. \n\nGlobal uniqueness\nAll campaign codes are unique across the whole project. Voucherify will not allow you to generate 2 campaigns with the same coupon code.\n\n\nCode generation status\nThis is an asynchronous action; you cant read or modify a newly created campaign until the code generation is completed. See the creation_status field in the [campaign object](/api-reference/campaigns/campaign-object) description.\n",
"parameters": [],
"security": [
{
@@ -58694,7 +58694,7 @@
"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. \nFields other than the ones listed in the request body wont be modified. Even if provided, they will be silently skipped. \n 🚧 Vouchers will be affected\n This method will update vouchers aggregated in the campaign. It will affect all vouchers that are not published or redeemed yet.",
+ "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. \nFields other than the ones listed in the request body wont be modified. Even if provided, they will be silently skipped. \n\nVouchers will be affected\nThis method will update vouchers aggregated in the campaign. It will affect all vouchers that are not published or redeemed yet.\n",
"parameters": [],
"security": [
{
@@ -59305,7 +59305,7 @@
"Campaigns"
],
"summary": "Enable Campaign",
- "description": "There are various times when youll want to manage a campaigns accessibility. This can be done by two API methods for managing the campaign state - *enable* and *disable*. \nSets campaign state to **active**. The vouchers in this campaign can be redeemed - only if the redemption occurs after the start date of the campaign and voucher and the voucher and campaign are not expired.",
+ "description": "Sets campaign state to **active**. The vouchers in this campaign can be redeemed - only if the redemption occurs after the start date of the campaign and voucher and the voucher and campaign are not expired.",
"parameters": [],
"security": [
{
@@ -59350,7 +59350,7 @@
"Campaigns"
],
"summary": "Disable Campaign",
- "description": "There are various times when youll want to manage a campaigns accessibility. This can be done by two API methods for managing the campaign state - *enable* and *disable*. \nSets campaign state to **inactive**. The vouchers in this campaign can no longer be redeemed.",
+ "description": "Sets campaign state to **inactive**. The vouchers in this campaign can no longer be redeemed.",
"parameters": [],
"security": [
{
@@ -59395,7 +59395,7 @@
"Campaigns"
],
"summary": "List Campaign Transactions",
- "description": "Retrieves all transactions for the campaign with the given campaign ID or campaign name. The id filter denotes the unique transaction identifier.\n 🚧\n The endpoint works only for gift card and loyalty campaigns.",
+ "description": "Retrieves all transactions for the campaign with the given campaign ID or campaign name. The id filter denotes the unique transaction identifier.\n\nThe endpoint works only for gift card and loyalty campaigns.\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -59549,7 +59549,7 @@
}
],
"summary": "Export Campaign Transactions",
- "description": "Export transactions is an asynchronous process that generates a CSV file with the data about credit movements on all gift cards or point movements on all loyalty cards in a given campaign.\nTo export transactions:\n1. In the export request, use parameters to select which fields will be exported, in what order, and which data will be filtered.\n2. Use the returned id to track the export status with the [GET Export](/api-reference/exports/get-export) method.\n3. In the GET Export method, when the returned status field has the DONE value, the export file has been generated.\n4. Use the URL in the result property to download the file. You must be logged to your Voucherify account on a given cluster in the browser to be able to download the file.\nAn export request will almost always result in a single file being generated by the system. However, when the data volume is large, the system may split the results into multiple files.\nAn example export file can look as follows:\n\n\n 👍 Export Loyalty Campaign Transactions\n For loyalty campaigns, this method works in the same way the [POST Export Loyalty Campaign Transactions](/api-reference/loyalties/export-loyalty-campaign-transactions) does.",
+ "description": "Export transactions is an asynchronous process that generates a CSV file with the data about credit movements on all gift cards or point movements on all loyalty cards in a given campaign.\nTo export transactions:\n1. In the export request, use parameters to select which fields will be exported, in what order, and which data will be filtered.\n2. Use the returned id to track the export status with the [GET Export](/api-reference/exports/get-export) method.\n3. In the GET Export method, when the returned status field has the DONE value, the export file has been generated.\n4. Use the URL in the result property to download the file. You must be logged to your Voucherify account on a given cluster in the browser to be able to download the file.\nAn export request will almost always result in a single file being generated by the system. However, when the data volume is large, the system may split the results into multiple files.\nAn example export file can look as follows:\n\n\n\nExport Loyalty Campaign Transactions\nFor loyalty campaigns, this method works in the same way the [POST Export Loyalty Campaign Transactions](/api-reference/loyalties/export-loyalty-campaign-transactions) does.\n",
"requestBody": {
"description": "Specify the parameters for the transaction export.",
"content": {
@@ -59678,7 +59678,7 @@
"Campaigns"
],
"summary": "Get Campaign Summary",
- "description": "Returns data for campaign analytics, covering validations, redemptions, publications, and other details specific to a given campaign type.\nUse start_date and end_date to narrow down the data to specific periods.\n🚧 Campaigns created before 17 June 2025\nThis endpoint returns analytics data for campaigns that were created after 17 June 2025. Older campaigns return empty data.",
+ "description": "Returns data for campaign analytics, covering validations, redemptions, publications, and other details specific to a given campaign type.\nUse start_date and end_date to narrow down the data to specific periods.\n\nCampaigns created before 17 June 2025\nThis endpoint returns analytics data for campaigns that were created after 17 June 2025. Older campaigns return empty data.\n",
"parameters": [
{
"name": "start_date",
@@ -61979,7 +61979,7 @@
"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.\n# Pagination\n 🚧 Important!\n 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.\n# Filter Query\nThe filters query parameter allows for joining multiple parameters with logical operators. The syntax looks as follows:\n\n## Examples\n\n",
+ "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.\n# Pagination\n\nImportant!\nIf 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.\n\n# Filter Query\nThe filters query parameter allows for joining multiple parameters with logical operators. The syntax looks as follows:\n\n## Examples\n\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -62206,7 +62206,7 @@
"Publications"
],
"summary": "Create Publication",
- "description": "This method selects vouchers that are suitable for publication, adds a publish entry and returns the publication.\nA voucher is suitable for publication when its active and hasnt been published yet. \n 🚧 Clearly define the source of the voucher\n You must clearly define which source you want to publish the voucher code from. It can either be a code from a campaign or a specific voucher identified by a code. \n 🚧 Publish multiple vouchers\n In case you want to publish multiple vouchers within a single publication, you need to specify the campaign name and number of vouchers you want to publish. \n 📘 Auto-update campaign\n In case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use an **auto-update** campaign.",
+ "description": "This method selects vouchers that are suitable for publication, adds a publish entry and returns the publication.\nA voucher is suitable for publication when its active and hasnt been published yet. \n\nClearly define the source of the voucher\nYou must clearly define which source you want to publish the voucher code from. It can either be a code from a campaign or a specific voucher identified by a code.\n\n\nPublish multiple vouchers\nIn case you want to publish multiple vouchers within a single publication, you need to specify the campaign name and number of vouchers you want to publish.\n\n\nAuto-update campaign\nIn case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use an **auto-update** campaign.\n",
"parameters": [
{
"schema": {
@@ -64348,7 +64348,7 @@
"Redemptions"
],
"summary": "Rollback Redemption",
- "description": "Your business logic may include a case when you need to undo a redemption. You can revert a redemption by calling this API endpoint. This endpoint rolls back only single redemptions, meaning those that are not stacked. Stacked redemptions belong to a parent redemption. To roll back a parent redemption, including all of its individual redemptions, use the [POST Rollback Stackable Redemptions](/api-reference/redemptions/rollback-stackable-redemptions) \n🚧 \nYou can roll back a redemption up to 3 months back. \n # Effect \nThe operation \n- creates a rollback entry in vouchers redemption history (redemption.redemption_entries) and \n- gives 1 redemption back to the pool (decreases redeemed_quantity by 1). \n# Returned funds \nIn case of *gift card vouchers*, this method returns funds back according to the source redemption. In case of *loyalty card vouchers*, this method returns points back according to the source redemption.",
+ "description": "Your business logic may include a case when you need to undo a redemption. You can revert a redemption by calling this API endpoint. This endpoint rolls back only single redemptions, meaning those that are not stacked. Stacked redemptions belong to a parent redemption. To roll back a parent redemption, including all of its individual redemptions, use the [POST Rollback Stackable Redemptions](/api-reference/redemptions/rollback-stackable-redemptions) \n\nYou can roll back a redemption up to 3 months back.\n\n # Effect \nThe operation \n- creates a rollback entry in vouchers redemption history (redemption.redemption_entries) and \n- gives 1 redemption back to the pool (decreases redeemed_quantity by 1). \n# Returned funds \nIn case of *gift card vouchers*, this method returns funds back according to the source redemption. In case of *loyalty card vouchers*, this method returns points back according to the source redemption.",
"parameters": [
{
"schema": {
@@ -65035,7 +65035,7 @@
"Redemptions"
],
"summary": "Rollback Stackable Redemptions",
- "description": "Rollback a stackable redemption. When you roll back a stacked redemption, all child redemptions will be rolled back. Provide the parent redemption ID as the path parameter. However, you can use this endpoint to roll back a single redemption that does not have a parent, similarly to [POST Rollback redemption](/api-reference/redemptions/rollback-redemption).\n🚧 \n You can roll back a redemption up to 3 months back.",
+ "description": "Rollback a stackable redemption. When you roll back a stacked redemption, all child redemptions will be rolled back. Provide the parent redemption ID as the path parameter. However, you can use this endpoint to roll back a single redemption that does not have a parent, similarly to [POST Rollback redemption](/api-reference/redemptions/rollback-redemption).\n\nYou can roll back a redemption up to 3 months back.\n",
"parameters": [
{
"schema": {
@@ -65120,11 +65120,12 @@
"/v1/loyalties": {
"get": {
"operationId": "list-loyalty-programs",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Campaigns",
- "description": "Returns a list of your loyalty campaigns.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nReturns a list of your loyalty campaigns.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -65335,11 +65336,12 @@
},
"post": {
"operationId": "create-loyalty-program",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Create Loyalty Campaign",
- "description": "Creates a batch of [loyalty cards](/api-reference/loyalties/get-member) aggregated in a single loyalty campaign. It also allows you to define a custom codes pattern. \n 📘 Global uniqueness\n All codes are unique across the whole project. Voucherify wont allow to generate the same codes in any of your campaigns.\n 🚧 Asynchronous action!\n This is an asynchronous action, you cant read or modify a newly created campaign until the code generation is completed. See creation_status field in the [loyalty campaign object](/api-reference/loyalties/loyalty-campaign-object) description.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nCreates a batch of [loyalty cards](/api-reference/loyalties/get-member) aggregated in a single loyalty campaign. It also allows you to define a custom codes pattern. \n\nGlobal uniqueness\nAll codes are unique across the whole project. Voucherify wont allow to generate the same codes in any of your campaigns.\n\n\nAsynchronous action!\nThis is an asynchronous action, you cant read or modify a newly created campaign until the code generation is completed. See creation_status field in the [loyalty campaign object](/api-reference/loyalties/loyalty-campaign-object) description.\n",
"parameters": [],
"security": [
{
@@ -65544,11 +65546,12 @@
],
"get": {
"operationId": "get-loyalty-program",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Loyalty Campaign",
- "description": "Retrieve a specific loyalty campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve a specific loyalty campaign.",
"parameters": [],
"security": [
{
@@ -65651,11 +65654,12 @@
},
"put": {
"operationId": "update-loyalty-program",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Update Loyalty Campaign",
- "description": "Updates a loyalty program. \nFields other than those specified in the allowed request body payload wont be modified (even if provided they are silently skipped). Any parameters not provided will be left unchanged. \nThis method will update the [loyalty cards](/api-reference/loyalties/get-member) which have not been published or redeemed yet.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nUpdates a loyalty program. \nFields other than those specified in the allowed request body payload wont be modified (even if provided they are silently skipped). Any parameters not provided will be left unchanged. \nThis method will update the [loyalty cards](/api-reference/loyalties/get-member) which have not been published or redeemed yet.",
"parameters": [],
"security": [
{
@@ -65841,11 +65845,12 @@
},
"delete": {
"operationId": "delete-loyalty-program",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Delete Loyalty Campaign",
- "description": "Deletes a loyalty campaign and all related loyalty cards. This action cannot be undone. Also, it immediately removes any redemptions on loyalty cards.\nIf the force parameter is set to false or not set at all, the loyalty campaign and all related loyalty cards will be moved to [the bin](/api-reference/bin/list-bin-entries).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nDeletes a loyalty campaign and all related loyalty cards. This action cannot be undone. Also, it immediately removes any redemptions on loyalty cards.\nIf the force parameter is set to false or not set at all, the loyalty campaign and all related loyalty cards will be moved to [the bin](/api-reference/bin/list-bin-entries).",
"parameters": [
{
"schema": {
@@ -65897,11 +65902,12 @@
],
"get": {
"operationId": "list-members",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Members",
- "description": "Returns a list of your loyalty cards. The loyalty cards are sorted by creation date, with the most recent loyalty cards appearing first.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nReturns a list of your loyalty cards. The loyalty cards are sorted by creation date, with the most recent loyalty cards appearing first.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -66072,11 +66078,12 @@
},
"post": {
"operationId": "add-member",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Add Member",
- "description": "This method assigns a loyalty card to a customer. It selects a [loyalty card](/api-reference/vouchers/get-voucher) suitable for publication, adds a publish entry, and returns the published voucher. \nA voucher is suitable for publication when its active and hasnt been published yet. \n 📘 Auto-update campaign\n In case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use **auto-update** campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nThis method assigns a loyalty card to a customer. It selects a [loyalty card](/api-reference/vouchers/get-voucher) suitable for publication, adds a publish entry, and returns the published voucher. \nA voucher is suitable for publication when its active and hasnt been published yet. \n\nAuto-update campaign\nIn case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use **auto-update** campaign.\n",
"parameters": [],
"security": [
{
@@ -66241,11 +66248,12 @@
],
"get": {
"operationId": "get-member-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Member with campaign ID",
- "description": "Retrieves the loyalty card with the given member ID (i.e. voucher code).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieves the loyalty card with the given member ID (i.e. voucher code).",
"parameters": [],
"security": [
{
@@ -66337,11 +66345,12 @@
],
"get": {
"operationId": "get-member",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Member",
- "description": "Retrieve loyalty card with the given member ID (i.e. voucher code). \n 📘 Alternative endpoint\n This endpoint is an alternative to this [endpoint](/api-reference/loyalties/get-member-with-campaign-id). The URL was re-designed to allow you to retrieve loyalty card details without having to provide the campaignId as a path parameter.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve loyalty card with the given member ID (i.e. voucher code). \n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/get-member-with-campaign-id). The URL was re-designed to allow you to retrieve loyalty card details without having to provide the campaignId as a path parameter.\n",
"parameters": [],
"security": [
{
@@ -66433,11 +66442,12 @@
],
"get": {
"operationId": "list-campaign-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Campaign Pending Points",
- "description": "Lists all pending points that are currently assigned to all loyalty cards in a campaign. Once the points are added to the card, the entry is no longer returned.\n👍 Configuring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nLists all pending points that are currently assigned to all loyalty cards in a campaign. Once the points are added to the card, the entry is no longer returned.\n\nConfiguring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n",
"parameters": [
{
"schema": {
@@ -66641,11 +66651,12 @@
],
"get": {
"operationId": "list-member-pending-points-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Pending Points with campaign ID",
- "description": "Lists all pending points that are currently assigned to the loyalty card. Once the points are added to the card, the entry is no longer returned.\n👍 Configuring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nLists all pending points that are currently assigned to the loyalty card. Once the points are added to the card, the entry is no longer returned.\n\nConfiguring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n",
"parameters": [
{
"schema": {
@@ -66840,11 +66851,12 @@
],
"get": {
"operationId": "list-member-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Pending Points",
- "description": "\n 📘 Alternative endpoint\n This endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-member-pending-points-with-campaign-id). The URL was re-designed to list member pending points without having to provide the campaignId as a path parameter.\nLists all pending points that are currently assigned to the loyalty card. Once the points are added to the card, the entry is no longer returned.\n👍 Configuring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-member-pending-points-with-campaign-id). The URL was re-designed to list member pending points without having to provide the campaignId as a path parameter.\n\nLists all pending points that are currently assigned to the loyalty card. Once the points are added to the card, the entry is no longer returned.\n\nConfiguring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n",
"parameters": [
{
"schema": {
@@ -67048,11 +67060,12 @@
],
"post": {
"operationId": "activate-member-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Activate Member Pending Points",
- "description": "Activate manually the pending points and add them to the loyalty card. The pending points are determined by the pending point ID.\nOnce activated, the pending point entry with that ID is not listed by the endpoints: List member ([with campaign ID](/api-reference/loyalties/list-member-pending-points-with-campaign-id), [without campaign ID](/api-reference/loyalties/list-member-pending-points)), [List campaign pending points](/api-reference/loyalties/list-campaign-pending-points).\nThis **POST** method does not require a request body.\n👍 Configuring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nActivate manually the pending points and add them to the loyalty card. The pending points are determined by the pending point ID.\nOnce activated, the pending point entry with that ID is not listed by the endpoints: List member ([with campaign ID](/api-reference/loyalties/list-member-pending-points-with-campaign-id), [without campaign ID](/api-reference/loyalties/list-member-pending-points)), [List campaign pending points](/api-reference/loyalties/list-campaign-pending-points).\nThis **POST** method does not require a request body.\n\nConfiguring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n",
"parameters": [],
"security": [
{
@@ -67113,11 +67126,12 @@
],
"post": {
"operationId": "adjust-member-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Adjust Member Pending Points",
- "description": "Adjusts the pending points with a given ID. You can add or subtract the number of points.\n👍 Configuring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nAdjusts the pending points with a given ID. You can add or subtract the number of points.\n\nConfiguring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n",
"parameters": [],
"security": [
{
@@ -67198,11 +67212,12 @@
],
"post": {
"operationId": "cancel-member-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Cancel Member Pending Points",
- "description": "Cancel manually the pending points for the loyalty card. The pending points are determined by the pending point ID.\nOnce canceled, the pending point entry with that ID is not listed by the endpoints: List member ([with campaign ID](/api-reference/loyalties/list-member-pending-points-with-campaign-id), [without campaign ID](/api-reference/loyalties/list-member-pending-points)), [List campaign pending points](/api-reference/loyalties/list-campaign-pending-points).\nThis **POST** method does not require a request body and it returns an empty, 204, response.\n👍 Configuring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nCancel manually the pending points for the loyalty card. The pending points are determined by the pending point ID.\nOnce canceled, the pending point entry with that ID is not listed by the endpoints: List member ([with campaign ID](/api-reference/loyalties/list-member-pending-points-with-campaign-id), [without campaign ID](/api-reference/loyalties/list-member-pending-points)), [List campaign pending points](/api-reference/loyalties/list-campaign-pending-points).\nThis **POST** method does not require a request body and it returns an empty, 204, response.\n\nConfiguring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n",
"parameters": [],
"security": [
{
@@ -67240,11 +67255,12 @@
],
"get": {
"operationId": "list-member-activity-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Activity with campaign ID",
- "description": "Retrieves the list of activities for the given member ID related to a voucher and customer who is the holder of the voucher.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieves the list of activities for the given member ID related to a voucher and customer who is the holder of the voucher.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -67300,11 +67316,12 @@
],
"get": {
"operationId": "list-member-activity",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Activity",
- "description": "\n 📘 Alternative endpoint\n This endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-member-activity-with-campaign-id). The URL was re-designed to allow you to get member activities without having to provide the campaignId as a path parameter.\nRetrieves the list of activities for the given member ID related to a voucher and customer who is the holder of the voucher.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-member-activity-with-campaign-id). The URL was re-designed to allow you to get member activities without having to provide the campaignId as a path parameter.\n\nRetrieves the list of activities for the given member ID related to a voucher and customer who is the holder of the voucher.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -67369,11 +67386,12 @@
],
"post": {
"operationId": "update-loyalty-card-balance-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Adjust Loyalty Card Balance with campaign ID",
- "description": "This method adds or removes balance to an existing loyalty card that is assigned to a holder. The removal of points will consume the points that expire the soonest. \n >🚧 Async Action\n \n This is an async action. If you want to perform several add or remove loyalty card balance actions in a short time and their order matters, set up sufficient time-out between the calls.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nThis method adds or removes balance to an existing loyalty card that is assigned to a holder. The removal of points will consume the points that expire the soonest. \n \nAsync Action\nThis is an async action. If you want to perform several add or remove loyalty card balance actions in a short time and their order matters, set up sufficient time-out between the calls.\n",
"parameters": [],
"security": [
{
@@ -67461,11 +67479,12 @@
],
"post": {
"operationId": "update-loyalty-card-balance",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Adjust Loyalty Card Balance",
- "description": "This method gives adds or removes balance to an existing loyalty card that is assigned to a holder. The removal of points will consume the points that expire the soonest. \n >🚧 Async Action\n \n This is an async action. If you want to perform several add or remove loyalty card balance actions in a short time and their order matters, set up sufficient time-out between the calls.\n 📘 Alternative endpoint\n This endpoint is an alternative to this [endpoint](/api-reference/loyalties/adjust-loyalty-card-balance-with-campaign-id). The URL was re-designed to allow you to add or remove loyalty card balance without having to provide the campaignId as a path parameter.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nThis method gives adds or removes balance to an existing loyalty card that is assigned to a holder. The removal of points will consume the points that expire the soonest. \n \nAsync Action\nThis is an async action. If you want to perform several add or remove loyalty card balance actions in a short time and their order matters, set up sufficient time-out between the calls.\n\n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/adjust-loyalty-card-balance-with-campaign-id). The URL was re-designed to allow you to add or remove loyalty card balance without having to provide the campaignId as a path parameter.\n",
"parameters": [],
"security": [
{
@@ -67549,11 +67568,12 @@
],
"post": {
"operationId": "transfer-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Transfer Loyalty Points",
- "description": "Transfer points between different loyalty cards which have holders.\nProvide the campaign ID and the loyalty card ID you want the points to be transferred to as path parameters. In the request body, provide the loyalty cards you want the points to be transferred from and the number of points to transfer from each card.\nTransfer works only for loyalty cards that have holders, meaning the cards were published to customers.\nThe transferred points expire according to the target program expiration rules.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nTransfer points between different loyalty cards which have holders.\nProvide the campaign ID and the loyalty card ID you want the points to be transferred to as path parameters. In the request body, provide the loyalty cards you want the points to be transferred from and the number of points to transfer from each card.\nTransfer works only for loyalty cards that have holders, meaning the cards were published to customers.\nThe transferred points expire according to the target program expiration rules.",
"parameters": [],
"security": [
{
@@ -67669,11 +67689,12 @@
],
"get": {
"operationId": "list-loyalty-campaign-transactions",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Campaign Transactions",
- "description": "Retrieves all transactions for the campaign with the given campaign ID or campaign name.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieves all transactions for the campaign with the given campaign ID or campaign name.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -67816,6 +67837,7 @@
],
"post": {
"operationId": "export-loyalty-campaign-transactions",
+ "deprecated": true,
"tags": [
"Loyalties"
],
@@ -67827,7 +67849,7 @@
}
],
"summary": "Export Loyalty Campaign Transactions",
- "description": "Export transactions is an asynchronous process that generates a CSV file with the data about or point movements on all loyalty cards in a given campaign.\nTo export transactions:\n1. In the export request, use parameters to select which fields will be exported, in what order, and which data will be filtered.\n2. Use the returned id to track the export status with the [GET Export](/api-reference/exports/get-export) method.\n3. In the GET Export method, when the returned status field has the DONE value, the export file has been generated.\n4. Use the URL in the result property to download the file. You must be logged to your Voucherify account on a given cluster in the browser to be able to download the file.\nAn export request will almost always result in a single file being generated by the system. However, when the data volume is large, the system may split the results into multiple files.\nAn example export file can look as follows:\n\n\n 👍 Export Campaign Transactions\n This method works in the same way the [POST Export Campaign Transactions](/api-reference/campaigns/export-campaign-transactions) does, but it is limited to loyalty campaigns only. The POST Export Campaign Transactions method can also export gift card campaign transactions.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nExport transactions is an asynchronous process that generates a CSV file with the data about or point movements on all loyalty cards in a given campaign.\nTo export transactions:\n1. In the export request, use parameters to select which fields will be exported, in what order, and which data will be filtered.\n2. Use the returned id to track the export status with the [GET Export](/api-reference/exports/get-export) method.\n3. In the GET Export method, when the returned status field has the DONE value, the export file has been generated.\n4. Use the URL in the result property to download the file. You must be logged to your Voucherify account on a given cluster in the browser to be able to download the file.\nAn export request will almost always result in a single file being generated by the system. However, when the data volume is large, the system may split the results into multiple files.\nAn example export file can look as follows:\n\n\n\nExport Campaign Transactions\nThis method works in the same way the [POST Export Campaign Transactions](/api-reference/campaigns/export-campaign-transactions) does, but it is limited to loyalty campaigns only. The POST Export Campaign Transactions method can also export gift card campaign transactions.\n",
"requestBody": {
"description": "Specify the parameters for the transaction export.",
"content": {
@@ -67961,11 +67983,12 @@
],
"get": {
"operationId": "list-loyalty-card-transactions-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Card Transactions with campaign ID",
- "description": "Retrieve transaction data related to point movements for a specific loyalty card.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve transaction data related to point movements for a specific loyalty card.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -68326,11 +68349,12 @@
],
"get": {
"operationId": "list-loyalty-card-transactions",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Card Transactions",
- "description": "Retrieve transaction data related to point movements for a specific loyalty card.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve transaction data related to point movements for a specific loyalty card.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -68691,11 +68715,12 @@
],
"post": {
"operationId": "export-loyalty-card-transactions",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Export Loyalty Card Transactions",
- "description": "Export transactions that are associated with point movements on a loyalty card.\n\n\n",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nExport transactions that are associated with point movements on a loyalty card.\n\n\n",
"parameters": [],
"security": [
{
@@ -68834,11 +68859,12 @@
],
"post": {
"operationId": "export-loyalty-card-transactions-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Export Loyalty Card Transactions with campaign ID",
- "description": "Export transactions that are associated with point movements on a loyalty card.\n\n\n",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nExport transactions that are associated with point movements on a loyalty card.\n\n\n",
"parameters": [],
"security": [
{
@@ -68977,11 +69003,12 @@
],
"get": {
"operationId": "list-points-expiration",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Card Point Expiration",
- "description": "Retrieve loyalty point expiration buckets for a given loyalty card. Expired point buckets are not returned in this endpoint. You can use the [Exports API](/api-reference/exports/create-export) to retrieve a list of both ACTIVE and EXPIRED point buckets.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve loyalty point expiration buckets for a given loyalty card. Expired point buckets are not returned in this endpoint. You can use the [Exports API](/api-reference/exports/create-export) to retrieve a list of both ACTIVE and EXPIRED point buckets.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -69084,11 +69111,12 @@
],
"post": {
"operationId": "create-points-expiration-export",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Export Loyalty Campaign Point Expiration",
- "description": "Schedule the generation of a point expiration CSV file for a particular campaign. It can list point buckets, which can have an ACTIVE or EXPIRED status.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nSchedule the generation of a point expiration CSV file for a particular campaign. It can list point buckets, which can have an ACTIVE or EXPIRED status.",
"parameters": [],
"security": [
{
@@ -69252,11 +69280,12 @@
],
"get": {
"operationId": "list-earning-rules",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Earning Rules",
- "description": "Returns a list of all earning rules within a given campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nReturns a list of all earning rules within a given campaign.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -69818,11 +69847,12 @@
},
"post": {
"operationId": "create-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Create Earning Rule",
- "description": "Create earning rules for a loyalty campaign.\n 🚧 Maximum number of earning rules\n You can create up to 100 earning rules per project. The limit can be customized for clients with a single-tenant setup.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nCreate earning rules for a loyalty campaign.\n\nMaximum number of earning rules\nYou can create up to 100 earning rules per project. The limit can be customized for clients with a single-tenant setup.\n",
"parameters": [],
"security": [
{
@@ -70988,11 +71018,12 @@
],
"get": {
"operationId": "get-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Earning Rule",
- "description": "Retrieves an earning rule assigned to a campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieves an earning rule assigned to a campaign.",
"parameters": [],
"security": [
{
@@ -71267,11 +71298,12 @@
},
"put": {
"operationId": "update-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Update Earning Rule",
- "description": "Update an earning rule definition.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nUpdate an earning rule definition.",
"parameters": [],
"security": [
{
@@ -71376,11 +71408,12 @@
},
"delete": {
"operationId": "delete-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Delete Earning Rule",
- "description": "This method deletes an earning rule for a specific loyalty campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nThis method deletes an earning rule for a specific loyalty campaign.",
"parameters": [],
"security": [
{
@@ -71418,11 +71451,12 @@
],
"post": {
"operationId": "enable-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Enable Earning Rule",
- "description": "Enable an earning rule.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nEnable an earning rule.",
"parameters": [],
"security": [
{
@@ -71501,11 +71535,12 @@
],
"post": {
"operationId": "disable-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Disable Earning Rule",
- "description": "Disable an earning rule.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nDisable an earning rule.",
"parameters": [],
"security": [
{
@@ -71569,11 +71604,12 @@
],
"get": {
"operationId": "list-member-rewards",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Rewards",
- "description": "Retrieves the list of rewards that the given customer (identified by member_id, which is a loyalty card assigned to a particular customer) **can get in exchange for loyalty points**. \nYou can use the affordable_only parameter to limit the results to rewards that the customer can actually afford (only rewards whose price in points is not higher than the loyalty points balance on a loyalty card). \nPlease note that rewards that are disabled (i.e. set to Not Available in the Dashboard) for a given loyalty tier reward mapping will not be returned in this endpoint.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieves the list of rewards that the given customer (identified by member_id, which is a loyalty card assigned to a particular customer) **can get in exchange for loyalty points**. \nYou can use the affordable_only parameter to limit the results to rewards that the customer can actually afford (only rewards whose price in points is not higher than the loyalty points balance on a loyalty card). \nPlease note that rewards that are disabled (i.e. set to Not Available in the Dashboard) for a given loyalty tier reward mapping will not be returned in this endpoint.",
"parameters": [
{
"in": "query",
@@ -71817,11 +71853,12 @@
],
"get": {
"operationId": "get-reward-details",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Reward Details",
- "description": "Get reward details in the context of a loyalty campaign and reward assignment ID.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nGet reward details in the context of a loyalty campaign and reward assignment ID.",
"parameters": [],
"security": [
{
@@ -71921,11 +71958,12 @@
],
"get": {
"operationId": "list-reward-assignments-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Reward Assignments with campaign ID",
- "description": "Returns reward assignments from a given loyalty campaign.\n 📘 Alternative endpoint\n This endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-campaign-rewards). The URL was re-designed to be more contextual to the type of data returned in the response.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nReturns reward assignments from a given loyalty campaign.\n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-campaign-rewards). The URL was re-designed to be more contextual to the type of data returned in the response.\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -72117,11 +72155,12 @@
],
"get": {
"operationId": "list-reward-assignments-2",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Campaign Rewards",
- "description": "Returns active rewards from a given loyalty campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nReturns active rewards from a given loyalty campaign.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -72207,11 +72246,12 @@
},
"post": {
"operationId": "create-reward-assignment-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Create Loyalty Campaign Reward Assignment",
- "description": "Add rewards to a loyalty campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nAdd rewards to a loyalty campaign.",
"parameters": [],
"security": [
{
@@ -72322,11 +72362,12 @@
],
"get": {
"operationId": "get-reward-assignment-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Campaign Reward Assignments",
- "description": "Retrieve specific reward assignment.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve specific reward assignment.",
"parameters": [],
"security": [
{
@@ -72389,11 +72430,12 @@
],
"get": {
"operationId": "get-reward-assignment-2",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Campaign Reward Assignment",
- "description": "Retrieve specific reward assignment.\n 📘 Alternative endpoint\n This endpoint is an alternative to this [endpoint](/api-reference/loyalties/get-campaign-reward-assignments). ",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve specific reward assignment.\n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/get-campaign-reward-assignments).\n",
"parameters": [],
"security": [
{
@@ -72434,11 +72476,12 @@
},
"put": {
"operationId": "update-reward-assignment-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Update Campaign Reward Assignment",
- "description": "Updates rewards parameters, i.e. the points cost for the specific reward.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nUpdates rewards parameters, i.e. the points cost for the specific reward.",
"parameters": [],
"security": [
{
@@ -72500,11 +72543,12 @@
},
"delete": {
"operationId": "delete-reward-assignment-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Delete Campaign Reward Assignment",
- "description": "This method deletes a reward assignment for a particular loyalty campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nThis method deletes a reward assignment for a particular loyalty campaign.",
"parameters": [],
"security": [
{
@@ -72542,11 +72586,12 @@
],
"post": {
"operationId": "redeem-reward-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Redeem Reward with campaign ID",
- "description": "Exchange points from a loyalty card for a specified reward. This API method returns an assigned award in the response. It means that if a requesting customer gets a coupon code with a discount for the next order, that discount code will be visible in response as part of the reward object definition.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nExchange points from a loyalty card for a specified reward. This API method returns an assigned award in the response. It means that if a requesting customer gets a coupon code with a discount for the next order, that discount code will be visible in response as part of the reward object definition.",
"parameters": [],
"security": [
{
@@ -73981,11 +74026,12 @@
],
"post": {
"operationId": "redeem-reward",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Redeem Reward",
- "description": "\n 📘 Alternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/redeem-reward-with-campaign-id). The URL was re-designed to allow you to redeem a reward without having to provide the campaignId as a path parameter.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/redeem-reward-with-campaign-id). The URL was re-designed to allow you to redeem a reward without having to provide the campaignId as a path parameter.\n",
"parameters": [],
"security": [
{
@@ -74259,11 +74305,12 @@
],
"get": {
"operationId": "list-loyalty-tiers",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Tiers",
- "description": "Retrieve a list of loyalty tiers which were added to the loyalty program.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve a list of loyalty tiers which were added to the loyalty program.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -74415,11 +74462,12 @@
},
"post": {
"operationId": "create-in-bulk-loyalty-tiers",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Create loyalty tiers",
- "description": "Creates loyalty tiers for desired campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nCreates loyalty tiers for desired campaign.",
"parameters": [],
"security": [
{
@@ -74474,11 +74522,12 @@
],
"get": {
"operationId": "get-loyalty-tier",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Loyalty Tier",
- "description": "Retrieve a loyalty tier from a loyalty campaign by the loyalty tier ID.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve a loyalty tier from a loyalty campaign by the loyalty tier ID.",
"parameters": [],
"security": [
{
@@ -74563,11 +74612,12 @@
],
"get": {
"operationId": "list-member-loyalty-tier",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member's Loyalty Tiers",
- "description": "Retrieve member tiers using the loyalty card ID.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve member tiers using the loyalty card ID.",
"parameters": [],
"security": [
{
@@ -74677,11 +74727,12 @@
],
"get": {
"operationId": "list-loyalty-tier-earning-rules",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Tier Earning Rules",
- "description": "Retrieve available earning rules for a given tier and the calculation method for earning points.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve available earning rules for a given tier and the calculation method for earning points.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -75289,11 +75340,12 @@
],
"get": {
"operationId": "list-loyalty-tier-rewards",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Tier Rewards",
- "description": "Get available rewards for a given tier.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nGet available rewards for a given tier.",
"parameters": [],
"security": [
{
@@ -75754,7 +75806,7 @@
"Customers"
],
"summary": "Create Customer",
- "description": "Creates a customer object.\n 📘 Upsert Mode\n If you pass an id or a source_id that already exists in the customer database, Voucherify will return a related customer object with updated fields.",
+ "description": "Creates a customer object.\n\nUpsert Mode\nIf you pass an id or a source_id that already exists in the customer database, Voucherify will return a related customer object with updated fields.\n",
"parameters": [],
"security": [
{
@@ -76198,7 +76250,7 @@
"Customers"
],
"summary": "Import and Update Customers using CSV",
- "description": "This API method lets you import or update customer data. To get a proper and valid response, please send a CSV file with data separated by commas. \n# Request Example\n# CSV File Format\nThe CSV file has to include headers in the first line. All properties which cannot be mapped to standard customer fields will be added to the metadata object.\n 📘 Standard customer fields mapping\n **No spaces allowed in field names** \n Id, Name, Email, Phone, Birthdate, Source_id, Address_line_1, Address_line_2, Address_Postal_Code, Address_City, Address_State, Address_Country, Description, Metadata_name_1, Metadata_name_2\n# Update Customers using CSV\nIf you would like to update customers data, you can do it using the CSV file with new data. However, remember to include a source_id in your CSV file to manage the update successfully.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
+ "description": "This API method lets you import or update customer data. To get a proper and valid response, please send a CSV file with data separated by commas. \n# Request Example\n# CSV File Format\nThe CSV file has to include headers in the first line. All properties which cannot be mapped to standard customer fields will be added to the metadata object.\n\nStandard customer fields mapping\n**No spaces allowed in field names** Id, Name, Email, Phone, Birthdate, Source_id, Address_line_1, Address_line_2, Address_Postal_Code, Address_City, Address_State, Address_Country, Description, Metadata_name_1, Metadata_name_2\n\n# Update Customers using CSV\nIf you would like to update customers data, you can do it using the CSV file with new data. However, remember to include a source_id in your CSV file to manage the update successfully.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
"parameters": [],
"security": [
{
@@ -77501,7 +77553,7 @@
"Orders"
],
"summary": "Create Order",
- "description": "Creates an order object and triggers an order creation event.\n 📘 Upsert Mode\n If you pass an id or a source_id that already exists in the order database, Voucherify will return a related order object with updated fields.",
+ "description": "Creates an order object and triggers an order creation event.\n\nUpsert Mode\nIf you pass an id or a source_id that already exists in the order database, Voucherify will return a related order object with updated fields.\n",
"parameters": [],
"security": [
{
@@ -77933,7 +77985,7 @@
"Orders"
],
"summary": "Import Orders",
- "description": "\n 🚧 Historical orders\n This endpoint should only be used to import historical orders into Voucherify. For on-going synchronization, the [update order](/api-reference/orders/update-order) endpoint should be used. This is critical because this endpoint does not store events or launch distributions.\nThe orders will also have a created_at date thats assigned when theyve been imported to Voucherify. To keep track of the actual order creation date, add an order metadata in ISO 8601 date or date time format to each imported order.\n# Limitations\n## Import volume\nThere can be only a single on-going order import per tenant per project at a given time. The user can schedule more imports but those extra imports will be scheduled to run in sequence one by one. \n## Maximum count of orders in single import\nThere is a 2000 limit of orders per one request.\n# Notifications\nThere are no notifications on the Dashboard because this import is launched via the API.\n# Triggered actions\n \nIf you import orders with customers, then a logic will be scheduled responsible for placing these customers into segments and refreshing the segments summary. Consequently, this update will trigger \n- Customers entering into segments\n- Distributions based on any rules tied to customer entering segment(s)\n- Earning rules based on the customer entering segment(s)\n# What is not triggered\n1. No webhooks are triggered during the import of orders - for both orders and upserted products / SKUs. \n2. Distributions based on Order Update, Order Paid, Order Created and Order Cancelled. In other words if you have a distribution based on Order Paid and you import an order with a PAID status, the distribution is not going to be triggered. \n3. No events are created during the import of orders - for both orders and upserted products / SKUs. In other words you wont see any events in the Activity tab in the Dashboard such as Order created or Order paid. If you are additionally upserting products / SKUs, then you wont see the Product created events listed, etc. \n4. Earning rules based on Order Paid wont be triggered.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request with [GET Async Action](/api-reference/async-actions/get-async-action) endpoint.",
+ "description": "\n\nHistorical orders\nThis endpoint should only be used to import historical orders into Voucherify. For on-going synchronization, the [update order](/api-reference/orders/update-order) endpoint should be used. This is critical because this endpoint does not store events or launch distributions.\n\nThe orders will also have a created_at date thats assigned when theyve been imported to Voucherify. To keep track of the actual order creation date, add an order metadata in ISO 8601 date or date time format to each imported order.\n# Limitations\n## Import volume\nThere can be only a single on-going order import per tenant per project at a given time. The user can schedule more imports but those extra imports will be scheduled to run in sequence one by one. \n## Maximum count of orders in single import\nThere is a 2000 limit of orders per one request.\n# Notifications\nThere are no notifications on the Dashboard because this import is launched via the API.\n# Triggered actions\n \nIf you import orders with customers, then a logic will be scheduled responsible for placing these customers into segments and refreshing the segments summary. Consequently, this update will trigger \n- Customers entering into segments\n- Distributions based on any rules tied to customer entering segment(s)\n- Earning rules based on the customer entering segment(s)\n# What is not triggered\n1. No webhooks are triggered during the import of orders - for both orders and upserted products / SKUs. \n2. Distributions based on Order Update, Order Paid, Order Created and Order Cancelled. In other words if you have a distribution based on Order Paid and you import an order with a PAID status, the distribution is not going to be triggered. \n3. No events are created during the import of orders - for both orders and upserted products / SKUs. In other words you wont see any events in the Activity tab in the Dashboard such as Order created or Order paid. If you are additionally upserting products / SKUs, then you wont see the Product created events listed, etc. \n4. Earning rules based on Order Paid wont be triggered.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request with [GET Async Action](/api-reference/async-actions/get-async-action) endpoint.",
"parameters": [],
"security": [
{
@@ -78521,7 +78573,7 @@
"Products"
],
"summary": "Create Product",
- "description": "Creates a product object.\n 📘 Upsert Mode\n If you pass an id or a source_id that already exists in the product database, Voucherify will return a related product object with updated fields.",
+ "description": "Creates a product object.\n\nUpsert Mode\nIf you pass an id or a source_id that already exists in the product database, Voucherify will return a related product object with updated fields.\n",
"parameters": [],
"security": [
{
@@ -79145,7 +79197,7 @@
"Products"
],
"summary": "Create SKU",
- "description": "This method adds product variants to a [created product](/api-reference/products/create-product). \n 📘 Upsert Mode\n If you pass an id or a source_id that already exists in the sku database, Voucherify will return a related sku object with updated fields.",
+ "description": "This method adds product variants to a [created product](/api-reference/products/create-product). \n\nUpsert Mode\nIf you pass an id or a source_id that already exists in the sku database, Voucherify will return a related sku object with updated fields.\n",
"parameters": [],
"security": [
{
@@ -79347,7 +79399,7 @@
"Products"
],
"summary": "Import Products using CSV",
- "description": "Import products into the repository using a CSV file.\nThe CSV file has to include headers in the first line.\n 📘 Standard product fields mapping\n - Create a **comma separated value (CSV) file** or download our CSV import template. You can find an example template [here](https://s3.amazonaws.com/helpscout.net/docs/assets/5902f1c12c7d3a057f88a36d/attachments/627b82ed68d51e779443f550/Import_products_template.csv).\n - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name\n - **Name** is a **required** field. The remaining fields in the CSV template are optional.\n - Override/Update products **names** in Voucherify using this method. Data will be updated for each product included in the CSV file whose **source_id** matches a source ID in Voucherify. No other data can be updated other than the product name.\n - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 standard**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11\n - YYYY-MM-DD\n - YYYY-MM-DDTHH\n - YYYY-MM-DDTHH:mm\n - YYYY-MM-DDTHH:mm:ss\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ss.SSSZ\n - Columns that cannot be mapped to standard fields, will be mapped to **Custom attributes** and added as **products metadata**. There is no limit on the number of custom attributes that you can import as metadata. \n - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](/prepare/metadata#add-metadata).\n - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2.\n - Headers with metadata names **cant contain white-space characters**.\n - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: \n - array of strings: subscribed,premium \n - array of numbers: 123,234. \n - array of dates: 2000-01-01,2000-01-02\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
+ "description": "Import products into the repository using a CSV file.\nThe CSV file has to include headers in the first line.\n\nStandard product fields mapping\n- Create a **comma separated value (CSV) file** or download our CSV import template. You can find an example template [here](https://s3.amazonaws.com/helpscout.net/docs/assets/5902f1c12c7d3a057f88a36d/attachments/627b82ed68d51e779443f550/Import_products_template.csv).\n- Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name\n- **Name** is a **required** field. The remaining fields in the CSV template are optional.\n- Override/Update products **names** in Voucherify using this method. Data will be updated for each product included in the CSV file whose **source_id** matches a source ID in Voucherify. No other data can be updated other than the product name.\n- Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 standard**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11\n - YYYY-MM-DD\n - YYYY-MM-DDTHH\n - YYYY-MM-DDTHH:mm\n - YYYY-MM-DDTHH:mm:ss\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ss.SSSZ\n- Columns that cannot be mapped to standard fields, will be mapped to **Custom attributes** and added as **products metadata**. There is no limit on the number of custom attributes that you can import as metadata.\n- To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](/prepare/metadata#add-metadata).\n- **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2.\n- Headers with metadata names **cant contain white-space characters**.\n- If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example:\n - array of strings: subscribed,premium\n - array of numbers: 123,234.\n - array of dates: 2000-01-01,2000-01-02\n\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
"parameters": [],
"security": [
{
@@ -79393,7 +79445,7 @@
"Products"
],
"summary": "Import SKUs using CSV",
- "description": "Import SKUs into the repository using a CSV file.\nThe CSV file has to include headers in the first line. All properties which cannot be mapped to standard SKU fields will be added to the metadata object. You can find an example template [here](https://s3.amazonaws.com/helpscout.net/docs/assets/5902f1c12c7d3a057f88a36d/attachments/627b98d08c9b585083488a4c/Import_SKUS_template.csv). \n 🚧 Import sequence\n First import products using the [dedicated endpoint](/api-reference/products/import-products-using-csv), then import SKUs using this endpoint to properly match SKUs to products.\n 📘 Standard SKU fields mapping\n - **Required** fields are source_id and product_id.\n - Supported CSV file headers: product_id,sku,source_id,price,image_url,attributes\n - SKU **source_id** must be unique in the entire product catalog, no duplicates are allowed.\n - SKU attributes need to be in the form of a stringy-fied json, i.e.{color:blue}. These attributes must be defined in the **product** beforehand so you can import them to the SKU.\n - You can use this method to update the following parameters in bulk: **sku** and the sku **price**.\n - Columns that cannot be mapped to standard fields will be mapped to Custom attributes and added as product metadata. There is no limit on the number of custom attributes that you can import as metadata.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
+ "description": "Import SKUs into the repository using a CSV file.\nThe CSV file has to include headers in the first line. All properties which cannot be mapped to standard SKU fields will be added to the metadata object. You can find an example template [here](https://s3.amazonaws.com/helpscout.net/docs/assets/5902f1c12c7d3a057f88a36d/attachments/627b98d08c9b585083488a4c/Import_SKUS_template.csv). \n\nImport sequence\nFirst import products using the [dedicated endpoint](/api-reference/products/import-products-using-csv), then import SKUs using this endpoint to properly match SKUs to products.\n\n\nStandard SKU fields mapping\n- **Required** fields are source_id and product_id.\n- Supported CSV file headers: product_id,sku,source_id,price,image_url,attributes\n- SKU **source_id** must be unique in the entire product catalog, no duplicates are allowed.\n- SKU attributes need to be in the form of a stringy-fied json, i.e.{color:blue}. These attributes must be defined in the **product** beforehand so you can import them to the SKU.\n- You can use this method to update the following parameters in bulk: **sku** and the sku **price**.\n- Columns that cannot be mapped to standard fields will be mapped to Custom attributes and added as product metadata. There is no limit on the number of custom attributes that you can import as metadata.\n\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
"parameters": [],
"security": [
{
@@ -80234,7 +80286,7 @@
"Validation Rules"
],
"summary": "Create Validation Rules",
- "description": "Create a validation rule.\n 🚧 Managing validation rules\n It is recommended to [create or update validation rules](/personalize/create-validation-rules) in the Voucherify dashboard. The rule builder in the dashboard helps configuring the desired conditions in a convenient way. The API should not be used as a preferable way to create and manage validation rules.",
+ "description": "Create a validation rule.\n\nManaging validation rules\nIt is recommended to [create or update validation rules](/personalize/create-validation-rules) in the Voucherify dashboard. The rule builder in the dashboard helps configuring the desired conditions in a convenient way. The API should not be used as a preferable way to create and manage validation rules.\n",
"parameters": [],
"security": [
{
@@ -80489,7 +80541,7 @@
"Validation Rules"
],
"summary": "Update Validation Rule",
- "description": "Update validation rule parameters.\n 🚧 Managing validation rules\n It is recommended to [create or update validation rules](/personalize/create-validation-rules) in the Voucherify dashboard. The rule builder in the dashboard helps configuring the desired conditions in a convenient way. The API should not be used as a preferable way to create and manage validation rules.",
+ "description": "Update validation rule parameters.\n\nManaging validation rules\nIt is recommended to [create or update validation rules](/personalize/create-validation-rules) in the Voucherify dashboard. The rule builder in the dashboard helps configuring the desired conditions in a convenient way. The API should not be used as a preferable way to create and manage validation rules.\n",
"parameters": [],
"security": [
{
@@ -81157,7 +81209,7 @@
"Segments"
],
"summary": "Create Segment",
- "description": "Create a customer segment.\n 🚧 Limit on static segments\n There is a cap on the number of customers that you can assign to a static segment: **20,000**. If you would like to create a bigger segment, then you can use the unlimited auto-update or passive segment instead and use some customer metadata to build this segment.\n 🚧 Limit on Active and Passive segments\n You can create a maximum of 100 passive and active segments.",
+ "description": "Create a customer segment.\n\nLimit on static segments\nThere is a cap on the number of customers that you can assign to a static segment: **20,000**. If you would like to create a bigger segment, then you can use the unlimited auto-update or passive segment instead and use some customer metadata to build this segment.\n\n\nLimit on Active and Passive segments\nYou can create a maximum of 100 passive and active segments.\n",
"parameters": [],
"security": [
{
@@ -82007,7 +82059,7 @@
"Exports"
],
"summary": "Create Export",
- "description": "Create export object. The export can be any of the following types: voucher, redemption, publication, customer, order, points_expiration, voucher_transactions, product, or sku. \n# Defaults\nIf you only specify the object type in the request body without specifying the fields, the API will return the following fields per export object:\n\n\n 📘 Date and time in the export API\n The exported date and times are always provided in the UTC time zone.\n# Fetching particular data sets\nUsing the parameters body parameter, you can narrow down which fields to export and how to filter the results. The fields are an array of strings containing the data that you would like to export. These fields define the headers in the CSV file. The array can be a combination of any of the following available fields:\n# Orders \n\n\n# Vouchers \n\n\n\n\n\n# Publications\n\n\n# Redemptions\n\n\n\n# Customers\n\n\n\n\n\n\n# Points Expirations\n\n\n # Gift Card Transactions\n\n\n # Loyalty Card Transactions\n\n\n",
+ "description": "Create export object. The export can be any of the following types: voucher, redemption, publication, customer, order, points_expiration, voucher_transactions, product, or sku. \n# Defaults\nIf you only specify the object type in the request body without specifying the fields, the API will return the following fields per export object:\n\n\n\nDate and time in the export API\nThe exported date and times are always provided in the UTC time zone.\n\n# Fetching particular data sets\nUsing the parameters body parameter, you can narrow down which fields to export and how to filter the results. The fields are an array of strings containing the data that you would like to export. These fields define the headers in the CSV file. The array can be a combination of any of the following available fields:\n# Orders \n\n\n# Vouchers \n\n\n\n\n\n# Publications\n\n\n# Redemptions\n\n\n\n# Customers\n\n\n\n\n\n\n# Points Expirations\n\n\n # Gift Card Transactions\n\n\n # Loyalty Card Transactions\n\n\n",
"parameters": [],
"security": [
{
@@ -82283,7 +82335,7 @@
"Exports"
],
"summary": "Download Export",
- "description": "Download the contents of the exported CSV file. \n 📘 Important notes\n **Base URL:** \n - https://download.voucherify.io (Europe) \n - https://us1.download.voucherify.io (US) \n - https://as1.download.voucherify.io (Asia) \n **Token:** Can be found within the result parameter of the [Get Export](/api-reference/exports/get-export) method response.",
+ "description": "Download the contents of the exported CSV file. \n\nImportant notes\n**Base URL:**\n- https://download.voucherify.io (Europe)\n- https://us1.download.voucherify.io (US)\n- https://as1.download.voucherify.io (Asia)\n**Token:** Can be found within the result parameter of the [Get Export](/api-reference/exports/get-export) method response.\n",
"parameters": [],
"security": [
{
@@ -82583,7 +82635,7 @@
"Metadata Schemas"
],
"summary": "List Metadata Schema Definitions",
- "description": "Retrieve metadata schema definitions.\n📘 Management API\nIf you have Management API enabled, you can also use the [List Metadata Schemas](/api-reference/management/list-metadata-schemas) endpoint to list all metadata schemas.",
+ "description": "Retrieve metadata schema definitions.\n\nManagement API\nIf you have Management API enabled, you can also use the [List Metadata Schemas](/api-reference/management/list-metadata-schemas) endpoint to list all metadata schemas.\n",
"parameters": [],
"security": [
{
@@ -83088,7 +83140,7 @@
"Metadata Schemas"
],
"summary": "Get Metadata Schema",
- "description": "Retrieves a metadata schema per resource type.\n# Resource types\n## Standard\nYou can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter.\n- campaign\n- customer\n- earning_rule\n- loyalty_tier\n- order\n- order_item\n- product\n- promotion_tier\n- publication\n- redemption\n- reward\n- voucher\n## Custom\nIf you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details.\n📘 Management API\nIf you have Management API enabled, you can also use the [Get Metadata Schemas](/api-reference/management/get-metadata-schema) endpoint to retrieve a metadata schema using its ID.",
+ "description": "Retrieves a metadata schema per resource type.\n# Resource types\n## Standard\nYou can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter.\n- campaign\n- customer\n- earning_rule\n- loyalty_tier\n- order\n- order_item\n- product\n- promotion_tier\n- publication\n- redemption\n- reward\n- voucher\n## Custom\nIf you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details.\n\nManagement API\nIf you have Management API enabled, you can also use the [Get Metadata Schemas](/api-reference/management/get-metadata-schema) endpoint to retrieve a metadata schema using its ID.\n",
"parameters": [],
"security": [
{
@@ -83876,7 +83928,7 @@
"Referrals"
],
"summary": "Add Referral Code Holders with Campaign ID",
- "description": "Adds new holders to a referral code as **referees**. The data sent in the request is upserted into the customer data.\nIf the request returns an error even for one customer, you have to resend the whole request. Customer data is upserted if the data for all customers is correct.\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (customers.modify)\n- Publish Voucher (vouchers.publish)\n 👍\nTo add a holder as a referrer, use the [Create Publication](/api-reference/publications/create-publication) endpoint.",
+ "description": "Adds new holders to a referral code as **referees**. The data sent in the request is upserted into the customer data.\nIf the request returns an error even for one customer, you have to resend the whole request. Customer data is upserted if the data for all customers is correct.\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (customers.modify)\n- Publish Voucher (vouchers.publish)\n\nTo add a holder as a referrer, use the [Create Publication](/api-reference/publications/create-publication) endpoint.\n",
"parameters": [],
"security": [
{
@@ -84131,7 +84183,7 @@
"Referrals"
],
"summary": "Add Referral Code Holders",
- "description": "Adds new holders to a referral code as **referees**. The data sent in the request is upserted into the customer data.\nIf the request returns an error even for one customer, you have to resend the whole request. Customer data is upserted if the data for all customers is correct.\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (customers.modify)\n- Publish Voucher (vouchers.publish)\n 👍\nTo add a holder as a referrer, use the [Create Publication](/api-reference/publications/create-publication) endpoint.\n 📘 Alternative endpoint\nThis endpoint is an alternative to the [Add Referral Code Holders endpoint](/api-reference/referrals/add-referral-code-holders-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the campaignId as a path paremeter.",
+ "description": "Adds new holders to a referral code as **referees**. The data sent in the request is upserted into the customer data.\nIf the request returns an error even for one customer, you have to resend the whole request. Customer data is upserted if the data for all customers is correct.\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (customers.modify)\n- Publish Voucher (vouchers.publish)\n\nTo add a holder as a referrer, use the [Create Publication](/api-reference/publications/create-publication) endpoint.\n\n\nAlternative endpoint\nThis endpoint is an alternative to the [Add Referral Code Holders endpoint](/api-reference/referrals/add-referral-code-holders-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the campaignId as a path paremeter.\n",
"parameters": [],
"security": [
{
@@ -84229,7 +84281,7 @@
"Referrals"
],
"summary": "List Referral Code Holders",
- "description": "Retrieves the holders of the referral code from a referral campaign.\nTo use this endpoint, you must have the following permissions:\n- Read Customers (customers.details.read)\n 📘 Alternative endpoint\nThis endpoint is an alternative to the [List Member Holders endpoint](/api-reference/referrals/list-referral-code-holders-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the campaignId as a path paremeter.",
+ "description": "Retrieves the holders of the referral code from a referral campaign.\nTo use this endpoint, you must have the following permissions:\n- Read Customers (customers.details.read)\n\nAlternative endpoint\nThis endpoint is an alternative to the [List Member Holders endpoint](/api-reference/referrals/list-referral-code-holders-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the campaignId as a path paremeter.\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -84344,7 +84396,7 @@
"Referrals"
],
"summary": "Remove Referral Card Holder",
- "description": "Removes the holder from a referral card. You can remove a referee only.\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (customers.modify)\n- Publish Voucher (vouchers.publish)\n 📘 Alternative endpoint\nThis endpoint is an alternative to the [Remove Referral Card Holder endpoint](/api-reference/referrals/remove-referral-card-holder-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the campaignId as a path paremeter.",
+ "description": "Removes the holder from a referral card. You can remove a referee only.\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (customers.modify)\n- Publish Voucher (vouchers.publish)\n\nAlternative endpoint\nThis endpoint is an alternative to the [Remove Referral Card Holder endpoint](/api-reference/referrals/remove-referral-card-holder-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the campaignId as a path paremeter.\n",
"parameters": [],
"security": [
{
@@ -84491,7 +84543,7 @@
"Templates"
],
"summary": "List Campaign Templates",
- "description": "Lists all campaign templates available in the project.\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Lists all campaign templates available in the project.\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -84584,7 +84636,7 @@
"Templates"
],
"summary": "Create Campaign Template",
- "description": "Creates a template for a discount or gift campaign, or a promotion tier.\nA template stores campaign configuration **without** the following details:\n- Campaign name\n- Category\n- Code count\nThe following elements are not supported by campaign templates:\n- Redeeming API keys\n- Redeeming users\n- Customer loyalty tier\n- Static segments\n 👍 Promotion Tiers and Campaign Templates\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the DISCOUNT_COUPON type. You can use this template to create:\n- [Discount campaign](/api-reference/templates/create-campaign-from-template),\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template).\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Creates a template for a discount or gift campaign, or a promotion tier.\nA template stores campaign configuration **without** the following details:\n- Campaign name\n- Category\n- Code count\nThe following elements are not supported by campaign templates:\n- Redeeming API keys\n- Redeeming users\n- Customer loyalty tier\n- Static segments\n\nPromotion Tiers and Campaign Templates\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the DISCOUNT_COUPON type. You can use this template to create:\n- [Discount campaign](/api-reference/templates/create-campaign-from-template),\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template).\n\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -84646,7 +84698,7 @@
"Templates"
],
"summary": "Get Campaign Template",
- "description": "Retrieves a campaign template available in the project.\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Retrieves a campaign template available in the project.\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -84685,7 +84737,7 @@
"Templates"
],
"summary": "Update Campaign Template",
- "description": "Updates the name or description of the campaign template.\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Updates the name or description of the campaign template.\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -84735,7 +84787,7 @@
"Templates"
],
"summary": "Delete Campaign Template",
- "description": "Deletes the campaign template permanently.\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Deletes the campaign template permanently.\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -84768,7 +84820,7 @@
"Templates"
],
"summary": "Create Campaign From Template",
- "description": "Creates a campaign out of a campaign template.\nTo create a campaign, you need to provide the name in the request, while other fields are optional. If no other fields are sent, the configuration from the template will be used.\nYou can send new values of the fields listed below to replace the settings saved in the template. However, you cannot assign an existing validation rule or create a new one in the request. If the template has a validation rule, a new validation rule is always created for the campaign. When the campaign has been created, then you can:\n- [Update the validation rule](/api-reference/validation-rules/update-validation-rule),\n- [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment),\n- [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments).\n 👍 Promotion Tiers and Campaign Templates\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the DISCOUNT_COUPON type. You can use this template to create:\n- [Discount campaign](/api-reference/templates/create-campaign-from-template)\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template)\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Creates a campaign out of a campaign template.\nTo create a campaign, you need to provide the name in the request, while other fields are optional. If no other fields are sent, the configuration from the template will be used.\nYou can send new values of the fields listed below to replace the settings saved in the template. However, you cannot assign an existing validation rule or create a new one in the request. If the template has a validation rule, a new validation rule is always created for the campaign. When the campaign has been created, then you can:\n- [Update the validation rule](/api-reference/validation-rules/update-validation-rule),\n- [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment),\n- [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments).\n\nPromotion Tiers and Campaign Templates\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the DISCOUNT_COUPON type. You can use this template to create:\n- [Discount campaign](/api-reference/templates/create-campaign-from-template)\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template)\n\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -84927,7 +84979,7 @@
"Templates"
],
"summary": "Add Promotion Tier From Template",
- "description": "Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign.\nTo add a promotion tier to a campaign, you need to provide the name in the request and the campaign ID. Other fields are optional. If no other fields are sent, the configuration from the template will be used.\nYou can send new values of the fields listed below to replace the settings saved in the template. However, you cannot assign an action or an existing validation rule or create a new one in the request. If the template has a validation rule, a new validation rule is always created for the promotion tier. When the promotion tier has been created, then you can:\n- [Update the validation rule](/api-reference/validation-rules/update-validation-rule),\n- [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment),\n- [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment).\n 👍 Promotion Tiers and Campaign Templates\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the DISCOUNT_COUPON type. You can use this template to create:\n- [Discount campaign](/api-reference/templates/create-campaign-from-template)\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template)\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign.\nTo add a promotion tier to a campaign, you need to provide the name in the request and the campaign ID. Other fields are optional. If no other fields are sent, the configuration from the template will be used.\nYou can send new values of the fields listed below to replace the settings saved in the template. However, you cannot assign an action or an existing validation rule or create a new one in the request. If the template has a validation rule, a new validation rule is always created for the promotion tier. When the promotion tier has been created, then you can:\n- [Update the validation rule](/api-reference/validation-rules/update-validation-rule),\n- [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment),\n- [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment).\n\nPromotion Tiers and Campaign Templates\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the DISCOUNT_COUPON type. You can use this template to create:\n- [Discount campaign](/api-reference/templates/create-campaign-from-template)\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template)\n\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -85709,7 +85761,7 @@
"Management"
],
"summary": "Delete Project",
- "description": "Deletes an existing project.\nThe users currently using the deleted project will be automatically logged out.\n 🚧 Sandbox Project\nThe sandbox project cannot be deleted.",
+ "description": "Deletes an existing project.\nThe users currently using the deleted project will be automatically logged out.\n\nSandbox Project\nThe sandbox project cannot be deleted.\n",
"parameters": [],
"security": [
{
@@ -85742,7 +85794,7 @@
"Management"
],
"summary": "Assign User",
- "description": "Assigns a user to a given project. The user must be an existing user in Voucherify.\n 🚧 Correct Use of Data\nTo avoid errors, use the role key with either id or login keys.",
+ "description": "Assigns a user to a given project. The user must be an existing user in Voucherify.\n\nCorrect Use of Data\nTo avoid errors, use the role key with either id or login keys.\n",
"parameters": [],
"security": [
{
@@ -86048,7 +86100,7 @@
"Management"
],
"summary": "List Campaign Templates",
- "description": "Lists all campaign templates available in the project.\n 👍 List Campaign Templates\n This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates).\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Lists all campaign templates available in the project.\n\nList Campaign Templates\nThis endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates).\n\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -86163,7 +86215,7 @@
"Management"
],
"summary": "Copy Campaign Template to a Project",
- "description": "Copies a campaign template to another project.\nThe resources, like validation rules or products, will not be copied to the destination project yet. When the template is used to create a new campaign or add a new promotion tier, the resources will be created in the destination project.\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Copies a campaign template to another project.\nThe resources, like validation rules or products, will not be copied to the destination project yet. When the template is used to create a new campaign or add a new promotion tier, the resources will be created in the destination project.\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -86225,7 +86277,7 @@
"Management"
],
"summary": "Create Stacking Rules",
- "description": "Overwrites the default stacking rules.\nIf new stacking rules have been created for the project earlier (e.g. in the user interface), it returns an error. Use [Update stacking rules](/api-reference/management/update-stacking-rules) endpoint to change the rules.\n 📘 Stacking rules documentation\n Read [the Stacking rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Overwrites the default stacking rules.\nIf new stacking rules have been created for the project earlier (e.g. in the user interface), it returns an error. Use [Update stacking rules](/api-reference/management/update-stacking-rules) endpoint to change the rules.\n\nStacking rules documentation\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n",
"parameters": [],
"security": [
{
@@ -86302,7 +86354,7 @@
"Management"
],
"summary": "List Stacking Rules",
- "description": "Lists all stacking rules.\nReturns always a list with one item.\nThis endpoint can be used to retrieve the default stacking rules. The default stacking rules do not have an ID that could be used with the [Get Stacking Rules](/api-reference/management/get-stacking-rules) or [Update Stacking Rules](/api-reference/management/update-stacking-rules) endpoints.\n 📘 Stacking Rules Documentation\n Read [the Stacking Rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Lists all stacking rules.\nReturns always a list with one item.\nThis endpoint can be used to retrieve the default stacking rules. The default stacking rules do not have an ID that could be used with the [Get Stacking Rules](/api-reference/management/get-stacking-rules) or [Update Stacking Rules](/api-reference/management/update-stacking-rules) endpoints.\n\nStacking Rules Documentation\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n",
"parameters": [],
"security": [
{
@@ -86399,7 +86451,7 @@
"Management"
],
"summary": "Get Stacking Rules",
- "description": "Retrieves the stacking rules for the project.\n 📘 Stacking Rules Documentation\n Read [the Stacking Rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Retrieves the stacking rules for the project.\n\nStacking Rules Documentation\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n",
"parameters": [],
"security": [
{
@@ -86467,7 +86519,7 @@
"Management"
],
"summary": "Update Stacking Rules",
- "description": "Updates the stacking rules.\nOnly the provided fields will be updated. However, if you update an array, the content of the array is overwritten. This means that if you want to add new values to an array and retain existing ones, you need to provide both the existing and new values in the request.\n 📘 Stacking Rules Documentation\n Read [the Stacking Rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Updates the stacking rules.\nOnly the provided fields will be updated. However, if you update an array, the content of the array is overwritten. This means that if you want to add new values to an array and retain existing ones, you need to provide both the existing and new values in the request.\n\nStacking Rules Documentation\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n",
"parameters": [],
"security": [
{
@@ -86545,7 +86597,7 @@
"Management"
],
"summary": "Delete Stacking Rules",
- "description": "Deletes permanently the current settings for the stacking rules.\nThe stacking rules are restored to default values.\n 📘 Stacking Rules Documentation\n Read [the Stacking Rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Deletes permanently the current settings for the stacking rules.\nThe stacking rules are restored to default values.\n\nStacking Rules Documentation\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n",
"parameters": [],
"security": [
{
@@ -86578,7 +86630,7 @@
"Management"
],
"summary": "Create Metadata Schema",
- "description": "Creates a new metadata (custom attribute) schema for a given resource.\nThe schema consists of a set of key-value pairs to customize Voucherify resources. \nYou can nest your object within a standard metadata schema, e.g. within a campaign or customer schema. However, your nested object cant include another nested object. The standard metadata schemas are:\n- Campaign\n- Voucher\n- Publication\n- Redemption\n- Product\n- Customer\n- Order\n- Order line item\n- Loyalty Tier\n- Promotion Tier\n- Earning rule\n- Reward\nUse this endpoint to define a metadata schema of a given resource for the first time. Once you configure a metadata schema for a given related_object, use the PUT [Update metadata schema](/api-reference/management/update-metadata-schema) endpoint to either update or add new metadata key-value pairs. For example, use this endpoint to define a metadata schema for related_object: campaign for the first time. If you want define a new metadata property for campaign, use the [PUT Update metadata schema](/api-reference/management/update-metadata-schema) endpoint.\n 📘 Metadata Documentation\n Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Creates a new metadata (custom attribute) schema for a given resource.\nThe schema consists of a set of key-value pairs to customize Voucherify resources. \nYou can nest your object within a standard metadata schema, e.g. within a campaign or customer schema. However, your nested object cant include another nested object. The standard metadata schemas are:\n- Campaign\n- Voucher\n- Publication\n- Redemption\n- Product\n- Customer\n- Order\n- Order line item\n- Loyalty Tier\n- Promotion Tier\n- Earning rule\n- Reward\nUse this endpoint to define a metadata schema of a given resource for the first time. Once you configure a metadata schema for a given related_object, use the PUT [Update metadata schema](/api-reference/management/update-metadata-schema) endpoint to either update or add new metadata key-value pairs. For example, use this endpoint to define a metadata schema for related_object: campaign for the first time. If you want define a new metadata property for campaign, use the [PUT Update metadata schema](/api-reference/management/update-metadata-schema) endpoint.\n\nMetadata Documentation\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -86641,7 +86693,7 @@
"Management"
],
"summary": "List Metadata Schemas",
- "description": "Lists all metadata schemas available in the project.\n 📘 Metadata Documentation\n Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Lists all metadata schemas available in the project.\n\nMetadata Documentation\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -86953,7 +87005,7 @@
"Management"
],
"summary": "Get Metadata Schema",
- "description": "Retrieves a metadata schema.\n 📘 Metadata Documentation\n Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Retrieves a metadata schema.\n\nMetadata Documentation\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -87040,7 +87092,7 @@
"Management"
],
"summary": "Update Metadata Schema",
- "description": "Updates a metadata schema.\nWith this request, you can:\n- Add a nonexistent attribute definition to the metadata schema.\n- Update an existing attribute definition by overwriting its current values.\nIn the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged.\nHowever, if you want to update a definition, you will have to add all its current key-value pairs as well. Only the pairs sent in the request are saved for this definition. This means that the key-value pairs that are not sent in a request are restored to default values. For example, if your definition has an array with values and it is not sent in an update request, the array values will be deleted.\n 👍 Additional Notes\n- You cannot change the type of an existing schema, e.g. from string to number.\n- You can remove a definition with this endpoint by providing deleted: true in the request. It will be moved to the Removed definitions section in the user interface. However, you cannot permanently remove a definition with this endpoint.\n 📘 Metadata Documentation\n Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Updates a metadata schema.\nWith this request, you can:\n- Add a nonexistent attribute definition to the metadata schema.\n- Update an existing attribute definition by overwriting its current values.\nIn the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged.\nHowever, if you want to update a definition, you will have to add all its current key-value pairs as well. Only the pairs sent in the request are saved for this definition. This means that the key-value pairs that are not sent in a request are restored to default values. For example, if your definition has an array with values and it is not sent in an update request, the array values will be deleted.\n\nAdditional Notes\n- You cannot change the type of an existing schema, e.g. from string to number.\n- You can remove a definition with this endpoint by providing deleted: true in the request. It will be moved to the Removed definitions section in the user interface. However, you cannot permanently remove a definition with this endpoint.\n\n\nMetadata Documentation\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -87103,7 +87155,7 @@
"Management"
],
"summary": "Delete Metadata Schema",
- "description": "Deletes permanently the metadata schema.\nIn standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are:\n- Campaign\n- Voucher\n- Publication\n- Redemption\n- Product\n- Customer\n- Order\n- Order line item\n- Loyalty Tier\n- Promotion Tier\n- Earning rule\n- Reward\nIf you want to delete only one definition, use the [Update Metadata Schema](/api-reference/management/update-metadata-schema) endpoint. In the request, provide the deleted: true pair in the definition object. This definition will be moved to Removed definitions.\nIf you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint.\n 🚧 Metadata Purging\nThis endpoint deletes permanently the metadata schemas only. However, it does not purge the metadata from associated entities, so the metadata added to those entities will remain.\nIf you want to purge metadata from the entities:\n1. Remove all the definitions you want to purge. You can do this either in Voucherify Project Settings > Metadata Schema tab or with the [Update Metadata Schema](/api-reference/management/update-metadata-schema) endpoint.\n2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema.\n3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities.\nNote:\n- This is an asynchronous action. You will be notified when it has been completed.\n- You cannot purge metadata for the Redemption and Publication schemas.\n4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify.\n 📘 Metadata Documentation\n Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Deletes permanently the metadata schema.\nIn standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are:\n- Campaign\n- Voucher\n- Publication\n- Redemption\n- Product\n- Customer\n- Order\n- Order line item\n- Loyalty Tier\n- Promotion Tier\n- Earning rule\n- Reward\nIf you want to delete only one definition, use the [Update Metadata Schema](/api-reference/management/update-metadata-schema) endpoint. In the request, provide the deleted: true pair in the definition object. This definition will be moved to Removed definitions.\nIf you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint.\n\nMetadata Purging\nThis endpoint deletes permanently the metadata schemas only. However, it does not purge the metadata from associated entities, so the metadata added to those entities will remain.\nIf you want to purge metadata from the entities:\n1. Remove all the definitions you want to purge. You can do this either in Voucherify Project Settings > Metadata Schema tab or with the [Update Metadata Schema](/api-reference/management/update-metadata-schema) endpoint.\n2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema.\n3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities.\nNote:\n- This is an asynchronous action. You will be notified when it has been completed.\n- You cannot purge metadata for the Redemption and Publication schemas.\n4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify.\n\n\nMetadata Documentation\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -87136,7 +87188,7 @@
"Management"
],
"summary": "Create Custom Event Schema",
- "description": "Creates a custom event schema.\nThe properties object is required, but it can be empty, however. This object is for optional custom properties (metadata).\n 📘 Custom Event Documentation\n Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Creates a custom event schema.\nThe properties object is required, but it can be empty, however. This object is for optional custom properties (metadata).\n\nCustom Event Documentation\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n",
"parameters": [],
"security": [
{
@@ -87191,7 +87243,7 @@
"Management"
],
"summary": "List Custom Event Schemas",
- "description": "Lists all custom event schemas available in the project.\n 📘 Custom Event Documentation\n Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Lists all custom event schemas available in the project.\n\nCustom Event Documentation\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n",
"parameters": [],
"security": [
{
@@ -87279,7 +87331,7 @@
"Management"
],
"summary": "Get Custom Event Schema",
- "description": "Retrieves a custom event schema.\n 📘 Custom Event Documentation\n Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Retrieves a custom event schema.\n\nCustom Event Documentation\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n",
"parameters": [],
"security": [
{
@@ -87322,7 +87374,7 @@
"Management"
],
"summary": "Update Custom Event Schema",
- "description": "Updates a custom event schema.\nWith this request, you can:\n- Add a nonexistent property to a custom event schema.\n- Update an existing property.\nIn the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged.\n 👍 Additional Notes\n- You can change the type of an existing property, e.g. from string to number.\n- You can remove a custom property with this endpoint by providing deleted: true in the request. However, you cannot permanently remove an event definition or its property with this endpoint.\n 📘 Custom Event Documentation\n Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Updates a custom event schema.\nWith this request, you can:\n- Add a nonexistent property to a custom event schema.\n- Update an existing property.\nIn the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged.\n\nAdditional Notes\n- You can change the type of an existing property, e.g. from string to number.\n- You can remove a custom property with this endpoint by providing deleted: true in the request. However, you cannot permanently remove an event definition or its property with this endpoint.\n\n\nCustom Event Documentation\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n",
"parameters": [],
"security": [
{
@@ -87386,7 +87438,7 @@
"Management"
],
"summary": "Delete Custom Event Schema",
- "description": "Deletes permanently the custom event schema with its custom properties (metadata).\n 📘 Custom Event Documentation\n Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Deletes permanently the custom event schema with its custom properties (metadata).\n\nCustom Event Documentation\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n",
"parameters": [],
"security": [
{
@@ -87419,7 +87471,7 @@
"Management"
],
"summary": "Create Webhook",
- "description": "Creates a new webhook configuration.\n 📘 Webhook Documentation\n Read [Webhooks v2024-01-01](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Creates a new webhook configuration.\n\nWebhook Documentation\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -87470,7 +87522,7 @@
"Management"
],
"summary": "List Webhooks",
- "description": "Lists all webhook configurations for the project.\n 📘 Webhook Documentation\n Read [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Lists all webhook configurations for the project.\n\nWebhook Documentation\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -87586,7 +87638,7 @@
"Management"
],
"summary": "Get Webhook",
- "description": "Retrieves a webhook configuration.\n 📘 Webhook Documentation\n Read [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Retrieves a webhook configuration.\n\nWebhook Documentation\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -87627,7 +87679,7 @@
"Management"
],
"summary": "Update Webhook",
- "description": "Updates a webhook configuration.\nThe events listed in the request are overwritten. If you want to add more events, provide also the events that are already in the webhook configuration.\n 📘 Webhook Documentation\n Read [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Updates a webhook configuration.\nThe events listed in the request are overwritten. If you want to add more events, provide also the events that are already in the webhook configuration.\n\nWebhook Documentation\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -87678,7 +87730,7 @@
"Management"
],
"summary": "Delete Webhook",
- "description": "Deletes a webhook configuration.\n 📘 Webhook Documentation\n Read [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Deletes a webhook configuration.\n\nWebhook Documentation\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -87711,7 +87763,7 @@
"Management"
],
"summary": "Create Brand",
- "description": "Creates a new brand configuration.\nYou can have only one brand configured for a project.\n 📘 White Labelling\n The white labelling settings which can be found in Project Settings > Brand Details and which are available only for Enterprise clients as a separate service can be configured only in the user interface.",
+ "description": "Creates a new brand configuration.\nYou can have only one brand configured for a project.\n\nWhite Labelling\nThe white labelling settings which can be found in Project Settings > Brand Details and which are available only for Enterprise clients as a separate service can be configured only in the user interface.\n",
"parameters": [],
"security": [
{
@@ -87930,7 +87982,7 @@
"Management"
],
"summary": "Update Brand",
- "description": "Updates a brand configuration.\nOnly the fields sent in the request will be updated. The fields omitted in the request will remain unchanged.\n 📘 White Labelling\n The white labelling settings which can be found in Project Settings > Brand Details and which are available only for Enterprise clients as a separate service can be configured only in the user interface.",
+ "description": "Updates a brand configuration.\nOnly the fields sent in the request will be updated. The fields omitted in the request will remain unchanged.\n\nWhite Labelling\nThe white labelling settings which can be found in Project Settings > Brand Details and which are available only for Enterprise clients as a separate service can be configured only in the user interface.\n",
"parameters": [],
"security": [
{
@@ -88014,7 +88066,7 @@
"Client-side"
],
"summary": "Check Eligibility (client-side)",
- "description": "Generate a list of redeemables that are applicable in the context of the customer and order.\nThe new qualifications method is an improved version of [Campaign Qualifications](/api-reference/campaigns/examine-campaign-qualification), [Voucher Qualifications](/api-reference/vouchers/examine-voucher-qualification) API requests. The new qualification method introduces the following improvements:\n- Qualification results are returned faster\n- No limit on the number of returned redeemables\n- Introduces new qualification scenarios, not available in the previous version\n 👍 Scenario Guide\n Read our dedicated guide to learn about some use cases this endpoint can cover [here](/guides/checking-eligibility).\n# Paging \nThe Voucherify Qualifications API request will return to you all of the redeemables available for the customer in batches of up to 50 redeemables per page. To get the next batch of redeemables, you need to use the starting_after cursor.\nTo process of paging the redeemables works in the following manner:\n- You send the first API request for Qualifications without the starting_after parameter.\n- The response will contain a parameter named has_more. If the parameters value is set to true, then more redeemables are available.\n- Get the value of the created_at parameter of the last returned redeemable. The value of this parameter will be used as a cursor to retrieve the next page of redeemables.\n- Send another API request for Qualification with the starting_after parameter set to the value taken from the created_at parameter from the last returned redeemable.\n- Voucherify will return the next page of redeemables.\n- If the has_more parameter is set to true, apply steps 3-5 to get the next page of redeemables.\n# Caching\nQualification has a 5-minute cache for the returned results. If you change your campaign settings or validation rules, the changes will apply to qualification results after the cache refreshes.",
+ "description": "Generate a list of redeemables that are applicable in the context of the customer and order.\nThe new qualifications method is an improved version of [Campaign Qualifications](/api-reference/campaigns/examine-campaign-qualification), [Voucher Qualifications](/api-reference/vouchers/examine-voucher-qualification) API requests. The new qualification method introduces the following improvements:\n- Qualification results are returned faster\n- No limit on the number of returned redeemables\n- Introduces new qualification scenarios, not available in the previous version\n\nScenario Guide\nRead our dedicated guide to learn about some use cases this endpoint can cover [here](/guides/checking-eligibility).\n\n# Paging \nThe Voucherify Qualifications API request will return to you all of the redeemables available for the customer in batches of up to 50 redeemables per page. To get the next batch of redeemables, you need to use the starting_after cursor.\nTo process of paging the redeemables works in the following manner:\n- You send the first API request for Qualifications without the starting_after parameter.\n- The response will contain a parameter named has_more. If the parameters value is set to true, then more redeemables are available.\n- Get the value of the created_at parameter of the last returned redeemable. The value of this parameter will be used as a cursor to retrieve the next page of redeemables.\n- Send another API request for Qualification with the starting_after parameter set to the value taken from the created_at parameter from the last returned redeemable.\n- Voucherify will return the next page of redeemables.\n- If the has_more parameter is set to true, apply steps 3-5 to get the next page of redeemables.\n# Caching\nQualification has a 5-minute cache for the returned results. If you change your campaign settings or validation rules, the changes will apply to qualification results after the cache refreshes.",
"parameters": [],
"security": [
{
@@ -88293,7 +88345,7 @@
"Client-side"
],
"summary": "Redeem Stackable Discounts (client-side)",
- "description": "This method is accessible through public keys which you can use in client side requests coming from mobile and web browser applications.\n# How API returns calculated discounts and order amounts in the response\nIn the table below, you can see the logic the API follows to calculate discounts and amounts:\n\n\n 📘 Rollbacks\n You cant roll back a child redemption. When you call rollback on a stacked redemption, all child redemptions will be rolled back. You need to refer to a parent redemption ID in your [rollback request](/api-reference/redemptions/rollback-stackable-redemptions).",
+ "description": "This method is accessible through public keys which you can use in client side requests coming from mobile and web browser applications.\n# How API returns calculated discounts and order amounts in the response\nIn the table below, you can see the logic the API follows to calculate discounts and amounts:\n\n\n\nRollbacks\nYou cant roll back a child redemption. When you call rollback on a stacked redemption, all child redemptions will be rolled back. You need to refer to a parent redemption ID in your [rollback request](/api-reference/redemptions/rollback-stackable-redemptions).\n",
"parameters": [
{
"$ref": "#/components/parameters/origin"
diff --git a/reference/readonly-sdks/ruby/OpenAPI.json b/reference/readonly-sdks/ruby/OpenAPI.json
index a7085a658..a68191c38 100644
--- a/reference/readonly-sdks/ruby/OpenAPI.json
+++ b/reference/readonly-sdks/ruby/OpenAPI.json
@@ -45708,7 +45708,7 @@
"Publications"
],
"summary": "Create Publication with GET",
- "description": "This method selects vouchers that are suitable for publication, adds a publish entry and returns the publication.\nA voucher is suitable for publication when its active and hasnt been published yet.\n ❗️ Limited access\n Access to this endpoint is limited. This endpoint is designed for specific integrations and the API keys need to be configured to access this endpoint. Navigate to the **Dashboard** → **Project Settings** → **General** → **Integration Keys** to set up a pair of API keys and use them to send the request. \n 🚧 Clearly define the source of the voucher\n You must clearly define which source you want to publish the voucher code from. It can either be a code from a campaign or a specific voucher identified by a code. \n 🚧 Publish multiple vouchers\n This endpoint does not support the publishing of multiple vouchers from a single campaign. In case you want to publish multiple vouchers within a single publication, you need to use a [dedicated endpoint](/api-reference/publications/create-publication). \n 📘 Auto-update campaign\n In case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use an **auto-update** campaign. \n# Example Request \n \n ❗️ Required \n Query param voucher OR campaign MUST be filled out. If you provide both, campaign param will be skipped.",
+ "description": "This method selects vouchers that are suitable for publication, adds a publish entry and returns the publication.\nA voucher is suitable for publication when its active and hasnt been published yet.\n\nLimited access\nAccess to this endpoint is limited. This endpoint is designed for specific integrations and the API keys need to be configured to access this endpoint. Navigate to the **Dashboard** → **Project Settings** → **General** → **Integration Keys** to set up a pair of API keys and use them to send the request.\n\n\nClearly define the source of the voucher\nYou must clearly define which source you want to publish the voucher code from. It can either be a code from a campaign or a specific voucher identified by a code.\n\n\nPublish multiple vouchers\nThis endpoint does not support the publishing of multiple vouchers from a single campaign. In case you want to publish multiple vouchers within a single publication, you need to use a [dedicated endpoint](/api-reference/publications/create-publication).\n\n\nAuto-update campaign\nIn case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use an **auto-update** campaign.\n\n# Example Request \n \n\nRequired\nQuery param voucher OR campaign MUST be filled out. If you provide both, campaign param will be skipped.\n",
"parameters": [
{
"schema": {
@@ -45873,7 +45873,7 @@
"Qualifications"
],
"summary": "Check Eligibility",
- "description": "\n 🚧 The Qualifications endpoint ignores the rules checking:\n \n - Limit of total redeemed discount amount per campaign\n - Limit of total redemptions count per campaign\n - Redemptions per customer\n - Redemptions per customer in a campaign\n- Total amount before discount \nGenerate a list of redeemables that are applicable in the context of the customer and order.\nThe new qualifications method is an improved version of [Campaign Qualifications](/api-reference/campaigns/examine-campaign-qualification), [Voucher Qualifications](/api-reference/vouchers/examine-voucher-qualification) API requests. The new qualification method introduces the following improvements:\n- Qualification results are returned faster\n- No limit on the number of returned redeemables\n- Introduces new qualification scenarios, not available in the previous version\n 👍 Scenario Guide\n Read [the dedicated guide](/guides/checking-eligibility) to learn about some use cases this endpoint can cover.\n# Paging \nThe Voucherify Qualifications API request will return to you all of the redeemables available for the customer in batches of up to 50 redeemables per page. To get the next batch of redeemables, you need to use the starting_after cursor.\nTo process of paging the redeemables works in the following manner:\n- You send the first API request for Qualifications without the starting_after parameter.\n- The response will contain a parameter named has_more. If the parameters value is set to true, then more redeemables are available.\n- Get the value of the created_at parameter of the last returned redeemable. The value of this parameter will be used as a cursor to retrieve the next page of redeemables.\n- Send another API request for Qualification with the starting_after parameter set to the value taken from the created_at parameter from the last returned redeemable.\n- Voucherify will return the next page of redeemables.\n- If the has_more parameter is set to true, apply steps 3-5 to get the next page of redeemables.\n# Caching\nQualification has a 5-minute cache for the returned results. If you change your campaign settings or validation rules, the changes will apply to qualification results after the cache refreshes.",
+ "description": "\n\nThe Qualifications endpoint ignores the rules checking:\n- Limit of total redeemed discount amount per campaign\n- Limit of total redemptions count per campaign\n- Redemptions per customer\n- Redemptions per customer in a campaign\n- Total amount before discount\n\nGenerate a list of redeemables that are applicable in the context of the customer and order.\nThe new qualifications method is an improved version of [Campaign Qualifications](/api-reference/campaigns/examine-campaign-qualification), [Voucher Qualifications](/api-reference/vouchers/examine-voucher-qualification) API requests. The new qualification method introduces the following improvements:\n- Qualification results are returned faster\n- No limit on the number of returned redeemables\n- Introduces new qualification scenarios, not available in the previous version\n\nScenario Guide\nRead [the dedicated guide](/guides/checking-eligibility) to learn about some use cases this endpoint can cover.\n\n# Paging \nThe Voucherify Qualifications API request will return to you all of the redeemables available for the customer in batches of up to 50 redeemables per page. To get the next batch of redeemables, you need to use the starting_after cursor.\nTo process of paging the redeemables works in the following manner:\n- You send the first API request for Qualifications without the starting_after parameter.\n- The response will contain a parameter named has_more. If the parameters value is set to true, then more redeemables are available.\n- Get the value of the created_at parameter of the last returned redeemable. The value of this parameter will be used as a cursor to retrieve the next page of redeemables.\n- Send another API request for Qualification with the starting_after parameter set to the value taken from the created_at parameter from the last returned redeemable.\n- Voucherify will return the next page of redeemables.\n- If the has_more parameter is set to true, apply steps 3-5 to get the next page of redeemables.\n# Caching\nQualification has a 5-minute cache for the returned results. If you change your campaign settings or validation rules, the changes will apply to qualification results after the cache refreshes.",
"parameters": [],
"security": [
{
@@ -47416,7 +47416,7 @@
"Redemptions"
],
"summary": "Redeem Stackable Discounts",
- "description": "In the table below, you can see the logic the API follows to calculate discounts and amounts:\n\n\nAPI keys with a Merchant role cant use this endpoint.\n 📘 Rollbacks\n You cant roll back a child redemption. When you call rollback on a stacked redemption, all child redemptions will be rolled back. You need to refer to a parent redemption ID in your [rollback request](/api-reference/redemptions/rollback-stackable-redemptions). \n 📘 Also available on client-side\n This method is also accessible through public keys which you can use in client-side apps: mobile and web browser apps. Go to the dedicated [endpoint](/api-reference/client-side/redeem-stackable-discounts-client-side) to learn more.",
+ "description": "In the table below, you can see the logic the API follows to calculate discounts and amounts:\n\n\nAPI keys with a Merchant role cant use this endpoint.\n\nRollbacks\nYou cant roll back a child redemption. When you call rollback on a stacked redemption, all child redemptions will be rolled back. You need to refer to a parent redemption ID in your [rollback request](/api-reference/redemptions/rollback-stackable-redemptions).\n\n\nAlso available on client-side\nThis method is also accessible through public keys which you can use in client-side apps: mobile and web browser apps. Go to the dedicated [endpoint](/api-reference/client-side/redeem-stackable-discounts-client-side) to learn more.\n",
"parameters": [],
"security": [
{
@@ -47739,7 +47739,7 @@
"Vouchers"
],
"summary": "Generate Random Code",
- "description": "Create a generic (standalone) vouchers. You can choose to create a GIFT_VOUCHER, a DISCOUNT_VOUCHER, or a LOYALTY_CARD. \nWhen you create a new voucher, you can specify a type to create it.\nCreating a new voucher will create a new generic (standalone) vouchers if no campaign name or campaign_id is provided. However, if an ID or name of a campaign with the type set to STANDALONE is provided, the voucher will be added to such campaign. In case of the loyalty card, a campaign name is required.\nYou can optionally use the code parameter to define a specific code or the code_config parameter to design rules for Voucherify API to create a random code. If neither of the two parameters are passed, then a random code is generated by the Voucherify API.\nThis method will return an error when trying to create a voucher that already exists.\n🚧 Standalone Vouchers and Campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. The vouchers created with POST Create voucher and POST Generate random code endpoints do not have a campaign attached, so the values for campaign and campaign_id are null.\nTo create a generic (standalone) voucher with a type: STANDALONE, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.",
+ "description": "Create a generic (standalone) vouchers. You can choose to create a GIFT_VOUCHER, a DISCOUNT_VOUCHER, or a LOYALTY_CARD. \nWhen you create a new voucher, you can specify a type to create it.\nCreating a new voucher will create a new generic (standalone) vouchers if no campaign name or campaign_id is provided. However, if an ID or name of a campaign with the type set to STANDALONE is provided, the voucher will be added to such campaign. In case of the loyalty card, a campaign name is required.\nYou can optionally use the code parameter to define a specific code or the code_config parameter to design rules for Voucherify API to create a random code. If neither of the two parameters are passed, then a random code is generated by the Voucherify API.\nThis method will return an error when trying to create a voucher that already exists.\n\nStandalone Vouchers and Campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. The vouchers created with POST Create voucher and POST Generate random code endpoints do not have a campaign attached, so the values for campaign and campaign_id are null.\nTo create a generic (standalone) voucher with a type: STANDALONE, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.\n",
"parameters": [],
"security": [
{
@@ -49361,7 +49361,7 @@
"Vouchers"
],
"summary": "Create Voucher",
- "description": "Create a generic (standalone) voucher or a voucher in a campaign. You can choose to create a GIFT_VOUCHER, a DISCOUNT_VOUCHER, or a LOYALTY_CARD. The code path parameter can use all letters of the English alphabet, Arabic numerals and special characters.\nWhen you create a new voucher, you can specify a type to create it.\nIf no campaign name or campaign_id is provided, the new voucher will be a generic (standalone) one. However, if an ID or name of a campaign with the type set to STANDALONE is provided, the voucher will be added to this campaign. For a loyalty card, a campaign name or ID is required.\n🚧 Standalone Vouchers and Campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers created through The vouchers created with POST Create voucher and POST Generate random code endpoints do not have a campaign attached, so the values for campaign and campaign_id are null.\nTo create a generic (standalone) voucher with a type: STANDALONE, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.",
+ "description": "Create a generic (standalone) voucher or a voucher in a campaign. You can choose to create a GIFT_VOUCHER, a DISCOUNT_VOUCHER, or a LOYALTY_CARD. The code path parameter can use all letters of the English alphabet, Arabic numerals and special characters.\nWhen you create a new voucher, you can specify a type to create it.\nIf no campaign name or campaign_id is provided, the new voucher will be a generic (standalone) one. However, if an ID or name of a campaign with the type set to STANDALONE is provided, the voucher will be added to this campaign. For a loyalty card, a campaign name or ID is required.\n\nStandalone Vouchers and Campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers created through The vouchers created with POST Create voucher and POST Generate random code endpoints do not have a campaign attached, so the values for campaign and campaign_id are null.\nTo create a generic (standalone) voucher with a type: STANDALONE, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.\n",
"parameters": [],
"security": [
{
@@ -49868,7 +49868,7 @@
"Vouchers"
],
"summary": "Enable Voucher",
- "description": "There are various times when youll want to manage a vouchers accessibility. This can be done by two API methods for managing the voucher state - *enable* and *disable*. \n___\nThe method sets the voucher state to **active**. The voucher can be redeemed - only if the redemption occurs after the start date and the voucher is not expired.",
+ "description": "The method sets the voucher state to **active**. The voucher can be redeemed - only if the redemption occurs after the start date and the voucher is not expired.",
"parameters": [],
"security": [
{
@@ -49975,7 +49975,7 @@
"Vouchers"
],
"summary": "Disable Voucher",
- "description": "There are various times when youll want to manage a vouchers accessibility. This can be done by two API methods for managing the voucher state - *enable* and *disable*. \n___\nThis method sets the voucher state to **inactive**. The voucher cannot be redeemed.",
+ "description": "This method sets the voucher state to **inactive**. The voucher cannot be redeemed.",
"parameters": [],
"security": [
{
@@ -50568,7 +50568,7 @@
"Vouchers"
],
"summary": "Import Vouchers",
- "description": "Import generic (standalone) vouchers and gift cards into the repository.\nYou can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. \n Also, the request can include up to **10 MB** of data.\n 📘 Important notes\n - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z.\n - Custom code attributes (not supported by-default) need to be added as code **metadata**.\n - You **cannot import the same codes** to a single Voucherify Project.\nAny parameters not provided in the payload will be left blank or null.\nFor both **standalone discount vouchers and gift cards**, you can import the following fields: \n- code\n- category\n- active\n- type\n- start_date\n- expiration_date\n- redemption.quantity\n- additional_info\n- metadata\nFor **gift cards**, you can also import the following field:\n- gift.amount\nFor **discount vouchers**, you can import the discount object. The object will slightly vary depending on the type of discount. Each discount type **requires** the type to be defined in the import.\n\n\nFields other than the ones listed above wont be imported. Even if provided, they will be silently skipped.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).\n🚧 Standalone Vouchers and Campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers imported through the dashboard in the Vouchers section or through the API do not have a campaign attached, so the values for campaign and campaign_id are null.\nTo create a generic (standalone) voucher with a type: STANDALONE, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.",
+ "description": "Import generic (standalone) vouchers and gift cards into the repository.\nYou can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. \n Also, the request can include up to **10 MB** of data.\n\nImportant notes\n- **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z.\n- Custom code attributes (not supported by-default) need to be added as code **metadata**.\n- You **cannot import the same codes** to a single Voucherify Project.\n\nAny parameters not provided in the payload will be left blank or null.\nFor both **standalone discount vouchers and gift cards**, you can import the following fields: \n- code\n- category\n- active\n- type\n- start_date\n- expiration_date\n- redemption.quantity\n- additional_info\n- metadata\nFor **gift cards**, you can also import the following field:\n- gift.amount\nFor **discount vouchers**, you can import the discount object. The object will slightly vary depending on the type of discount. Each discount type **requires** the type to be defined in the import.\n\n\nFields other than the ones listed above wont be imported. Even if provided, they will be silently skipped.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).\n\nStandalone Vouchers and Campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers imported through the dashboard in the Vouchers section or through the API do not have a campaign attached, so the values for campaign and campaign_id are null.\nTo create a generic (standalone) voucher with a type: STANDALONE, use the [POST Create campaign](/api-reference/campaigns/create-campaign) endpoint.\n",
"parameters": [],
"security": [
{
@@ -50841,7 +50841,7 @@
"Vouchers"
],
"summary": "Import Vouchers using CSV",
- "description": "Import generic (standalone) vouchers into the repository using a CSV file.\nThe CSV file has to include headers in the first line. All properties listed in the file headers that cannot be mapped to standard voucher fields will be added to the metadata object.\nYou can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. \n Also, the request can include a max. **10 MB** CSV file.\nYou can find an example CSV file [here](/build/discount-code-import).\n___\n 📘 Standard voucher fields mapping\n - Go to the [import vouchers](/api-reference/vouchers/import-vouchers) endpoint to see all standard CSV fields description (body params section).\n - Supported CSV file headers: Code,Voucher Type,Value,Discount Type,Category,Start Date,Expiration Date,Redemption Limit,Redeemed Quantity, Redeemed Amount,Active,Additional Info,Custom Metadata Property Name\n- **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. \n - YYYY-MM-DD\n - YYYY-MM-DDTHH\n - YYYY-MM-DDTHH:mm\n - YYYY-MM-DDTHH:mm:ss\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ss.SSSZ\n - Custom code attributes (not supported by-default) need to be added as code **metadata**.\n - You **cannot import the same codes** to a single Voucherify project.\n - You can, however, upload the same codes to update them.\n 📘 Categories\n In the structure representing your data, you can define a category that the voucher belongs to. You can later use the category of a voucher to group and search by specific criteria in the Dashboard and using the [List Vouchers](/api-reference/vouchers/list-vouchers) endpoint.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).\nYou can pass the webhooks_enable true parameter to trigger a webhook sendout for created or updated vouchers. Configure the [respective webhooks](/api-reference/introduction-to-webhooks) in Project settings. For updated webhooks, a webhook is sent even if the voucher hasnt been changed in the CSV file.\n🚧 Generic (standalone) vouchers and campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers imported through the dashboard in the Vouchers section or through the API do not have a campaign attached, so the values for campaign and campaign_id are null.",
+ "description": "Import generic (standalone) vouchers into the repository using a CSV file.\nThe CSV file has to include headers in the first line. All properties listed in the file headers that cannot be mapped to standard voucher fields will be added to the metadata object.\nYou can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. \n Also, the request can include a max. **10 MB** CSV file.\nYou can find an example CSV file [here](/build/discount-code-import).\n___\n\nStandard voucher fields mapping\n- Go to the [import vouchers](/api-reference/vouchers/import-vouchers) endpoint to see all standard CSV fields description (body params section).\n- Supported CSV file headers: Code,Voucher Type,Value,Discount Type,Category,Start Date,Expiration Date,Redemption Limit,Redeemed Quantity, Redeemed Amount,Active,Additional Info,Custom Metadata Property Name\n- **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z.\n - YYYY-MM-DD\n - YYYY-MM-DDTHH\n - YYYY-MM-DDTHH:mm\n - YYYY-MM-DDTHH:mm:ss\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ss.SSSZ\n- Custom code attributes (not supported by-default) need to be added as code **metadata**.\n- You **cannot import the same codes** to a single Voucherify project.\n- You can, however, upload the same codes to update them.\n\n\nCategories\nIn the structure representing your data, you can define a category that the voucher belongs to. You can later use the category of a voucher to group and search by specific criteria in the Dashboard and using the [List Vouchers](/api-reference/vouchers/list-vouchers) endpoint.\n\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).\nYou can pass the webhooks_enable true parameter to trigger a webhook sendout for created or updated vouchers. Configure the [respective webhooks](/api-reference/introduction-to-webhooks) in Project settings. For updated webhooks, a webhook is sent even if the voucher hasnt been changed in the CSV file.\n\nGeneric (standalone) vouchers and campaigns\nGeneric (standalone) vouchers created through the Voucherify dashboard always create a campaign for that voucher. However, vouchers imported through the dashboard in the Vouchers section or through the API do not have a campaign attached, so the values for campaign and campaign_id are null.\n",
"parameters": [],
"security": [
{
@@ -50887,7 +50887,7 @@
"Vouchers"
],
"summary": "Update Vouchers in Bulk",
- "description": "Updates specific metadata parameters for each code, respectively, in one asynchronous operation.\nThe request can include up to **10 MB** of data.\nUpserts are not supported.\n 🚧 Currently, only **metadata** updates are supported.\nThe response returns a unique asynchronous action ID. Use this ID in the query paramater of the [GET Async Action](/api-reference/async-actions/get-async-action) endpoint to check, e.g.:\n- The status of your request (in queue, in progress, done, or failed)\n- Resources that failed to be updated\n- The report file with details about the update\nThis API request starts a process that affects Voucherify data in bulk. In the case of small jobs (like bulk update), the request is put into a queue and processed when every other bulk request placed in the queue prior to this request is finished.",
+ "description": "Updates specific metadata parameters for each code, respectively, in one asynchronous operation.\nThe request can include up to **10 MB** of data.\nUpserts are not supported.\n\nCurrently, only **metadata** updates are supported.\n\nThe response returns a unique asynchronous action ID. Use this ID in the query paramater of the [GET Async Action](/api-reference/async-actions/get-async-action) endpoint to check, e.g.:\n- The status of your request (in queue, in progress, done, or failed)\n- Resources that failed to be updated\n- The report file with details about the update\nThis API request starts a process that affects Voucherify data in bulk. In the case of small jobs (like bulk update), the request is put into a queue and processed when every other bulk request placed in the queue prior to this request is finished.",
"parameters": [],
"security": [
{
@@ -51037,7 +51037,7 @@
"Vouchers"
],
"summary": "Release Validation Session",
- "description": "Manually release a validation session that has been set up for the voucher. This method undoes the actions that are explained in the [Locking validation session](/guides/locking-validation-session) guide. \n 📘 Release session in the Dashboard\n You can also use the [Validations Manager](/optimize/validations-and-redemptions#sessions) in the Dashboard to unlock sessions.",
+ "description": "Manually release a validation session that has been set up for the voucher. This method undoes the actions that are explained in the [Locking validation session](/guides/locking-validation-session) guide. \n\nRelease session in the Dashboard\nYou can also use the [Validations Manager](/optimize/validations-and-redemptions#sessions) in the Dashboard to unlock sessions.\n",
"parameters": [],
"security": [
{
@@ -51059,7 +51059,7 @@
"Campaigns"
],
"summary": "Create Campaign",
- "description": "Method to create a batch of vouchers aggregated in one campaign. You can choose a variety of voucher types and define a unique pattern for generating codes. \n 📘 Global uniqueness\n All campaign codes are unique across the whole project. Voucherify will not allow you to generate 2 campaigns with the same coupon code. \n 🚧 Code generation status\n This is an asynchronous action; you cant read or modify a newly created campaign until the code generation is completed. See the creation_status field in the [campaign object](/api-reference/campaigns/campaign-object) description.",
+ "description": "Method to create a batch of vouchers aggregated in one campaign. You can choose a variety of voucher types and define a unique pattern for generating codes. \n\nGlobal uniqueness\nAll campaign codes are unique across the whole project. Voucherify will not allow you to generate 2 campaigns with the same coupon code.\n\n\nCode generation status\nThis is an asynchronous action; you cant read or modify a newly created campaign until the code generation is completed. See the creation_status field in the [campaign object](/api-reference/campaigns/campaign-object) description.\n",
"parameters": [],
"security": [
{
@@ -52254,7 +52254,7 @@
"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. \nFields other than the ones listed in the request body wont be modified. Even if provided, they will be silently skipped. \n 🚧 Vouchers will be affected\n This method will update vouchers aggregated in the campaign. It will affect all vouchers that are not published or redeemed yet.",
+ "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. \nFields other than the ones listed in the request body wont be modified. Even if provided, they will be silently skipped. \n\nVouchers will be affected\nThis method will update vouchers aggregated in the campaign. It will affect all vouchers that are not published or redeemed yet.\n",
"parameters": [],
"security": [
{
@@ -52865,7 +52865,7 @@
"Campaigns"
],
"summary": "Enable Campaign",
- "description": "There are various times when youll want to manage a campaigns accessibility. This can be done by two API methods for managing the campaign state - *enable* and *disable*. \nSets campaign state to **active**. The vouchers in this campaign can be redeemed - only if the redemption occurs after the start date of the campaign and voucher and the voucher and campaign are not expired.",
+ "description": "Sets campaign state to **active**. The vouchers in this campaign can be redeemed - only if the redemption occurs after the start date of the campaign and voucher and the voucher and campaign are not expired.",
"parameters": [],
"security": [
{
@@ -52910,7 +52910,7 @@
"Campaigns"
],
"summary": "Disable Campaign",
- "description": "There are various times when youll want to manage a campaigns accessibility. This can be done by two API methods for managing the campaign state - *enable* and *disable*. \nSets campaign state to **inactive**. The vouchers in this campaign can no longer be redeemed.",
+ "description": "Sets campaign state to **inactive**. The vouchers in this campaign can no longer be redeemed.",
"parameters": [],
"security": [
{
@@ -52955,7 +52955,7 @@
"Campaigns"
],
"summary": "List Campaign Transactions",
- "description": "Retrieves all transactions for the campaign with the given campaign ID or campaign name. The id filter denotes the unique transaction identifier.\n 🚧\n The endpoint works only for gift card and loyalty campaigns.",
+ "description": "Retrieves all transactions for the campaign with the given campaign ID or campaign name. The id filter denotes the unique transaction identifier.\n\nThe endpoint works only for gift card and loyalty campaigns.\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -53109,7 +53109,7 @@
}
],
"summary": "Export Campaign Transactions",
- "description": "Export transactions is an asynchronous process that generates a CSV file with the data about credit movements on all gift cards or point movements on all loyalty cards in a given campaign.\nTo export transactions:\n1. In the export request, use parameters to select which fields will be exported, in what order, and which data will be filtered.\n2. Use the returned id to track the export status with the [GET Export](/api-reference/exports/get-export) method.\n3. In the GET Export method, when the returned status field has the DONE value, the export file has been generated.\n4. Use the URL in the result property to download the file. You must be logged to your Voucherify account on a given cluster in the browser to be able to download the file.\nAn export request will almost always result in a single file being generated by the system. However, when the data volume is large, the system may split the results into multiple files.\nAn example export file can look as follows:\n\n\n 👍 Export Loyalty Campaign Transactions\n For loyalty campaigns, this method works in the same way the [POST Export Loyalty Campaign Transactions](/api-reference/loyalties/export-loyalty-campaign-transactions) does.",
+ "description": "Export transactions is an asynchronous process that generates a CSV file with the data about credit movements on all gift cards or point movements on all loyalty cards in a given campaign.\nTo export transactions:\n1. In the export request, use parameters to select which fields will be exported, in what order, and which data will be filtered.\n2. Use the returned id to track the export status with the [GET Export](/api-reference/exports/get-export) method.\n3. In the GET Export method, when the returned status field has the DONE value, the export file has been generated.\n4. Use the URL in the result property to download the file. You must be logged to your Voucherify account on a given cluster in the browser to be able to download the file.\nAn export request will almost always result in a single file being generated by the system. However, when the data volume is large, the system may split the results into multiple files.\nAn example export file can look as follows:\n\n\n\nExport Loyalty Campaign Transactions\nFor loyalty campaigns, this method works in the same way the [POST Export Loyalty Campaign Transactions](/api-reference/loyalties/export-loyalty-campaign-transactions) does.\n",
"requestBody": {
"description": "Specify the parameters for the transaction export.",
"content": {
@@ -53238,7 +53238,7 @@
"Campaigns"
],
"summary": "Get Campaign Summary",
- "description": "Returns data for campaign analytics, covering validations, redemptions, publications, and other details specific to a given campaign type.\nUse start_date and end_date to narrow down the data to specific periods.\n🚧 Campaigns created before 17 June 2025\nThis endpoint returns analytics data for campaigns that were created after 17 June 2025. Older campaigns return empty data.",
+ "description": "Returns data for campaign analytics, covering validations, redemptions, publications, and other details specific to a given campaign type.\nUse start_date and end_date to narrow down the data to specific periods.\n\nCampaigns created before 17 June 2025\nThis endpoint returns analytics data for campaigns that were created after 17 June 2025. Older campaigns return empty data.\n",
"parameters": [
{
"name": "start_date",
@@ -55539,7 +55539,7 @@
"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.\n# Pagination\n 🚧 Important!\n 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.\n# Filter Query\nThe filters query parameter allows for joining multiple parameters with logical operators. The syntax looks as follows:\n\n## Examples\n\n",
+ "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.\n# Pagination\n\nImportant!\nIf 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.\n\n# Filter Query\nThe filters query parameter allows for joining multiple parameters with logical operators. The syntax looks as follows:\n\n## Examples\n\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -55766,7 +55766,7 @@
"Publications"
],
"summary": "Create Publication",
- "description": "This method selects vouchers that are suitable for publication, adds a publish entry and returns the publication.\nA voucher is suitable for publication when its active and hasnt been published yet. \n 🚧 Clearly define the source of the voucher\n You must clearly define which source you want to publish the voucher code from. It can either be a code from a campaign or a specific voucher identified by a code. \n 🚧 Publish multiple vouchers\n In case you want to publish multiple vouchers within a single publication, you need to specify the campaign name and number of vouchers you want to publish. \n 📘 Auto-update campaign\n In case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use an **auto-update** campaign.",
+ "description": "This method selects vouchers that are suitable for publication, adds a publish entry and returns the publication.\nA voucher is suitable for publication when its active and hasnt been published yet. \n\nClearly define the source of the voucher\nYou must clearly define which source you want to publish the voucher code from. It can either be a code from a campaign or a specific voucher identified by a code.\n\n\nPublish multiple vouchers\nIn case you want to publish multiple vouchers within a single publication, you need to specify the campaign name and number of vouchers you want to publish.\n\n\nAuto-update campaign\nIn case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use an **auto-update** campaign.\n",
"parameters": [
{
"schema": {
@@ -57908,7 +57908,7 @@
"Redemptions"
],
"summary": "Rollback Redemption",
- "description": "Your business logic may include a case when you need to undo a redemption. You can revert a redemption by calling this API endpoint. This endpoint rolls back only single redemptions, meaning those that are not stacked. Stacked redemptions belong to a parent redemption. To roll back a parent redemption, including all of its individual redemptions, use the [POST Rollback Stackable Redemptions](/api-reference/redemptions/rollback-stackable-redemptions) \n🚧 \nYou can roll back a redemption up to 3 months back. \n # Effect \nThe operation \n- creates a rollback entry in vouchers redemption history (redemption.redemption_entries) and \n- gives 1 redemption back to the pool (decreases redeemed_quantity by 1). \n# Returned funds \nIn case of *gift card vouchers*, this method returns funds back according to the source redemption. In case of *loyalty card vouchers*, this method returns points back according to the source redemption.",
+ "description": "Your business logic may include a case when you need to undo a redemption. You can revert a redemption by calling this API endpoint. This endpoint rolls back only single redemptions, meaning those that are not stacked. Stacked redemptions belong to a parent redemption. To roll back a parent redemption, including all of its individual redemptions, use the [POST Rollback Stackable Redemptions](/api-reference/redemptions/rollback-stackable-redemptions) \n\nYou can roll back a redemption up to 3 months back.\n\n # Effect \nThe operation \n- creates a rollback entry in vouchers redemption history (redemption.redemption_entries) and \n- gives 1 redemption back to the pool (decreases redeemed_quantity by 1). \n# Returned funds \nIn case of *gift card vouchers*, this method returns funds back according to the source redemption. In case of *loyalty card vouchers*, this method returns points back according to the source redemption.",
"parameters": [
{
"schema": {
@@ -58595,7 +58595,7 @@
"Redemptions"
],
"summary": "Rollback Stackable Redemptions",
- "description": "Rollback a stackable redemption. When you roll back a stacked redemption, all child redemptions will be rolled back. Provide the parent redemption ID as the path parameter. However, you can use this endpoint to roll back a single redemption that does not have a parent, similarly to [POST Rollback redemption](/api-reference/redemptions/rollback-redemption).\n🚧 \n You can roll back a redemption up to 3 months back.",
+ "description": "Rollback a stackable redemption. When you roll back a stacked redemption, all child redemptions will be rolled back. Provide the parent redemption ID as the path parameter. However, you can use this endpoint to roll back a single redemption that does not have a parent, similarly to [POST Rollback redemption](/api-reference/redemptions/rollback-redemption).\n\nYou can roll back a redemption up to 3 months back.\n",
"parameters": [
{
"schema": {
@@ -58680,11 +58680,12 @@
"/v1/loyalties": {
"get": {
"operationId": "list-loyalty-programs",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Campaigns",
- "description": "Returns a list of your loyalty campaigns.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nReturns a list of your loyalty campaigns.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -58887,11 +58888,12 @@
},
"post": {
"operationId": "create-loyalty-program",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Create Loyalty Campaign",
- "description": "Creates a batch of [loyalty cards](/api-reference/loyalties/get-member) aggregated in a single loyalty campaign. It also allows you to define a custom codes pattern. \n 📘 Global uniqueness\n All codes are unique across the whole project. Voucherify wont allow to generate the same codes in any of your campaigns.\n 🚧 Asynchronous action!\n This is an asynchronous action, you cant read or modify a newly created campaign until the code generation is completed. See creation_status field in the [loyalty campaign object](/api-reference/loyalties/loyalty-campaign-object) description.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nCreates a batch of [loyalty cards](/api-reference/loyalties/get-member) aggregated in a single loyalty campaign. It also allows you to define a custom codes pattern. \n\nGlobal uniqueness\nAll codes are unique across the whole project. Voucherify wont allow to generate the same codes in any of your campaigns.\n\n\nAsynchronous action!\nThis is an asynchronous action, you cant read or modify a newly created campaign until the code generation is completed. See creation_status field in the [loyalty campaign object](/api-reference/loyalties/loyalty-campaign-object) description.\n",
"parameters": [],
"security": [
{
@@ -59096,11 +59098,12 @@
],
"get": {
"operationId": "get-loyalty-program",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Loyalty Campaign",
- "description": "Retrieve a specific loyalty campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve a specific loyalty campaign.",
"parameters": [],
"security": [
{
@@ -59203,11 +59206,12 @@
},
"put": {
"operationId": "update-loyalty-program",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Update Loyalty Campaign",
- "description": "Updates a loyalty program. \nFields other than those specified in the allowed request body payload wont be modified (even if provided they are silently skipped). Any parameters not provided will be left unchanged. \nThis method will update the [loyalty cards](/api-reference/loyalties/get-member) which have not been published or redeemed yet.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nUpdates a loyalty program. \nFields other than those specified in the allowed request body payload wont be modified (even if provided they are silently skipped). Any parameters not provided will be left unchanged. \nThis method will update the [loyalty cards](/api-reference/loyalties/get-member) which have not been published or redeemed yet.",
"parameters": [],
"security": [
{
@@ -59393,11 +59397,12 @@
},
"delete": {
"operationId": "delete-loyalty-program",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Delete Loyalty Campaign",
- "description": "Deletes a loyalty campaign and all related loyalty cards. This action cannot be undone. Also, it immediately removes any redemptions on loyalty cards.\nIf the force parameter is set to false or not set at all, the loyalty campaign and all related loyalty cards will be moved to [the bin](/api-reference/bin/list-bin-entries).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nDeletes a loyalty campaign and all related loyalty cards. This action cannot be undone. Also, it immediately removes any redemptions on loyalty cards.\nIf the force parameter is set to false or not set at all, the loyalty campaign and all related loyalty cards will be moved to [the bin](/api-reference/bin/list-bin-entries).",
"parameters": [
{
"schema": {
@@ -59449,11 +59454,12 @@
],
"get": {
"operationId": "list-members",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Members",
- "description": "Returns a list of your loyalty cards. The loyalty cards are sorted by creation date, with the most recent loyalty cards appearing first.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nReturns a list of your loyalty cards. The loyalty cards are sorted by creation date, with the most recent loyalty cards appearing first.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -59624,11 +59630,12 @@
},
"post": {
"operationId": "add-member",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Add Member",
- "description": "This method assigns a loyalty card to a customer. It selects a [loyalty card](/api-reference/vouchers/get-voucher) suitable for publication, adds a publish entry, and returns the published voucher. \nA voucher is suitable for publication when its active and hasnt been published yet. \n 📘 Auto-update campaign\n In case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use **auto-update** campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nThis method assigns a loyalty card to a customer. It selects a [loyalty card](/api-reference/vouchers/get-voucher) suitable for publication, adds a publish entry, and returns the published voucher. \nA voucher is suitable for publication when its active and hasnt been published yet. \n\nAuto-update campaign\nIn case you want to ensure the number of publishable codes increases automatically with the number of customers, you should use **auto-update** campaign.\n",
"parameters": [],
"security": [
{
@@ -59793,11 +59800,12 @@
],
"get": {
"operationId": "get-member-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Member with campaign ID",
- "description": "Retrieves the loyalty card with the given member ID (i.e. voucher code).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieves the loyalty card with the given member ID (i.e. voucher code).",
"parameters": [],
"security": [
{
@@ -59889,11 +59897,12 @@
],
"get": {
"operationId": "get-member",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Member",
- "description": "Retrieve loyalty card with the given member ID (i.e. voucher code). \n 📘 Alternative endpoint\n This endpoint is an alternative to this [endpoint](/api-reference/loyalties/get-member-with-campaign-id). The URL was re-designed to allow you to retrieve loyalty card details without having to provide the campaignId as a path parameter.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve loyalty card with the given member ID (i.e. voucher code). \n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/get-member-with-campaign-id). The URL was re-designed to allow you to retrieve loyalty card details without having to provide the campaignId as a path parameter.\n",
"parameters": [],
"security": [
{
@@ -59985,11 +59994,12 @@
],
"get": {
"operationId": "list-campaign-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Campaign Pending Points",
- "description": "Lists all pending points that are currently assigned to all loyalty cards in a campaign. Once the points are added to the card, the entry is no longer returned.\n👍 Configuring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nLists all pending points that are currently assigned to all loyalty cards in a campaign. Once the points are added to the card, the entry is no longer returned.\n\nConfiguring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n",
"parameters": [
{
"schema": {
@@ -60193,11 +60203,12 @@
],
"get": {
"operationId": "list-member-pending-points-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Pending Points with campaign ID",
- "description": "Lists all pending points that are currently assigned to the loyalty card. Once the points are added to the card, the entry is no longer returned.\n👍 Configuring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nLists all pending points that are currently assigned to the loyalty card. Once the points are added to the card, the entry is no longer returned.\n\nConfiguring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n",
"parameters": [
{
"schema": {
@@ -60392,11 +60403,12 @@
],
"get": {
"operationId": "list-member-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Pending Points",
- "description": "\n 📘 Alternative endpoint\n This endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-member-pending-points-with-campaign-id). The URL was re-designed to list member pending points without having to provide the campaignId as a path parameter.\nLists all pending points that are currently assigned to the loyalty card. Once the points are added to the card, the entry is no longer returned.\n👍 Configuring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-member-pending-points-with-campaign-id). The URL was re-designed to list member pending points without having to provide the campaignId as a path parameter.\n\nLists all pending points that are currently assigned to the loyalty card. Once the points are added to the card, the entry is no longer returned.\n\nConfiguring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n",
"parameters": [
{
"schema": {
@@ -60600,11 +60612,12 @@
],
"post": {
"operationId": "activate-member-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Activate Member Pending Points",
- "description": "Activate manually the pending points and add them to the loyalty card. The pending points are determined by the pending point ID.\nOnce activated, the pending point entry with that ID is not listed by the endpoints: List member ([with campaign ID](/api-reference/loyalties/list-member-pending-points-with-campaign-id), [without campaign ID](/api-reference/loyalties/list-member-pending-points)), [List campaign pending points](/api-reference/loyalties/list-campaign-pending-points).\nThis **POST** method does not require a request body.\n👍 Configuring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nActivate manually the pending points and add them to the loyalty card. The pending points are determined by the pending point ID.\nOnce activated, the pending point entry with that ID is not listed by the endpoints: List member ([with campaign ID](/api-reference/loyalties/list-member-pending-points-with-campaign-id), [without campaign ID](/api-reference/loyalties/list-member-pending-points)), [List campaign pending points](/api-reference/loyalties/list-campaign-pending-points).\nThis **POST** method does not require a request body.\n\nConfiguring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n",
"parameters": [],
"security": [
{
@@ -60665,11 +60678,12 @@
],
"post": {
"operationId": "adjust-member-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Adjust Member Pending Points",
- "description": "Adjusts the pending points with a given ID. You can add or subtract the number of points.\n👍 Configuring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nAdjusts the pending points with a given ID. You can add or subtract the number of points.\n\nConfiguring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n",
"parameters": [],
"security": [
{
@@ -60750,11 +60764,12 @@
],
"post": {
"operationId": "cancel-member-pending-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Cancel Member Pending Points",
- "description": "Cancel manually the pending points for the loyalty card. The pending points are determined by the pending point ID.\nOnce canceled, the pending point entry with that ID is not listed by the endpoints: List member ([with campaign ID](/api-reference/loyalties/list-member-pending-points-with-campaign-id), [without campaign ID](/api-reference/loyalties/list-member-pending-points)), [List campaign pending points](/api-reference/loyalties/list-campaign-pending-points).\nThis **POST** method does not require a request body and it returns an empty, 204, response.\n👍 Configuring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nCancel manually the pending points for the loyalty card. The pending points are determined by the pending point ID.\nOnce canceled, the pending point entry with that ID is not listed by the endpoints: List member ([with campaign ID](/api-reference/loyalties/list-member-pending-points-with-campaign-id), [without campaign ID](/api-reference/loyalties/list-member-pending-points)), [List campaign pending points](/api-reference/loyalties/list-campaign-pending-points).\nThis **POST** method does not require a request body and it returns an empty, 204, response.\n\nConfiguring pending points\nPending points are configured as part of an earning rule with [POST Create earning rule](/api-reference/loyalties/create-earning-rule) or [PUT Update earning rule](/api-reference/loyalties/update-earning-rule).\n",
"parameters": [],
"security": [
{
@@ -60792,11 +60807,12 @@
],
"get": {
"operationId": "list-member-activity-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Activity with campaign ID",
- "description": "Retrieves the list of activities for the given member ID related to a voucher and customer who is the holder of the voucher.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieves the list of activities for the given member ID related to a voucher and customer who is the holder of the voucher.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -60852,11 +60868,12 @@
],
"get": {
"operationId": "list-member-activity",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Activity",
- "description": "\n 📘 Alternative endpoint\n This endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-member-activity-with-campaign-id). The URL was re-designed to allow you to get member activities without having to provide the campaignId as a path parameter.\nRetrieves the list of activities for the given member ID related to a voucher and customer who is the holder of the voucher.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-member-activity-with-campaign-id). The URL was re-designed to allow you to get member activities without having to provide the campaignId as a path parameter.\n\nRetrieves the list of activities for the given member ID related to a voucher and customer who is the holder of the voucher.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -60921,11 +60938,12 @@
],
"post": {
"operationId": "update-loyalty-card-balance-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Adjust Loyalty Card Balance with campaign ID",
- "description": "This method adds or removes balance to an existing loyalty card that is assigned to a holder. The removal of points will consume the points that expire the soonest. \n >🚧 Async Action\n \n This is an async action. If you want to perform several add or remove loyalty card balance actions in a short time and their order matters, set up sufficient time-out between the calls.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nThis method adds or removes balance to an existing loyalty card that is assigned to a holder. The removal of points will consume the points that expire the soonest. \n \nAsync Action\nThis is an async action. If you want to perform several add or remove loyalty card balance actions in a short time and their order matters, set up sufficient time-out between the calls.\n",
"parameters": [],
"security": [
{
@@ -61013,11 +61031,12 @@
],
"post": {
"operationId": "update-loyalty-card-balance",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Adjust Loyalty Card Balance",
- "description": "This method gives adds or removes balance to an existing loyalty card that is assigned to a holder. The removal of points will consume the points that expire the soonest. \n >🚧 Async Action\n \n This is an async action. If you want to perform several add or remove loyalty card balance actions in a short time and their order matters, set up sufficient time-out between the calls.\n 📘 Alternative endpoint\n This endpoint is an alternative to this [endpoint](/api-reference/loyalties/adjust-loyalty-card-balance-with-campaign-id). The URL was re-designed to allow you to add or remove loyalty card balance without having to provide the campaignId as a path parameter.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nThis method gives adds or removes balance to an existing loyalty card that is assigned to a holder. The removal of points will consume the points that expire the soonest. \n \nAsync Action\nThis is an async action. If you want to perform several add or remove loyalty card balance actions in a short time and their order matters, set up sufficient time-out between the calls.\n\n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/adjust-loyalty-card-balance-with-campaign-id). The URL was re-designed to allow you to add or remove loyalty card balance without having to provide the campaignId as a path parameter.\n",
"parameters": [],
"security": [
{
@@ -61101,11 +61120,12 @@
],
"post": {
"operationId": "transfer-points",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Transfer Loyalty Points",
- "description": "Transfer points between different loyalty cards which have holders.\nProvide the campaign ID and the loyalty card ID you want the points to be transferred to as path parameters. In the request body, provide the loyalty cards you want the points to be transferred from and the number of points to transfer from each card.\nTransfer works only for loyalty cards that have holders, meaning the cards were published to customers.\nThe transferred points expire according to the target program expiration rules.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nTransfer points between different loyalty cards which have holders.\nProvide the campaign ID and the loyalty card ID you want the points to be transferred to as path parameters. In the request body, provide the loyalty cards you want the points to be transferred from and the number of points to transfer from each card.\nTransfer works only for loyalty cards that have holders, meaning the cards were published to customers.\nThe transferred points expire according to the target program expiration rules.",
"parameters": [],
"security": [
{
@@ -61221,11 +61241,12 @@
],
"get": {
"operationId": "list-loyalty-campaign-transactions",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Campaign Transactions",
- "description": "Retrieves all transactions for the campaign with the given campaign ID or campaign name.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieves all transactions for the campaign with the given campaign ID or campaign name.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -61368,6 +61389,7 @@
],
"post": {
"operationId": "export-loyalty-campaign-transactions",
+ "deprecated": true,
"tags": [
"Loyalties"
],
@@ -61379,7 +61401,7 @@
}
],
"summary": "Export Loyalty Campaign Transactions",
- "description": "Export transactions is an asynchronous process that generates a CSV file with the data about or point movements on all loyalty cards in a given campaign.\nTo export transactions:\n1. In the export request, use parameters to select which fields will be exported, in what order, and which data will be filtered.\n2. Use the returned id to track the export status with the [GET Export](/api-reference/exports/get-export) method.\n3. In the GET Export method, when the returned status field has the DONE value, the export file has been generated.\n4. Use the URL in the result property to download the file. You must be logged to your Voucherify account on a given cluster in the browser to be able to download the file.\nAn export request will almost always result in a single file being generated by the system. However, when the data volume is large, the system may split the results into multiple files.\nAn example export file can look as follows:\n\n\n 👍 Export Campaign Transactions\n This method works in the same way the [POST Export Campaign Transactions](/api-reference/campaigns/export-campaign-transactions) does, but it is limited to loyalty campaigns only. The POST Export Campaign Transactions method can also export gift card campaign transactions.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nExport transactions is an asynchronous process that generates a CSV file with the data about or point movements on all loyalty cards in a given campaign.\nTo export transactions:\n1. In the export request, use parameters to select which fields will be exported, in what order, and which data will be filtered.\n2. Use the returned id to track the export status with the [GET Export](/api-reference/exports/get-export) method.\n3. In the GET Export method, when the returned status field has the DONE value, the export file has been generated.\n4. Use the URL in the result property to download the file. You must be logged to your Voucherify account on a given cluster in the browser to be able to download the file.\nAn export request will almost always result in a single file being generated by the system. However, when the data volume is large, the system may split the results into multiple files.\nAn example export file can look as follows:\n\n\n\nExport Campaign Transactions\nThis method works in the same way the [POST Export Campaign Transactions](/api-reference/campaigns/export-campaign-transactions) does, but it is limited to loyalty campaigns only. The POST Export Campaign Transactions method can also export gift card campaign transactions.\n",
"requestBody": {
"description": "Specify the parameters for the transaction export.",
"content": {
@@ -61513,11 +61535,12 @@
],
"get": {
"operationId": "list-loyalty-card-transactions-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Card Transactions with campaign ID",
- "description": "Retrieve transaction data related to point movements for a specific loyalty card.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve transaction data related to point movements for a specific loyalty card.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -61868,11 +61891,12 @@
],
"get": {
"operationId": "list-loyalty-card-transactions",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Card Transactions",
- "description": "Retrieve transaction data related to point movements for a specific loyalty card.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve transaction data related to point movements for a specific loyalty card.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -62223,11 +62247,12 @@
],
"post": {
"operationId": "export-loyalty-card-transactions",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Export Loyalty Card Transactions",
- "description": "Export transactions that are associated with point movements on a loyalty card.\n\n\n",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nExport transactions that are associated with point movements on a loyalty card.\n\n\n",
"parameters": [],
"security": [
{
@@ -62366,11 +62391,12 @@
],
"post": {
"operationId": "export-loyalty-card-transactions-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Export Loyalty Card Transactions with campaign ID",
- "description": "Export transactions that are associated with point movements on a loyalty card.\n\n\n",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nExport transactions that are associated with point movements on a loyalty card.\n\n\n",
"parameters": [],
"security": [
{
@@ -62509,11 +62535,12 @@
],
"get": {
"operationId": "list-points-expiration",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Card Point Expiration",
- "description": "Retrieve loyalty point expiration buckets for a given loyalty card. Expired point buckets are not returned in this endpoint. You can use the [Exports API](/api-reference/exports/create-export) to retrieve a list of both ACTIVE and EXPIRED point buckets.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve loyalty point expiration buckets for a given loyalty card. Expired point buckets are not returned in this endpoint. You can use the [Exports API](/api-reference/exports/create-export) to retrieve a list of both ACTIVE and EXPIRED point buckets.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -62616,11 +62643,12 @@
],
"post": {
"operationId": "create-points-expiration-export",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Export Loyalty Campaign Point Expiration",
- "description": "Schedule the generation of a point expiration CSV file for a particular campaign. It can list point buckets, which can have an ACTIVE or EXPIRED status.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nSchedule the generation of a point expiration CSV file for a particular campaign. It can list point buckets, which can have an ACTIVE or EXPIRED status.",
"parameters": [],
"security": [
{
@@ -62784,11 +62812,12 @@
],
"get": {
"operationId": "list-earning-rules",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Earning Rules",
- "description": "Returns a list of all earning rules within a given campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nReturns a list of all earning rules within a given campaign.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -63350,11 +63379,12 @@
},
"post": {
"operationId": "create-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Create Earning Rule",
- "description": "Create earning rules for a loyalty campaign.\n 🚧 Maximum number of earning rules\n You can create up to 100 earning rules per project. The limit can be customized for clients with a single-tenant setup.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nCreate earning rules for a loyalty campaign.\n\nMaximum number of earning rules\nYou can create up to 100 earning rules per project. The limit can be customized for clients with a single-tenant setup.\n",
"parameters": [],
"security": [
{
@@ -64520,11 +64550,12 @@
],
"get": {
"operationId": "get-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Earning Rule",
- "description": "Retrieves an earning rule assigned to a campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieves an earning rule assigned to a campaign.",
"parameters": [],
"security": [
{
@@ -64799,11 +64830,12 @@
},
"put": {
"operationId": "update-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Update Earning Rule",
- "description": "Update an earning rule definition.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nUpdate an earning rule definition.",
"parameters": [],
"security": [
{
@@ -64908,11 +64940,12 @@
},
"delete": {
"operationId": "delete-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Delete Earning Rule",
- "description": "This method deletes an earning rule for a specific loyalty campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nThis method deletes an earning rule for a specific loyalty campaign.",
"parameters": [],
"security": [
{
@@ -64950,11 +64983,12 @@
],
"post": {
"operationId": "enable-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Enable Earning Rule",
- "description": "Enable an earning rule.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nEnable an earning rule.",
"parameters": [],
"security": [
{
@@ -65033,11 +65067,12 @@
],
"post": {
"operationId": "disable-earning-rule",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Disable Earning Rule",
- "description": "Disable an earning rule.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nDisable an earning rule.",
"parameters": [],
"security": [
{
@@ -65101,11 +65136,12 @@
],
"get": {
"operationId": "list-member-rewards",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member Rewards",
- "description": "Retrieves the list of rewards that the given customer (identified by member_id, which is a loyalty card assigned to a particular customer) **can get in exchange for loyalty points**. \nYou can use the affordable_only parameter to limit the results to rewards that the customer can actually afford (only rewards whose price in points is not higher than the loyalty points balance on a loyalty card). \nPlease note that rewards that are disabled (i.e. set to Not Available in the Dashboard) for a given loyalty tier reward mapping will not be returned in this endpoint.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieves the list of rewards that the given customer (identified by member_id, which is a loyalty card assigned to a particular customer) **can get in exchange for loyalty points**. \nYou can use the affordable_only parameter to limit the results to rewards that the customer can actually afford (only rewards whose price in points is not higher than the loyalty points balance on a loyalty card). \nPlease note that rewards that are disabled (i.e. set to Not Available in the Dashboard) for a given loyalty tier reward mapping will not be returned in this endpoint.",
"parameters": [
{
"in": "query",
@@ -65349,11 +65385,12 @@
],
"get": {
"operationId": "get-reward-details",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Reward Details",
- "description": "Get reward details in the context of a loyalty campaign and reward assignment ID.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nGet reward details in the context of a loyalty campaign and reward assignment ID.",
"parameters": [],
"security": [
{
@@ -65453,11 +65490,12 @@
],
"get": {
"operationId": "list-reward-assignments-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Reward Assignments with campaign ID",
- "description": "Returns reward assignments from a given loyalty campaign.\n 📘 Alternative endpoint\n This endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-campaign-rewards). The URL was re-designed to be more contextual to the type of data returned in the response.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nReturns reward assignments from a given loyalty campaign.\n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/list-campaign-rewards). The URL was re-designed to be more contextual to the type of data returned in the response.\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -65649,11 +65687,12 @@
],
"get": {
"operationId": "list-reward-assignments-2",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Campaign Rewards",
- "description": "Returns active rewards from a given loyalty campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nReturns active rewards from a given loyalty campaign.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -65739,11 +65778,12 @@
},
"post": {
"operationId": "create-reward-assignment-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Create Loyalty Campaign Reward Assignment",
- "description": "Add rewards to a loyalty campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nAdd rewards to a loyalty campaign.",
"parameters": [],
"security": [
{
@@ -65854,11 +65894,12 @@
],
"get": {
"operationId": "get-reward-assignment-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Campaign Reward Assignments",
- "description": "Retrieve specific reward assignment.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve specific reward assignment.",
"parameters": [],
"security": [
{
@@ -65921,11 +65962,12 @@
],
"get": {
"operationId": "get-reward-assignment-2",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Campaign Reward Assignment",
- "description": "Retrieve specific reward assignment.\n 📘 Alternative endpoint\n This endpoint is an alternative to this [endpoint](/api-reference/loyalties/get-campaign-reward-assignments). ",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve specific reward assignment.\n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/get-campaign-reward-assignments).\n",
"parameters": [],
"security": [
{
@@ -65966,11 +66008,12 @@
},
"put": {
"operationId": "update-reward-assignment-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Update Campaign Reward Assignment",
- "description": "Updates rewards parameters, i.e. the points cost for the specific reward.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nUpdates rewards parameters, i.e. the points cost for the specific reward.",
"parameters": [],
"security": [
{
@@ -66032,11 +66075,12 @@
},
"delete": {
"operationId": "delete-reward-assignment-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Delete Campaign Reward Assignment",
- "description": "This method deletes a reward assignment for a particular loyalty campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nThis method deletes a reward assignment for a particular loyalty campaign.",
"parameters": [],
"security": [
{
@@ -66074,11 +66118,12 @@
],
"post": {
"operationId": "redeem-reward-1",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Redeem Reward with campaign ID",
- "description": "Exchange points from a loyalty card for a specified reward. This API method returns an assigned award in the response. It means that if a requesting customer gets a coupon code with a discount for the next order, that discount code will be visible in response as part of the reward object definition.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nExchange points from a loyalty card for a specified reward. This API method returns an assigned award in the response. It means that if a requesting customer gets a coupon code with a discount for the next order, that discount code will be visible in response as part of the reward object definition.",
"parameters": [],
"security": [
{
@@ -67513,11 +67558,12 @@
],
"post": {
"operationId": "redeem-reward",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Redeem Reward",
- "description": "\n 📘 Alternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/redeem-reward-with-campaign-id). The URL was re-designed to allow you to redeem a reward without having to provide the campaignId as a path parameter.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\n\nAlternative endpoint\nThis endpoint is an alternative to this [endpoint](/api-reference/loyalties/redeem-reward-with-campaign-id). The URL was re-designed to allow you to redeem a reward without having to provide the campaignId as a path parameter.\n",
"parameters": [],
"security": [
{
@@ -67791,11 +67837,12 @@
],
"get": {
"operationId": "list-loyalty-tiers",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Tiers",
- "description": "Retrieve a list of loyalty tiers which were added to the loyalty program.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve a list of loyalty tiers which were added to the loyalty program.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -67947,11 +67994,12 @@
},
"post": {
"operationId": "create-in-bulk-loyalty-tiers",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Create loyalty tiers",
- "description": "Creates loyalty tiers for desired campaign.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nCreates loyalty tiers for desired campaign.",
"parameters": [],
"security": [
{
@@ -68006,11 +68054,12 @@
],
"get": {
"operationId": "get-loyalty-tier",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "Get Loyalty Tier",
- "description": "Retrieve a loyalty tier from a loyalty campaign by the loyalty tier ID.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve a loyalty tier from a loyalty campaign by the loyalty tier ID.",
"parameters": [],
"security": [
{
@@ -68095,11 +68144,12 @@
],
"get": {
"operationId": "list-member-loyalty-tier",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Member's Loyalty Tiers",
- "description": "Retrieve member tiers using the loyalty card ID.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve member tiers using the loyalty card ID.",
"parameters": [],
"security": [
{
@@ -68209,11 +68259,12 @@
],
"get": {
"operationId": "list-loyalty-tier-earning-rules",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Tier Earning Rules",
- "description": "Retrieve available earning rules for a given tier and the calculation method for earning points.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nRetrieve available earning rules for a given tier and the calculation method for earning points.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -68821,11 +68872,12 @@
],
"get": {
"operationId": "list-loyalty-tier-rewards",
+ "deprecated": true,
"tags": [
"Loyalties"
],
"summary": "List Loyalty Tier Rewards",
- "description": "Get available rewards for a given tier.",
+ "description": "\nLegacy loyalty API\nThis endpoint belongs to the legacy loyalty API (/v1/loyalties).\nVoucherify will not develop new features for this API. However, critical issues may still receive fixes.\nFor new integrations, use [Loyalty v2](/build/loyalty-overview).\nIf you have questions, contact [Voucherify support](https://www.voucherify.io/contact-support Contact Voucherify support).\n\nGet available rewards for a given tier.",
"parameters": [],
"security": [
{
@@ -69280,7 +69332,7 @@
"Customers"
],
"summary": "Create Customer",
- "description": "Creates a customer object.\n 📘 Upsert Mode\n If you pass an id or a source_id that already exists in the customer database, Voucherify will return a related customer object with updated fields.",
+ "description": "Creates a customer object.\n\nUpsert Mode\nIf you pass an id or a source_id that already exists in the customer database, Voucherify will return a related customer object with updated fields.\n",
"parameters": [],
"security": [
{
@@ -69724,7 +69776,7 @@
"Customers"
],
"summary": "Import and Update Customers using CSV",
- "description": "This API method lets you import or update customer data. To get a proper and valid response, please send a CSV file with data separated by commas. \n# Request Example\n# CSV File Format\nThe CSV file has to include headers in the first line. All properties which cannot be mapped to standard customer fields will be added to the metadata object.\n 📘 Standard customer fields mapping\n **No spaces allowed in field names** \n Id, Name, Email, Phone, Birthdate, Source_id, Address_line_1, Address_line_2, Address_Postal_Code, Address_City, Address_State, Address_Country, Description, Metadata_name_1, Metadata_name_2\n# Update Customers using CSV\nIf you would like to update customers data, you can do it using the CSV file with new data. However, remember to include a source_id in your CSV file to manage the update successfully.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
+ "description": "This API method lets you import or update customer data. To get a proper and valid response, please send a CSV file with data separated by commas. \n# Request Example\n# CSV File Format\nThe CSV file has to include headers in the first line. All properties which cannot be mapped to standard customer fields will be added to the metadata object.\n\nStandard customer fields mapping\n**No spaces allowed in field names** Id, Name, Email, Phone, Birthdate, Source_id, Address_line_1, Address_line_2, Address_Postal_Code, Address_City, Address_State, Address_Country, Description, Metadata_name_1, Metadata_name_2\n\n# Update Customers using CSV\nIf you would like to update customers data, you can do it using the CSV file with new data. However, remember to include a source_id in your CSV file to manage the update successfully.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
"parameters": [],
"security": [
{
@@ -70061,7 +70113,7 @@
"Customers"
],
"summary": "List Customer Activities",
- "description": "> ❗️ Deprecated \n This endpoint represents the deprecated version of the API responsible for listing customer activities and we do not recommend using it. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint.\nRetrieve customer activities.",
+ "description": "\nDeprecated\nThis endpoint represents the deprecated version of the API responsible for listing customer activities and we do not recommend using it. Developers are encouraged to migrate to the latest version to take advantage of the latest enhancements and bug fixes. No updates will be provided to the deprecated endpoint.\n\nRetrieve customer activities.",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -71131,7 +71183,7 @@
"Orders"
],
"summary": "Create Order",
- "description": "Creates an order object and triggers an order creation event.\n 📘 Upsert Mode\n If you pass an id or a source_id that already exists in the order database, Voucherify will return a related order object with updated fields.",
+ "description": "Creates an order object and triggers an order creation event.\n\nUpsert Mode\nIf you pass an id or a source_id that already exists in the order database, Voucherify will return a related order object with updated fields.\n",
"parameters": [],
"security": [
{
@@ -71563,7 +71615,7 @@
"Orders"
],
"summary": "Import Orders",
- "description": "\n 🚧 Historical orders\n This endpoint should only be used to import historical orders into Voucherify. For on-going synchronization, the [update order](/api-reference/orders/update-order) endpoint should be used. This is critical because this endpoint does not store events or launch distributions.\nThe orders will also have a created_at date thats assigned when theyve been imported to Voucherify. To keep track of the actual order creation date, add an order metadata in ISO 8601 date or date time format to each imported order.\n# Limitations\n## Import volume\nThere can be only a single on-going order import per tenant per project at a given time. The user can schedule more imports but those extra imports will be scheduled to run in sequence one by one. \n## Maximum count of orders in single import\nThere is a 2000 limit of orders per one request.\n# Notifications\nThere are no notifications on the Dashboard because this import is launched via the API.\n# Triggered actions\n \nIf you import orders with customers, then a logic will be scheduled responsible for placing these customers into segments and refreshing the segments summary. Consequently, this update will trigger \n- Customers entering into segments\n- Distributions based on any rules tied to customer entering segment(s)\n- Earning rules based on the customer entering segment(s)\n# What is not triggered\n1. No webhooks are triggered during the import of orders - for both orders and upserted products / SKUs. \n2. Distributions based on Order Update, Order Paid, Order Created and Order Cancelled. In other words if you have a distribution based on Order Paid and you import an order with a PAID status, the distribution is not going to be triggered. \n3. No events are created during the import of orders - for both orders and upserted products / SKUs. In other words you wont see any events in the Activity tab in the Dashboard such as Order created or Order paid. If you are additionally upserting products / SKUs, then you wont see the Product created events listed, etc. \n4. Earning rules based on Order Paid wont be triggered.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request with [GET Async Action](/api-reference/async-actions/get-async-action) endpoint.",
+ "description": "\n\nHistorical orders\nThis endpoint should only be used to import historical orders into Voucherify. For on-going synchronization, the [update order](/api-reference/orders/update-order) endpoint should be used. This is critical because this endpoint does not store events or launch distributions.\n\nThe orders will also have a created_at date thats assigned when theyve been imported to Voucherify. To keep track of the actual order creation date, add an order metadata in ISO 8601 date or date time format to each imported order.\n# Limitations\n## Import volume\nThere can be only a single on-going order import per tenant per project at a given time. The user can schedule more imports but those extra imports will be scheduled to run in sequence one by one. \n## Maximum count of orders in single import\nThere is a 2000 limit of orders per one request.\n# Notifications\nThere are no notifications on the Dashboard because this import is launched via the API.\n# Triggered actions\n \nIf you import orders with customers, then a logic will be scheduled responsible for placing these customers into segments and refreshing the segments summary. Consequently, this update will trigger \n- Customers entering into segments\n- Distributions based on any rules tied to customer entering segment(s)\n- Earning rules based on the customer entering segment(s)\n# What is not triggered\n1. No webhooks are triggered during the import of orders - for both orders and upserted products / SKUs. \n2. Distributions based on Order Update, Order Paid, Order Created and Order Cancelled. In other words if you have a distribution based on Order Paid and you import an order with a PAID status, the distribution is not going to be triggered. \n3. No events are created during the import of orders - for both orders and upserted products / SKUs. In other words you wont see any events in the Activity tab in the Dashboard such as Order created or Order paid. If you are additionally upserting products / SKUs, then you wont see the Product created events listed, etc. \n4. Earning rules based on Order Paid wont be triggered.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request with [GET Async Action](/api-reference/async-actions/get-async-action) endpoint.",
"parameters": [],
"security": [
{
@@ -72151,7 +72203,7 @@
"Products"
],
"summary": "Create Product",
- "description": "Creates a product object.\n 📘 Upsert Mode\n If you pass an id or a source_id that already exists in the product database, Voucherify will return a related product object with updated fields.",
+ "description": "Creates a product object.\n\nUpsert Mode\nIf you pass an id or a source_id that already exists in the product database, Voucherify will return a related product object with updated fields.\n",
"parameters": [],
"security": [
{
@@ -72775,7 +72827,7 @@
"Products"
],
"summary": "Create SKU",
- "description": "This method adds product variants to a [created product](/api-reference/products/create-product). \n 📘 Upsert Mode\n If you pass an id or a source_id that already exists in the sku database, Voucherify will return a related sku object with updated fields.",
+ "description": "This method adds product variants to a [created product](/api-reference/products/create-product). \n\nUpsert Mode\nIf you pass an id or a source_id that already exists in the sku database, Voucherify will return a related sku object with updated fields.\n",
"parameters": [],
"security": [
{
@@ -72977,7 +73029,7 @@
"Products"
],
"summary": "Import Products using CSV",
- "description": "Import products into the repository using a CSV file.\nThe CSV file has to include headers in the first line.\n 📘 Standard product fields mapping\n - Create a **comma separated value (CSV) file** or download our CSV import template. You can find an example template [here](https://s3.amazonaws.com/helpscout.net/docs/assets/5902f1c12c7d3a057f88a36d/attachments/627b82ed68d51e779443f550/Import_products_template.csv).\n - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name\n - **Name** is a **required** field. The remaining fields in the CSV template are optional.\n - Override/Update products **names** in Voucherify using this method. Data will be updated for each product included in the CSV file whose **source_id** matches a source ID in Voucherify. No other data can be updated other than the product name.\n - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 standard**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11\n - YYYY-MM-DD\n - YYYY-MM-DDTHH\n - YYYY-MM-DDTHH:mm\n - YYYY-MM-DDTHH:mm:ss\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ss.SSSZ\n - Columns that cannot be mapped to standard fields, will be mapped to **Custom attributes** and added as **products metadata**. There is no limit on the number of custom attributes that you can import as metadata. \n - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](/prepare/metadata#add-metadata).\n - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2.\n - Headers with metadata names **cant contain white-space characters**.\n - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: \n - array of strings: subscribed,premium \n - array of numbers: 123,234. \n - array of dates: 2000-01-01,2000-01-02\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
+ "description": "Import products into the repository using a CSV file.\nThe CSV file has to include headers in the first line.\n\nStandard product fields mapping\n- Create a **comma separated value (CSV) file** or download our CSV import template. You can find an example template [here](https://s3.amazonaws.com/helpscout.net/docs/assets/5902f1c12c7d3a057f88a36d/attachments/627b82ed68d51e779443f550/Import_products_template.csv).\n- Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name\n- **Name** is a **required** field. The remaining fields in the CSV template are optional.\n- Override/Update products **names** in Voucherify using this method. Data will be updated for each product included in the CSV file whose **source_id** matches a source ID in Voucherify. No other data can be updated other than the product name.\n- Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 standard**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11\n - YYYY-MM-DD\n - YYYY-MM-DDTHH\n - YYYY-MM-DDTHH:mm\n - YYYY-MM-DDTHH:mm:ss\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ssZ\n - YYYY-MM-DDTHH:mm:ss.SSSZ\n- Columns that cannot be mapped to standard fields, will be mapped to **Custom attributes** and added as **products metadata**. There is no limit on the number of custom attributes that you can import as metadata.\n- To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](/prepare/metadata#add-metadata).\n- **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2.\n- Headers with metadata names **cant contain white-space characters**.\n- If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example:\n - array of strings: subscribed,premium\n - array of numbers: 123,234.\n - array of dates: 2000-01-01,2000-01-02\n\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
"parameters": [],
"security": [
{
@@ -73023,7 +73075,7 @@
"Products"
],
"summary": "Import SKUs using CSV",
- "description": "Import SKUs into the repository using a CSV file.\nThe CSV file has to include headers in the first line. All properties which cannot be mapped to standard SKU fields will be added to the metadata object. You can find an example template [here](https://s3.amazonaws.com/helpscout.net/docs/assets/5902f1c12c7d3a057f88a36d/attachments/627b98d08c9b585083488a4c/Import_SKUS_template.csv). \n 🚧 Import sequence\n First import products using the [dedicated endpoint](/api-reference/products/import-products-using-csv), then import SKUs using this endpoint to properly match SKUs to products.\n 📘 Standard SKU fields mapping\n - **Required** fields are source_id and product_id.\n - Supported CSV file headers: product_id,sku,source_id,price,image_url,attributes\n - SKU **source_id** must be unique in the entire product catalog, no duplicates are allowed.\n - SKU attributes need to be in the form of a stringy-fied json, i.e.{color:blue}. These attributes must be defined in the **product** beforehand so you can import them to the SKU.\n - You can use this method to update the following parameters in bulk: **sku** and the sku **price**.\n - Columns that cannot be mapped to standard fields will be mapped to Custom attributes and added as product metadata. There is no limit on the number of custom attributes that you can import as metadata.\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
+ "description": "Import SKUs into the repository using a CSV file.\nThe CSV file has to include headers in the first line. All properties which cannot be mapped to standard SKU fields will be added to the metadata object. You can find an example template [here](https://s3.amazonaws.com/helpscout.net/docs/assets/5902f1c12c7d3a057f88a36d/attachments/627b98d08c9b585083488a4c/Import_SKUS_template.csv). \n\nImport sequence\nFirst import products using the [dedicated endpoint](/api-reference/products/import-products-using-csv), then import SKUs using this endpoint to properly match SKUs to products.\n\n\nStandard SKU fields mapping\n- **Required** fields are source_id and product_id.\n- Supported CSV file headers: product_id,sku,source_id,price,image_url,attributes\n- SKU **source_id** must be unique in the entire product catalog, no duplicates are allowed.\n- SKU attributes need to be in the form of a stringy-fied json, i.e.{color:blue}. These attributes must be defined in the **product** beforehand so you can import them to the SKU.\n- You can use this method to update the following parameters in bulk: **sku** and the sku **price**.\n- Columns that cannot be mapped to standard fields will be mapped to Custom attributes and added as product metadata. There is no limit on the number of custom attributes that you can import as metadata.\n\nThis API request starts a process that affects Voucherify data in bulk. \nIn case of small jobs (like bulk update) the request is put into a queue and processed once every other bulk request placed in the queue prior to this request is finished. However, when the job takes a longer time (like vouchers generation) then it is processed in small portions in a round-robin fashion. When there is a list of vouchers generation scheduled, then they will all have the IN_PROGRESS status shortly. This way, small jobs added just after scheduling big jobs of the same type will be processed in a short time window. \nThe result will return the async ID. You can verify the status of your request via this [API request](/api-reference/async-actions/get-async-action).",
"parameters": [],
"security": [
{
@@ -73864,7 +73916,7 @@
"Validation Rules"
],
"summary": "Create Validation Rules",
- "description": "Create a validation rule.\n 🚧 Managing validation rules\n It is recommended to [create or update validation rules](/personalize/create-validation-rules) in the Voucherify dashboard. The rule builder in the dashboard helps configuring the desired conditions in a convenient way. The API should not be used as a preferable way to create and manage validation rules.",
+ "description": "Create a validation rule.\n\nManaging validation rules\nIt is recommended to [create or update validation rules](/personalize/create-validation-rules) in the Voucherify dashboard. The rule builder in the dashboard helps configuring the desired conditions in a convenient way. The API should not be used as a preferable way to create and manage validation rules.\n",
"parameters": [],
"security": [
{
@@ -74119,7 +74171,7 @@
"Validation Rules"
],
"summary": "Update Validation Rule",
- "description": "Update validation rule parameters.\n 🚧 Managing validation rules\n It is recommended to [create or update validation rules](/personalize/create-validation-rules) in the Voucherify dashboard. The rule builder in the dashboard helps configuring the desired conditions in a convenient way. The API should not be used as a preferable way to create and manage validation rules.",
+ "description": "Update validation rule parameters.\n\nManaging validation rules\nIt is recommended to [create or update validation rules](/personalize/create-validation-rules) in the Voucherify dashboard. The rule builder in the dashboard helps configuring the desired conditions in a convenient way. The API should not be used as a preferable way to create and manage validation rules.\n",
"parameters": [],
"security": [
{
@@ -74787,7 +74839,7 @@
"Segments"
],
"summary": "Create Segment",
- "description": "Create a customer segment.\n 🚧 Limit on static segments\n There is a cap on the number of customers that you can assign to a static segment: **20,000**. If you would like to create a bigger segment, then you can use the unlimited auto-update or passive segment instead and use some customer metadata to build this segment.\n 🚧 Limit on Active and Passive segments\n You can create a maximum of 100 passive and active segments.",
+ "description": "Create a customer segment.\n\nLimit on static segments\nThere is a cap on the number of customers that you can assign to a static segment: **20,000**. If you would like to create a bigger segment, then you can use the unlimited auto-update or passive segment instead and use some customer metadata to build this segment.\n\n\nLimit on Active and Passive segments\nYou can create a maximum of 100 passive and active segments.\n",
"parameters": [],
"security": [
{
@@ -75637,7 +75689,7 @@
"Exports"
],
"summary": "Create Export",
- "description": "Create export object. The export can be any of the following types: voucher, redemption, publication, customer, order, points_expiration, voucher_transactions, product, or sku. \n# Defaults\nIf you only specify the object type in the request body without specifying the fields, the API will return the following fields per export object:\n\n\n 📘 Date and time in the export API\n The exported date and times are always provided in the UTC time zone.\n# Fetching particular data sets\nUsing the parameters body parameter, you can narrow down which fields to export and how to filter the results. The fields are an array of strings containing the data that you would like to export. These fields define the headers in the CSV file. The array can be a combination of any of the following available fields:\n# Orders \n\n\n# Vouchers \n\n\n\n\n\n# Publications\n\n\n# Redemptions\n\n\n\n# Customers\n\n\n\n\n\n\n# Points Expirations\n\n\n # Gift Card Transactions\n\n\n # Loyalty Card Transactions\n\n\n",
+ "description": "Create export object. The export can be any of the following types: voucher, redemption, publication, customer, order, points_expiration, voucher_transactions, product, or sku. \n# Defaults\nIf you only specify the object type in the request body without specifying the fields, the API will return the following fields per export object:\n\n\n\nDate and time in the export API\nThe exported date and times are always provided in the UTC time zone.\n\n# Fetching particular data sets\nUsing the parameters body parameter, you can narrow down which fields to export and how to filter the results. The fields are an array of strings containing the data that you would like to export. These fields define the headers in the CSV file. The array can be a combination of any of the following available fields:\n# Orders \n\n\n# Vouchers \n\n\n\n\n\n# Publications\n\n\n# Redemptions\n\n\n\n# Customers\n\n\n\n\n\n\n# Points Expirations\n\n\n # Gift Card Transactions\n\n\n # Loyalty Card Transactions\n\n\n",
"parameters": [],
"security": [
{
@@ -75913,7 +75965,7 @@
"Exports"
],
"summary": "Download Export",
- "description": "Download the contents of the exported CSV file. \n 📘 Important notes\n **Base URL:** \n - https://download.voucherify.io (Europe) \n - https://us1.download.voucherify.io (US) \n - https://as1.download.voucherify.io (Asia) \n **Token:** Can be found within the result parameter of the [Get Export](/api-reference/exports/get-export) method response.",
+ "description": "Download the contents of the exported CSV file. \n\nImportant notes\n**Base URL:**\n- https://download.voucherify.io (Europe)\n- https://us1.download.voucherify.io (US)\n- https://as1.download.voucherify.io (Asia)\n**Token:** Can be found within the result parameter of the [Get Export](/api-reference/exports/get-export) method response.\n",
"parameters": [],
"security": [
{
@@ -76213,7 +76265,7 @@
"Metadata Schemas"
],
"summary": "List Metadata Schema Definitions",
- "description": "Retrieve metadata schema definitions.\n📘 Management API\nIf you have Management API enabled, you can also use the [List Metadata Schemas](/api-reference/management/list-metadata-schemas) endpoint to list all metadata schemas.",
+ "description": "Retrieve metadata schema definitions.\n\nManagement API\nIf you have Management API enabled, you can also use the [List Metadata Schemas](/api-reference/management/list-metadata-schemas) endpoint to list all metadata schemas.\n",
"parameters": [],
"security": [
{
@@ -76718,7 +76770,7 @@
"Metadata Schemas"
],
"summary": "Get Metadata Schema",
- "description": "Retrieves a metadata schema per resource type.\n# Resource types\n## Standard\nYou can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter.\n- campaign\n- customer\n- earning_rule\n- loyalty_tier\n- order\n- order_item\n- product\n- promotion_tier\n- publication\n- redemption\n- reward\n- voucher\n## Custom\nIf you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details.\n📘 Management API\nIf you have Management API enabled, you can also use the [Get Metadata Schemas](/api-reference/management/get-metadata-schema) endpoint to retrieve a metadata schema using its ID.",
+ "description": "Retrieves a metadata schema per resource type.\n# Resource types\n## Standard\nYou can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter.\n- campaign\n- customer\n- earning_rule\n- loyalty_tier\n- order\n- order_item\n- product\n- promotion_tier\n- publication\n- redemption\n- reward\n- voucher\n## Custom\nIf you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details.\n\nManagement API\nIf you have Management API enabled, you can also use the [Get Metadata Schemas](/api-reference/management/get-metadata-schema) endpoint to retrieve a metadata schema using its ID.\n",
"parameters": [],
"security": [
{
@@ -77506,7 +77558,7 @@
"Referrals"
],
"summary": "Add Referral Code Holders with Campaign ID",
- "description": "Adds new holders to a referral code as **referees**. The data sent in the request is upserted into the customer data.\nIf the request returns an error even for one customer, you have to resend the whole request. Customer data is upserted if the data for all customers is correct.\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (customers.modify)\n- Publish Voucher (vouchers.publish)\n 👍\nTo add a holder as a referrer, use the [Create Publication](/api-reference/publications/create-publication) endpoint.",
+ "description": "Adds new holders to a referral code as **referees**. The data sent in the request is upserted into the customer data.\nIf the request returns an error even for one customer, you have to resend the whole request. Customer data is upserted if the data for all customers is correct.\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (customers.modify)\n- Publish Voucher (vouchers.publish)\n\nTo add a holder as a referrer, use the [Create Publication](/api-reference/publications/create-publication) endpoint.\n",
"parameters": [],
"security": [
{
@@ -77761,7 +77813,7 @@
"Referrals"
],
"summary": "Add Referral Code Holders",
- "description": "Adds new holders to a referral code as **referees**. The data sent in the request is upserted into the customer data.\nIf the request returns an error even for one customer, you have to resend the whole request. Customer data is upserted if the data for all customers is correct.\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (customers.modify)\n- Publish Voucher (vouchers.publish)\n 👍\nTo add a holder as a referrer, use the [Create Publication](/api-reference/publications/create-publication) endpoint.\n 📘 Alternative endpoint\nThis endpoint is an alternative to the [Add Referral Code Holders endpoint](/api-reference/referrals/add-referral-code-holders-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the campaignId as a path paremeter.",
+ "description": "Adds new holders to a referral code as **referees**. The data sent in the request is upserted into the customer data.\nIf the request returns an error even for one customer, you have to resend the whole request. Customer data is upserted if the data for all customers is correct.\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (customers.modify)\n- Publish Voucher (vouchers.publish)\n\nTo add a holder as a referrer, use the [Create Publication](/api-reference/publications/create-publication) endpoint.\n\n\nAlternative endpoint\nThis endpoint is an alternative to the [Add Referral Code Holders endpoint](/api-reference/referrals/add-referral-code-holders-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the campaignId as a path paremeter.\n",
"parameters": [],
"security": [
{
@@ -77859,7 +77911,7 @@
"Referrals"
],
"summary": "List Referral Code Holders",
- "description": "Retrieves the holders of the referral code from a referral campaign.\nTo use this endpoint, you must have the following permissions:\n- Read Customers (customers.details.read)\n 📘 Alternative endpoint\nThis endpoint is an alternative to the [List Member Holders endpoint](/api-reference/referrals/list-referral-code-holders-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the campaignId as a path paremeter.",
+ "description": "Retrieves the holders of the referral code from a referral campaign.\nTo use this endpoint, you must have the following permissions:\n- Read Customers (customers.details.read)\n\nAlternative endpoint\nThis endpoint is an alternative to the [List Member Holders endpoint](/api-reference/referrals/list-referral-code-holders-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the campaignId as a path paremeter.\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -77974,7 +78026,7 @@
"Referrals"
],
"summary": "Remove Referral Card Holder",
- "description": "Removes the holder from a referral card. You can remove a referee only.\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (customers.modify)\n- Publish Voucher (vouchers.publish)\n 📘 Alternative endpoint\nThis endpoint is an alternative to the [Remove Referral Card Holder endpoint](/api-reference/referrals/remove-referral-card-holder-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the campaignId as a path paremeter.",
+ "description": "Removes the holder from a referral card. You can remove a referee only.\nTo use this endpoint, you must have the following permissions:\n- Create and modify Customers and Segments (customers.modify)\n- Publish Voucher (vouchers.publish)\n\nAlternative endpoint\nThis endpoint is an alternative to the [Remove Referral Card Holder endpoint](/api-reference/referrals/remove-referral-card-holder-with-campaign-id). The URL was re-designed to retrieve the referral member holders without providing the campaignId as a path paremeter.\n",
"parameters": [],
"security": [
{
@@ -78121,7 +78173,7 @@
"Templates"
],
"summary": "List Campaign Templates",
- "description": "Lists all campaign templates available in the project.\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Lists all campaign templates available in the project.\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -78214,7 +78266,7 @@
"Templates"
],
"summary": "Create Campaign Template",
- "description": "Creates a template for a discount or gift campaign, or a promotion tier.\nA template stores campaign configuration **without** the following details:\n- Campaign name\n- Category\n- Code count\nThe following elements are not supported by campaign templates:\n- Redeeming API keys\n- Redeeming users\n- Customer loyalty tier\n- Static segments\n 👍 Promotion Tiers and Campaign Templates\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the DISCOUNT_COUPON type. You can use this template to create:\n- [Discount campaign](/api-reference/templates/create-campaign-from-template),\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template).\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Creates a template for a discount or gift campaign, or a promotion tier.\nA template stores campaign configuration **without** the following details:\n- Campaign name\n- Category\n- Code count\nThe following elements are not supported by campaign templates:\n- Redeeming API keys\n- Redeeming users\n- Customer loyalty tier\n- Static segments\n\nPromotion Tiers and Campaign Templates\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the DISCOUNT_COUPON type. You can use this template to create:\n- [Discount campaign](/api-reference/templates/create-campaign-from-template),\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template).\n\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -78276,7 +78328,7 @@
"Templates"
],
"summary": "Get Campaign Template",
- "description": "Retrieves a campaign template available in the project.\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Retrieves a campaign template available in the project.\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -78315,7 +78367,7 @@
"Templates"
],
"summary": "Update Campaign Template",
- "description": "Updates the name or description of the campaign template.\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Updates the name or description of the campaign template.\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -78365,7 +78417,7 @@
"Templates"
],
"summary": "Delete Campaign Template",
- "description": "Deletes the campaign template permanently.\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Deletes the campaign template permanently.\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -78398,7 +78450,7 @@
"Templates"
],
"summary": "Create Campaign From Template",
- "description": "Creates a campaign out of a campaign template.\nTo create a campaign, you need to provide the name in the request, while other fields are optional. If no other fields are sent, the configuration from the template will be used.\nYou can send new values of the fields listed below to replace the settings saved in the template. However, you cannot assign an existing validation rule or create a new one in the request. If the template has a validation rule, a new validation rule is always created for the campaign. When the campaign has been created, then you can:\n- [Update the validation rule](/api-reference/validation-rules/update-validation-rule),\n- [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment),\n- [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments).\n 👍 Promotion Tiers and Campaign Templates\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the DISCOUNT_COUPON type. You can use this template to create:\n- [Discount campaign](/api-reference/templates/create-campaign-from-template)\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template)\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Creates a campaign out of a campaign template.\nTo create a campaign, you need to provide the name in the request, while other fields are optional. If no other fields are sent, the configuration from the template will be used.\nYou can send new values of the fields listed below to replace the settings saved in the template. However, you cannot assign an existing validation rule or create a new one in the request. If the template has a validation rule, a new validation rule is always created for the campaign. When the campaign has been created, then you can:\n- [Update the validation rule](/api-reference/validation-rules/update-validation-rule),\n- [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment),\n- [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments).\n\nPromotion Tiers and Campaign Templates\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the DISCOUNT_COUPON type. You can use this template to create:\n- [Discount campaign](/api-reference/templates/create-campaign-from-template)\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template)\n\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -78557,7 +78609,7 @@
"Templates"
],
"summary": "Add Promotion Tier From Template",
- "description": "Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign.\nTo add a promotion tier to a campaign, you need to provide the name in the request and the campaign ID. Other fields are optional. If no other fields are sent, the configuration from the template will be used.\nYou can send new values of the fields listed below to replace the settings saved in the template. However, you cannot assign an action or an existing validation rule or create a new one in the request. If the template has a validation rule, a new validation rule is always created for the promotion tier. When the promotion tier has been created, then you can:\n- [Update the validation rule](/api-reference/validation-rules/update-validation-rule),\n- [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment),\n- [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment).\n 👍 Promotion Tiers and Campaign Templates\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the DISCOUNT_COUPON type. You can use this template to create:\n- [Discount campaign](/api-reference/templates/create-campaign-from-template)\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template)\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign.\nTo add a promotion tier to a campaign, you need to provide the name in the request and the campaign ID. Other fields are optional. If no other fields are sent, the configuration from the template will be used.\nYou can send new values of the fields listed below to replace the settings saved in the template. However, you cannot assign an action or an existing validation rule or create a new one in the request. If the template has a validation rule, a new validation rule is always created for the promotion tier. When the promotion tier has been created, then you can:\n- [Update the validation rule](/api-reference/validation-rules/update-validation-rule),\n- [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment),\n- [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment).\n\nPromotion Tiers and Campaign Templates\nYou can create a campaign template out of a promotion tier. Promotion tiers are converted to a discount campaign with the DISCOUNT_COUPON type. You can use this template to create:\n- [Discount campaign](/api-reference/templates/create-campaign-from-template)\n- [Promotion tier](/api-reference/templates/add-promotion-tier-from-template)\n\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -79339,7 +79391,7 @@
"Management"
],
"summary": "Delete Project",
- "description": "Deletes an existing project.\nThe users currently using the deleted project will be automatically logged out.\n 🚧 Sandbox Project\nThe sandbox project cannot be deleted.",
+ "description": "Deletes an existing project.\nThe users currently using the deleted project will be automatically logged out.\n\nSandbox Project\nThe sandbox project cannot be deleted.\n",
"parameters": [],
"security": [
{
@@ -79372,7 +79424,7 @@
"Management"
],
"summary": "Assign User",
- "description": "Assigns a user to a given project. The user must be an existing user in Voucherify.\n 🚧 Correct Use of Data\nTo avoid errors, use the role key with either id or login keys.",
+ "description": "Assigns a user to a given project. The user must be an existing user in Voucherify.\n\nCorrect Use of Data\nTo avoid errors, use the role key with either id or login keys.\n",
"parameters": [],
"security": [
{
@@ -79678,7 +79730,7 @@
"Management"
],
"summary": "List Campaign Templates",
- "description": "Lists all campaign templates available in the project.\n 👍 List Campaign Templates\n This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates).\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Lists all campaign templates available in the project.\n\nList Campaign Templates\nThis endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates).\n\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [
{
"$ref": "#/components/parameters/limit"
@@ -79793,7 +79845,7 @@
"Management"
],
"summary": "Copy Campaign Template to a Project",
- "description": "Copies a campaign template to another project.\nThe resources, like validation rules or products, will not be copied to the destination project yet. When the template is used to create a new campaign or add a new promotion tier, the resources will be created in the destination project.\n 📘 Campaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.",
+ "description": "Copies a campaign template to another project.\nThe resources, like validation rules or products, will not be copied to the destination project yet. When the template is used to create a new campaign or add a new promotion tier, the resources will be created in the destination project.\n\nCampaign Templates – Documentation\nRead the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature.\n",
"parameters": [],
"security": [
{
@@ -79855,7 +79907,7 @@
"Management"
],
"summary": "Create Stacking Rules",
- "description": "Overwrites the default stacking rules.\nIf new stacking rules have been created for the project earlier (e.g. in the user interface), it returns an error. Use [Update stacking rules](/api-reference/management/update-stacking-rules) endpoint to change the rules.\n 📘 Stacking rules documentation\n Read [the Stacking rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Overwrites the default stacking rules.\nIf new stacking rules have been created for the project earlier (e.g. in the user interface), it returns an error. Use [Update stacking rules](/api-reference/management/update-stacking-rules) endpoint to change the rules.\n\nStacking rules documentation\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n",
"parameters": [],
"security": [
{
@@ -79932,7 +79984,7 @@
"Management"
],
"summary": "List Stacking Rules",
- "description": "Lists all stacking rules.\nReturns always a list with one item.\nThis endpoint can be used to retrieve the default stacking rules. The default stacking rules do not have an ID that could be used with the [Get Stacking Rules](/api-reference/management/get-stacking-rules) or [Update Stacking Rules](/api-reference/management/update-stacking-rules) endpoints.\n 📘 Stacking Rules Documentation\n Read [the Stacking Rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Lists all stacking rules.\nReturns always a list with one item.\nThis endpoint can be used to retrieve the default stacking rules. The default stacking rules do not have an ID that could be used with the [Get Stacking Rules](/api-reference/management/get-stacking-rules) or [Update Stacking Rules](/api-reference/management/update-stacking-rules) endpoints.\n\nStacking Rules Documentation\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n",
"parameters": [],
"security": [
{
@@ -80029,7 +80081,7 @@
"Management"
],
"summary": "Get Stacking Rules",
- "description": "Retrieves the stacking rules for the project.\n 📘 Stacking Rules Documentation\n Read [the Stacking Rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Retrieves the stacking rules for the project.\n\nStacking Rules Documentation\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n",
"parameters": [],
"security": [
{
@@ -80097,7 +80149,7 @@
"Management"
],
"summary": "Update Stacking Rules",
- "description": "Updates the stacking rules.\nOnly the provided fields will be updated. However, if you update an array, the content of the array is overwritten. This means that if you want to add new values to an array and retain existing ones, you need to provide both the existing and new values in the request.\n 📘 Stacking Rules Documentation\n Read [the Stacking Rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Updates the stacking rules.\nOnly the provided fields will be updated. However, if you update an array, the content of the array is overwritten. This means that if you want to add new values to an array and retain existing ones, you need to provide both the existing and new values in the request.\n\nStacking Rules Documentation\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n",
"parameters": [],
"security": [
{
@@ -80175,7 +80227,7 @@
"Management"
],
"summary": "Delete Stacking Rules",
- "description": "Deletes permanently the current settings for the stacking rules.\nThe stacking rules are restored to default values.\n 📘 Stacking Rules Documentation\n Read [the Stacking Rules article]/orchestrate/stacking-rules to learn how they work.",
+ "description": "Deletes permanently the current settings for the stacking rules.\nThe stacking rules are restored to default values.\n\nStacking Rules Documentation\nRead [the Stacking rules article](/orchestrate/stacking-rules) to learn how they work.\n",
"parameters": [],
"security": [
{
@@ -80208,7 +80260,7 @@
"Management"
],
"summary": "Create Metadata Schema",
- "description": "Creates a new metadata (custom attribute) schema for a given resource.\nThe schema consists of a set of key-value pairs to customize Voucherify resources. \nYou can nest your object within a standard metadata schema, e.g. within a campaign or customer schema. However, your nested object cant include another nested object. The standard metadata schemas are:\n- Campaign\n- Voucher\n- Publication\n- Redemption\n- Product\n- Customer\n- Order\n- Order line item\n- Loyalty Tier\n- Promotion Tier\n- Earning rule\n- Reward\nUse this endpoint to define a metadata schema of a given resource for the first time. Once you configure a metadata schema for a given related_object, use the PUT [Update metadata schema](/api-reference/management/update-metadata-schema) endpoint to either update or add new metadata key-value pairs. For example, use this endpoint to define a metadata schema for related_object: campaign for the first time. If you want define a new metadata property for campaign, use the [PUT Update metadata schema](/api-reference/management/update-metadata-schema) endpoint.\n 📘 Metadata Documentation\n Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Creates a new metadata (custom attribute) schema for a given resource.\nThe schema consists of a set of key-value pairs to customize Voucherify resources. \nYou can nest your object within a standard metadata schema, e.g. within a campaign or customer schema. However, your nested object cant include another nested object. The standard metadata schemas are:\n- Campaign\n- Voucher\n- Publication\n- Redemption\n- Product\n- Customer\n- Order\n- Order line item\n- Loyalty Tier\n- Promotion Tier\n- Earning rule\n- Reward\nUse this endpoint to define a metadata schema of a given resource for the first time. Once you configure a metadata schema for a given related_object, use the PUT [Update metadata schema](/api-reference/management/update-metadata-schema) endpoint to either update or add new metadata key-value pairs. For example, use this endpoint to define a metadata schema for related_object: campaign for the first time. If you want define a new metadata property for campaign, use the [PUT Update metadata schema](/api-reference/management/update-metadata-schema) endpoint.\n\nMetadata Documentation\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -80271,7 +80323,7 @@
"Management"
],
"summary": "List Metadata Schemas",
- "description": "Lists all metadata schemas available in the project.\n 📘 Metadata Documentation\n Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Lists all metadata schemas available in the project.\n\nMetadata Documentation\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -80583,7 +80635,7 @@
"Management"
],
"summary": "Get Metadata Schema",
- "description": "Retrieves a metadata schema.\n 📘 Metadata Documentation\n Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Retrieves a metadata schema.\n\nMetadata Documentation\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -80670,7 +80722,7 @@
"Management"
],
"summary": "Update Metadata Schema",
- "description": "Updates a metadata schema.\nWith this request, you can:\n- Add a nonexistent attribute definition to the metadata schema.\n- Update an existing attribute definition by overwriting its current values.\nIn the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged.\nHowever, if you want to update a definition, you will have to add all its current key-value pairs as well. Only the pairs sent in the request are saved for this definition. This means that the key-value pairs that are not sent in a request are restored to default values. For example, if your definition has an array with values and it is not sent in an update request, the array values will be deleted.\n 👍 Additional Notes\n- You cannot change the type of an existing schema, e.g. from string to number.\n- You can remove a definition with this endpoint by providing deleted: true in the request. It will be moved to the Removed definitions section in the user interface. However, you cannot permanently remove a definition with this endpoint.\n 📘 Metadata Documentation\n Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Updates a metadata schema.\nWith this request, you can:\n- Add a nonexistent attribute definition to the metadata schema.\n- Update an existing attribute definition by overwriting its current values.\nIn the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged.\nHowever, if you want to update a definition, you will have to add all its current key-value pairs as well. Only the pairs sent in the request are saved for this definition. This means that the key-value pairs that are not sent in a request are restored to default values. For example, if your definition has an array with values and it is not sent in an update request, the array values will be deleted.\n\nAdditional Notes\n- You cannot change the type of an existing schema, e.g. from string to number.\n- You can remove a definition with this endpoint by providing deleted: true in the request. It will be moved to the Removed definitions section in the user interface. However, you cannot permanently remove a definition with this endpoint.\n\n\nMetadata Documentation\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -80733,7 +80785,7 @@
"Management"
],
"summary": "Delete Metadata Schema",
- "description": "Deletes permanently the metadata schema.\nIn standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are:\n- Campaign\n- Voucher\n- Publication\n- Redemption\n- Product\n- Customer\n- Order\n- Order line item\n- Loyalty Tier\n- Promotion Tier\n- Earning rule\n- Reward\nIf you want to delete only one definition, use the [Update Metadata Schema](/api-reference/management/update-metadata-schema) endpoint. In the request, provide the deleted: true pair in the definition object. This definition will be moved to Removed definitions.\nIf you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint.\n 🚧 Metadata Purging\nThis endpoint deletes permanently the metadata schemas only. However, it does not purge the metadata from associated entities, so the metadata added to those entities will remain.\nIf you want to purge metadata from the entities:\n1. Remove all the definitions you want to purge. You can do this either in Voucherify Project Settings > Metadata Schema tab or with the [Update Metadata Schema](/api-reference/management/update-metadata-schema) endpoint.\n2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema.\n3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities.\nNote:\n- This is an asynchronous action. You will be notified when it has been completed.\n- You cannot purge metadata for the Redemption and Publication schemas.\n4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify.\n 📘 Metadata Documentation\n Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.",
+ "description": "Deletes permanently the metadata schema.\nIn standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are:\n- Campaign\n- Voucher\n- Publication\n- Redemption\n- Product\n- Customer\n- Order\n- Order line item\n- Loyalty Tier\n- Promotion Tier\n- Earning rule\n- Reward\nIf you want to delete only one definition, use the [Update Metadata Schema](/api-reference/management/update-metadata-schema) endpoint. In the request, provide the deleted: true pair in the definition object. This definition will be moved to Removed definitions.\nIf you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint.\n\nMetadata Purging\nThis endpoint deletes permanently the metadata schemas only. However, it does not purge the metadata from associated entities, so the metadata added to those entities will remain.\nIf you want to purge metadata from the entities:\n1. Remove all the definitions you want to purge. You can do this either in Voucherify Project Settings > Metadata Schema tab or with the [Update Metadata Schema](/api-reference/management/update-metadata-schema) endpoint.\n2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema.\n3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities.\nNote:\n- This is an asynchronous action. You will be notified when it has been completed.\n- You cannot purge metadata for the Redemption and Publication schemas.\n4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify.\n\n\nMetadata Documentation\nRead [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -80766,7 +80818,7 @@
"Management"
],
"summary": "Create Custom Event Schema",
- "description": "Creates a custom event schema.\nThe properties object is required, but it can be empty, however. This object is for optional custom properties (metadata).\n 📘 Custom Event Documentation\n Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Creates a custom event schema.\nThe properties object is required, but it can be empty, however. This object is for optional custom properties (metadata).\n\nCustom Event Documentation\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n",
"parameters": [],
"security": [
{
@@ -80821,7 +80873,7 @@
"Management"
],
"summary": "List Custom Event Schemas",
- "description": "Lists all custom event schemas available in the project.\n 📘 Custom Event Documentation\n Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Lists all custom event schemas available in the project.\n\nCustom Event Documentation\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n",
"parameters": [],
"security": [
{
@@ -80909,7 +80961,7 @@
"Management"
],
"summary": "Get Custom Event Schema",
- "description": "Retrieves a custom event schema.\n 📘 Custom Event Documentation\n Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Retrieves a custom event schema.\n\nCustom Event Documentation\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n",
"parameters": [],
"security": [
{
@@ -80952,7 +81004,7 @@
"Management"
],
"summary": "Update Custom Event Schema",
- "description": "Updates a custom event schema.\nWith this request, you can:\n- Add a nonexistent property to a custom event schema.\n- Update an existing property.\nIn the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged.\n 👍 Additional Notes\n- You can change the type of an existing property, e.g. from string to number.\n- You can remove a custom property with this endpoint by providing deleted: true in the request. However, you cannot permanently remove an event definition or its property with this endpoint.\n 📘 Custom Event Documentation\n Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Updates a custom event schema.\nWith this request, you can:\n- Add a nonexistent property to a custom event schema.\n- Update an existing property.\nIn the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged.\n\nAdditional Notes\n- You can change the type of an existing property, e.g. from string to number.\n- You can remove a custom property with this endpoint by providing deleted: true in the request. However, you cannot permanently remove an event definition or its property with this endpoint.\n\n\nCustom Event Documentation\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n",
"parameters": [],
"security": [
{
@@ -81016,7 +81068,7 @@
"Management"
],
"summary": "Delete Custom Event Schema",
- "description": "Deletes permanently the custom event schema with its custom properties (metadata).\n 📘 Custom Event Documentation\n Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).",
+ "description": "Deletes permanently the custom event schema with its custom properties (metadata).\n\nCustom Event Documentation\nRead [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify.\nRead also the details about the [Track Custom Event](/api-reference/events/track-custom-event) endpoint and the [Custom Event Object](/api-reference/events/event-object).\n",
"parameters": [],
"security": [
{
@@ -81049,7 +81101,7 @@
"Management"
],
"summary": "Create Webhook",
- "description": "Creates a new webhook configuration.\n 📘 Webhook Documentation\n Read [Webhooks v2024-01-01](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Creates a new webhook configuration.\n\nWebhook Documentation\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -81100,7 +81152,7 @@
"Management"
],
"summary": "List Webhooks",
- "description": "Lists all webhook configurations for the project.\n 📘 Webhook Documentation\n Read [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Lists all webhook configurations for the project.\n\nWebhook Documentation\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -81216,7 +81268,7 @@
"Management"
],
"summary": "Get Webhook",
- "description": "Retrieves a webhook configuration.\n 📘 Webhook Documentation\n Read [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Retrieves a webhook configuration.\n\nWebhook Documentation\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -81257,7 +81309,7 @@
"Management"
],
"summary": "Update Webhook",
- "description": "Updates a webhook configuration.\nThe events listed in the request are overwritten. If you want to add more events, provide also the events that are already in the webhook configuration.\n 📘 Webhook Documentation\n Read [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Updates a webhook configuration.\nThe events listed in the request are overwritten. If you want to add more events, provide also the events that are already in the webhook configuration.\n\nWebhook Documentation\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -81308,7 +81360,7 @@
"Management"
],
"summary": "Delete Webhook",
- "description": "Deletes a webhook configuration.\n 📘 Webhook Documentation\n Read [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.",
+ "description": "Deletes a webhook configuration.\n\nWebhook Documentation\nRead [Introduction to webhooks](/api-reference/introduction-to-webhooks) article to learn how webhooks work in Voucherify.\n",
"parameters": [],
"security": [
{
@@ -81341,7 +81393,7 @@
"Management"
],
"summary": "Create Brand",
- "description": "Creates a new brand configuration.\nYou can have only one brand configured for a project.\n 📘 White Labelling\n The white labelling settings which can be found in Project Settings > Brand Details and which are available only for Enterprise clients as a separate service can be configured only in the user interface.",
+ "description": "Creates a new brand configuration.\nYou can have only one brand configured for a project.\n\nWhite Labelling\nThe white labelling settings which can be found in Project Settings > Brand Details and which are available only for Enterprise clients as a separate service can be configured only in the user interface.\n",
"parameters": [],
"security": [
{
@@ -81560,7 +81612,7 @@
"Management"
],
"summary": "Update Brand",
- "description": "Updates a brand configuration.\nOnly the fields sent in the request will be updated. The fields omitted in the request will remain unchanged.\n 📘 White Labelling\n The white labelling settings which can be found in Project Settings > Brand Details and which are available only for Enterprise clients as a separate service can be configured only in the user interface.",
+ "description": "Updates a brand configuration.\nOnly the fields sent in the request will be updated. The fields omitted in the request will remain unchanged.\n\nWhite Labelling\nThe white labelling settings which can be found in Project Settings > Brand Details and which are available only for Enterprise clients as a separate service can be configured only in the user interface.\n",
"parameters": [],
"security": [
{
@@ -81644,7 +81696,7 @@
"Client-side"
],
"summary": "Check Eligibility (client-side)",
- "description": "Generate a list of redeemables that are applicable in the context of the customer and order.\nThe new qualifications method is an improved version of [Campaign Qualifications](/api-reference/campaigns/examine-campaign-qualification), [Voucher Qualifications](/api-reference/vouchers/examine-voucher-qualification) API requests. The new qualification method introduces the following improvements:\n- Qualification results are returned faster\n- No limit on the number of returned redeemables\n- Introduces new qualification scenarios, not available in the previous version\n 👍 Scenario Guide\n Read our dedicated guide to learn about some use cases this endpoint can cover [here](/guides/checking-eligibility).\n# Paging \nThe Voucherify Qualifications API request will return to you all of the redeemables available for the customer in batches of up to 50 redeemables per page. To get the next batch of redeemables, you need to use the starting_after cursor.\nTo process of paging the redeemables works in the following manner:\n- You send the first API request for Qualifications without the starting_after parameter.\n- The response will contain a parameter named has_more. If the parameters value is set to true, then more redeemables are available.\n- Get the value of the created_at parameter of the last returned redeemable. The value of this parameter will be used as a cursor to retrieve the next page of redeemables.\n- Send another API request for Qualification with the starting_after parameter set to the value taken from the created_at parameter from the last returned redeemable.\n- Voucherify will return the next page of redeemables.\n- If the has_more parameter is set to true, apply steps 3-5 to get the next page of redeemables.\n# Caching\nQualification has a 5-minute cache for the returned results. If you change your campaign settings or validation rules, the changes will apply to qualification results after the cache refreshes.",
+ "description": "Generate a list of redeemables that are applicable in the context of the customer and order.\nThe new qualifications method is an improved version of [Campaign Qualifications](/api-reference/campaigns/examine-campaign-qualification), [Voucher Qualifications](/api-reference/vouchers/examine-voucher-qualification) API requests. The new qualification method introduces the following improvements:\n- Qualification results are returned faster\n- No limit on the number of returned redeemables\n- Introduces new qualification scenarios, not available in the previous version\n\nScenario Guide\nRead our dedicated guide to learn about some use cases this endpoint can cover [here](/guides/checking-eligibility).\n\n# Paging \nThe Voucherify Qualifications API request will return to you all of the redeemables available for the customer in batches of up to 50 redeemables per page. To get the next batch of redeemables, you need to use the starting_after cursor.\nTo process of paging the redeemables works in the following manner:\n- You send the first API request for Qualifications without the starting_after parameter.\n- The response will contain a parameter named has_more. If the parameters value is set to true, then more redeemables are available.\n- Get the value of the created_at parameter of the last returned redeemable. The value of this parameter will be used as a cursor to retrieve the next page of redeemables.\n- Send another API request for Qualification with the starting_after parameter set to the value taken from the created_at parameter from the last returned redeemable.\n- Voucherify will return the next page of redeemables.\n- If the has_more parameter is set to true, apply steps 3-5 to get the next page of redeemables.\n# Caching\nQualification has a 5-minute cache for the returned results. If you change your campaign settings or validation rules, the changes will apply to qualification results after the cache refreshes.",
"parameters": [],
"security": [
{
@@ -81923,7 +81975,7 @@
"Client-side"
],
"summary": "Redeem Stackable Discounts (client-side)",
- "description": "This method is accessible through public keys which you can use in client side requests coming from mobile and web browser applications.\n# How API returns calculated discounts and order amounts in the response\nIn the table below, you can see the logic the API follows to calculate discounts and amounts:\n\n\n 📘 Rollbacks\n You cant roll back a child redemption. When you call rollback on a stacked redemption, all child redemptions will be rolled back. You need to refer to a parent redemption ID in your [rollback request](/api-reference/redemptions/rollback-stackable-redemptions).",
+ "description": "This method is accessible through public keys which you can use in client side requests coming from mobile and web browser applications.\n# How API returns calculated discounts and order amounts in the response\nIn the table below, you can see the logic the API follows to calculate discounts and amounts:\n\n\n\nRollbacks\nYou cant roll back a child redemption. When you call rollback on a stacked redemption, all child redemptions will be rolled back. You need to refer to a parent redemption ID in your [rollback request](/api-reference/redemptions/rollback-stackable-redemptions).\n",
"parameters": [
{
"$ref": "#/components/parameters/origin"
diff --git a/scripts/mintlify/output/ValidationsValidateResponseBody.md b/scripts/mintlify/output/ValidationsValidateResponseBody.md
index 38a2e2e7d..b6dd8aca1 100644
--- a/scripts/mintlify/output/ValidationsValidateResponseBody.md
+++ b/scripts/mintlify/output/ValidationsValidateResponseBody.md
@@ -1,5 +1,5 @@
## Validations Validate Response Body
-| Attributes | Description |
|---|
id
string | Unique identifier of the validation, assigned by Voucherify. Example: valid_101740aa2869354c6d |
valid
boolean | The result of the validation. It takes all of the redeemables into account and returns a false if at least one redeemable is inapplicable. Returns true if all redeemables are applicable. |
redeemables
array | Lists validation results of each redeemable. If redeemables_application_mode is PARTIAL in the stacking_rules object, all redeemables here will be APPLICABLE. Read more in [the Stacking rules article]/orchestrate/stacking-rules. Array any of: - Applicable Redeemable
- Inapplicable Redeemable
- Skipped Redeemable
|
skipped_redeemables
array | Lists validation results of each skipped redeemable. |
inapplicable_redeemables
array | Lists validation results of each inapplicable redeemable. |
order | All of: - Order Calculated No Customer Data
| Attributes | Description |
|---|
items
array | Array of items applied to the order. It can include up to 500 items. |
|
tracking_id
string | Hashed customer source ID. Example: track_VAVo1/z+G2GI2LPw== |
session | See: Session |
stacking_rules | Defines stacking rules for redeemables. Read more in the Stacking Rule Documentation. Stacking Rules |
+| Attributes | Description |
|---|
id
string | Unique identifier of the validation, assigned by Voucherify. Example: valid_101740aa2869354c6d |
valid
boolean | The result of the validation. It takes all of the redeemables into account and returns a false if at least one redeemable is inapplicable. Returns true if all redeemables are applicable. |
redeemables
array | Lists validation results of each redeemable. If redeemables_application_mode is PARTIAL in the stacking_rules object, all redeemables here will be APPLICABLE. Read more in the Stacking rules article. Array any of: - Applicable Redeemable
- Inapplicable Redeemable
- Skipped Redeemable
|
skipped_redeemables
array | Lists validation results of each skipped redeemable. |
inapplicable_redeemables
array | Lists validation results of each inapplicable redeemable. |
order | All of: - Order Calculated No Customer Data
| Attributes | Description |
|---|
items
array | Array of items applied to the order. It can include up to 500 items. |
|
tracking_id
string | Hashed customer source ID. Example: track_VAVo1/z+G2GI2LPw== |
session | See: Session |
stacking_rules | Defines stacking rules for redeemables. Read more in the Stacking Rule Documentation. Stacking Rules |
## Applicable Redeemable
| Attributes | Description |
|---|
status
string | Indicates whether the redeemable can be applied or not applied based on the validation rules. Available values: APPLICABLE |
id
string | Redeemable ID, i.e. the voucher code. |
object
string | Redeemable's object type. Available values: voucher, promotion_tier |
order | All of: - Order Calculated No Customer Data
| Attributes | Description |
|---|
items
array | Array of items applied to the order. It can include up to 500 items. Array of Order Item Calculated |
|
applicable_to | See: Applicable To Result List |
inapplicable_to | See: Inapplicable To Result List |
result | Specifies the redeemable's end effect on the order. This object is unique to each type of redeemable. One of: - Coupon Code
- Gift Card
- Loyalty Card
- Promotion Tier
- Promotion Stack
|
metadata
object | The metadata object stores all custom attributes in the form of key/value pairs assigned to the redeemable. |
categories
array | Array of Category with Stacking Rules Type |
campaign_name
string | Campaign name. Displayed only if the options.expand is passed with a redeemable value in the validation request body. |
campaign_id
string | Unique campaign ID assigned by Voucherify. Displayed only if the options.expand is passed with a redeemable value in the validation request body. Example: camp_pqZjuhG6Mgtp4GD0zD7b8hA3 |
name
string | Name of the promotion tier. Displayed only if the options.expand is passed with a redeemable value in the validation request body. |