From 5842cb654e89949762e63428d2f7c81708148137 Mon Sep 17 00:00:00 2001 From: p-zielinski <82354717+p-zielinski@users.noreply.github.com> Date: Wed, 4 Mar 2026 17:20:37 +0100 Subject: [PATCH] 9.0.1 --- ENDPOINTS-COVERAGE.md | 1 + api/openapi.yaml | 107 ++-- ...alificationsCheckEligibilityRequestBody.md | 2 +- ...ltiesMembersRedemptionRedeemRequestBody.md | 2 +- docs/ManagementApi.md | 24 +- docs/MetadataSchemasApi.md | 2 +- docs/OAuthApi.md | 4 +- docs/OAuthTokenGenerateResponseBody.md | 2 +- docs/OAuthTokenIntrospectResponseBody.md | 2 +- docs/Order.md | 2 +- docs/OrdersCreateRequestBody.md | 2 +- docs/OrdersImportCreateRequestBodyItem.md | 2 +- docs/OrdersUpdateRequestBody.md | 2 +- docs/ProductsApi.md | 2 +- ...alificationsCheckEligibilityRequestBody.md | 2 +- docs/RedemptionsApi.md | 2 +- docs/TemplatesApi.md | 14 +- docs/ValidationRulesApi.md | 4 +- docs/VouchersApi.md | 6 +- lib/net9.0/Voucherify.dll | Bin 5714432 -> 5714432 bytes lib/net9.0/Voucherify.xml | 486 +++++++++--------- lib/netstandard2.0/Voucherify.deps.json | 21 + lib/netstandard2.0/Voucherify.dll | Bin 5655040 -> 5655040 bytes lib/netstandard2.0/Voucherify.xml | 486 +++++++++--------- lib/netstandard2.1/Voucherify.dll | Bin 5655040 -> 5655040 bytes lib/netstandard2.1/Voucherify.xml | 486 +++++++++--------- readme.md | 4 +- src/Voucherify/Api/ManagementApi.cs | 192 +++---- src/Voucherify/Api/MetadataSchemasApi.cs | 16 +- src/Voucherify/Api/OAuthApi.cs | 16 +- src/Voucherify/Api/ProductsApi.cs | 16 +- src/Voucherify/Api/RedemptionsApi.cs | 16 +- src/Voucherify/Api/TemplatesApi.cs | 112 ++-- src/Voucherify/Api/ValidationRulesApi.cs | 32 +- src/Voucherify/Api/VouchersApi.cs | 32 +- src/Voucherify/Client/ApiClient.cs | 7 +- src/Voucherify/Client/Configuration.cs | 1 + ...alificationsCheckEligibilityRequestBody.cs | 6 +- ...ltiesMembersRedemptionRedeemRequestBody.cs | 6 +- .../Model/OAuthTokenGenerateResponseBody.cs | 6 +- .../Model/OAuthTokenIntrospectResponseBody.cs | 6 +- src/Voucherify/Model/Order.cs | 6 +- .../Model/OrdersCreateRequestBody.cs | 6 +- .../OrdersImportCreateRequestBodyItem.cs | 6 +- .../Model/OrdersUpdateRequestBody.cs | 6 +- ...alificationsCheckEligibilityRequestBody.cs | 6 +- src/Voucherify/Voucherify.nuspec | 2 +- 47 files changed, 1097 insertions(+), 1066 deletions(-) diff --git a/ENDPOINTS-COVERAGE.md b/ENDPOINTS-COVERAGE.md index b83e5ae8..1632b269 100644 --- a/ENDPOINTS-COVERAGE.md +++ b/ENDPOINTS-COVERAGE.md @@ -231,6 +231,7 @@ | /v1/product-collections | get | List Product Collections | supported | | | /v1/product-collections | post | Create Product Collection | supported | | | /v1/product-collections/{productCollectionId} | get | Get Product Collection | supported | | +| /v1/product-collections/{productCollectionId} | put | Update Product Collection | | | | /v1/product-collections/{productCollectionId} | delete | Delete Product Collection | supported | | | /v1/product-collections/{productCollectionId}/products | get | List Products in Collection | supported | | ## Validation Rules diff --git a/api/openapi.yaml b/api/openapi.yaml index a084be8e..e7c33336 100644 --- a/api/openapi.yaml +++ b/api/openapi.yaml @@ -1505,8 +1505,7 @@ paths: tags: - Redemptions post: - description: "# 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\ + 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\ @@ -1691,9 +1690,9 @@ paths: schema: $ref: '#/components/schemas/ParameterIds' style: form - - description: "Object for setting voucher filters. Read [Advanced filters for\ - \ fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources)\ - \ for filter examples." + - description: |- + Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. + Note that **Try-it!** adds the opening [ and closing ] square brackets on its own, so paste your filter without them, for example expiration_date][conditions][$before. explode: true in: query name: filters @@ -4172,7 +4171,7 @@ paths: You 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 norms. For example, 2020-03-11T09:00:00.000Z.\n\ + \ 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\ @@ -22977,7 +22976,7 @@ paths: \ 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 norms**.\ + \ 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\ @@ -22985,7 +22984,7 @@ paths: \ 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](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata).\n\ + \ 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\ @@ -23745,7 +23744,7 @@ paths: description: |- Create a validation rule. 🚧 Managing validation rules - It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + 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. operationId: create-validation-rules parameters: [] requestBody: @@ -23952,7 +23951,7 @@ paths: description: |- Update validation rule parameters. 🚧 Managing validation rules - It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + 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. operationId: update-validation-rule parameters: - description: A unique validation rule ID. @@ -24350,13 +24349,16 @@ paths: examples: Voucher: value: - voucher: v_ssR6vhswwh5odSloN2Vc3O60w7aea018 + related_object_type: voucher + related_object_id: "{{voucherId}}" Campaign: value: - campaign: camp_Rv9EuIrkT08YEORb2pUMGSUo + related_object_type: campaign + related_object_id: "{{campaignId}}" Distribution: value: - distribution: distr_2nUIekYnS9L1Vm1I55vmC7kSvd + related_object_type: distribution + related_object_id: "{{distributionId}}" schema: $ref: '#/components/schemas/ValidationRulesAssignmentsCreateRequestBody' description: Specify the resource that you would like to assign the validation @@ -26082,7 +26084,7 @@ paths: - reward - voucher ## Custom - If you have defined a [custom metadata schema](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata), provide its name in the resource field to retrieve its details. + If you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. operationId: get-metadata-schema @@ -27262,7 +27264,7 @@ paths: description: |- Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation - Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. operationId: list-campaign-templates parameters: - description: "Limits the number of objects to be returned. The limit can range\ @@ -27365,7 +27367,7 @@ paths: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation - Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. operationId: create-campaign-template parameters: [] requestBody: @@ -27405,7 +27407,7 @@ paths: description: |- Deletes the campaign template permanently. 📘 Campaign Templates – Documentation - Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. operationId: delete-campaign-template parameters: - description: Pass the campaign template ID that was assigned by Voucherify. @@ -27432,7 +27434,7 @@ paths: description: |- Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation - Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. operationId: get-campaign-template parameters: - description: Pass the campaign template ID that was assigned by Voucherify. @@ -27473,7 +27475,7 @@ paths: description: |- Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation - Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. operationId: update-campaign-template parameters: - description: Pass the campaign template ID that was assigned by Voucherify. @@ -27532,7 +27534,7 @@ paths: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation - Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. operationId: create-campaign-from-template parameters: - description: Pass the campaign template ID that was assigned by Voucherify. @@ -27671,7 +27673,7 @@ paths: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation - Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. operationId: add-tier-from-template parameters: - description: Pass the campaign template ID that was assigned by Voucherify. @@ -28566,7 +28568,7 @@ paths: 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation - Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. operationId: management-list-campaign-templates parameters: - description: Provide the unique identifier of the project. @@ -28663,7 +28665,7 @@ paths: Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation - Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. operationId: management-copy-campaign-template parameters: - description: Provide the unique identifier of the project. @@ -29037,7 +29039,7 @@ paths: description: |- Lists all metadata schemas available in the project. 📘 Metadata Documentation - Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. operationId: list-metadata-schemas-1 parameters: - description: Provide the unique identifier of the project. @@ -29285,7 +29287,7 @@ paths: \ 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](https://support.voucherify.io/article/99-schema-validation-metadata)\ + \ 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." operationId: create-metadata-schema @@ -29368,7 +29370,7 @@ paths: - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation - Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. operationId: delete-metadata-schema parameters: - description: Provide the unique identifier of the project. @@ -29401,7 +29403,7 @@ paths: description: |- Retrieves a metadata schema. 📘 Metadata Documentation - Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. operationId: get-metadata-schema-1 parameters: - description: Provide the unique identifier of the project. @@ -29493,7 +29495,7 @@ paths: - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation - Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. operationId: update-metadata-schema parameters: - description: Provide the unique identifier of the project. @@ -29557,7 +29559,7 @@ paths: description: |- Lists all custom event schemas available in the project. 📘 Custom Event Documentation - Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. + Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). operationId: list-custom-event-schemas parameters: @@ -29614,7 +29616,7 @@ paths: Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation - Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. + Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). operationId: create-custom-event-schema parameters: @@ -29663,7 +29665,7 @@ paths: description: |- Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation - Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. + Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). operationId: delete-custom-event-schema parameters: @@ -29697,7 +29699,7 @@ paths: description: |- Retrieves a custom event schema. 📘 Custom Event Documentation - Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. + Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). operationId: get-custom-event-schema parameters: @@ -29752,7 +29754,7 @@ paths: - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation - Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. + Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). operationId: update-custom-event-schema parameters: @@ -37469,9 +37471,8 @@ components: \ body to check against redeemables requiring **redemption** metadata\ \ validation rules to be satisfied. The validation runs against rules\ \ that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules)\ - \ endpoint or via the Dashboard; in the _Advanced Rule Builder_ →\ - \ _Advanced_ → _Redemption metadata satisfy_ or _Basic Builder_ →\ - \ _Attributes match_ → _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule)." + \ endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules)\ + \ in the the Dashboard." nullable: true title: ClientQualificationsCheckEligibilityRequestBodyMetadata type: object @@ -54711,9 +54712,8 @@ components: \ body to check against vouchers requiring **redemption** metadata validation\ \ rules to be satisfied. The validation runs against rules that are defined\ \ through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules)\ - \ endpoint or via the Dashboard; in the _Advanced Rule Builder_ →\ - \ _Advanced_ → _Redemption metadata satisfy_ or _Basic Builder_ →\ - \ _Attributes match_ → _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule)." + \ endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules)\ + \ in the the Dashboard." nullable: true title: LoyaltiesMembersRedemptionRedeemRequestBodyMetadata type: object @@ -63719,7 +63719,7 @@ components: description: |- Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. - Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. + Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. nullable: true type: string title: OAuthTokenGenerateRequestBody @@ -63755,7 +63755,7 @@ components: scope: description: |- Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. - Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. + Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. nullable: true type: string token_type: @@ -63808,7 +63808,7 @@ components: scope: description: |- Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. - Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. + Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. nullable: true type: string token_type: @@ -63940,8 +63940,10 @@ components: nullable: true type: string source_id: - description: Unique source ID of an existing order that will be linked to - the redemption of this request. + description: |- + Unique source ID of an existing order that will be linked to the redemption of this request. + + For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request. nullable: true type: string status: @@ -64929,8 +64931,10 @@ components: email: email properties: source_id: - description: Unique source ID of an existing order that will be linked to - the redemption of this request. + description: |- + Unique source ID of an existing order that will be linked to the redemption of this request. + + For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request. nullable: true type: string status: @@ -70584,9 +70588,8 @@ components: \ body to check against redeemables requiring **redemption** metadata\ \ validation rules to be satisfied. The validation runs against rules\ \ that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules)\ - \ endpoint or via the Dashboard; in the _Advanced Rule Builder_ →\ - \ _Advanced_ → _Redemption metadata satisfy_ or _Basic Builder_ →\ - \ _Attributes match_ → _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule)." + \ endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules)\ + \ in the the Dashboard." nullable: true title: QualificationsCheckEligibilityRequestBodyMetadata type: object @@ -100593,8 +100596,10 @@ components: nullable: true type: string source_id: - description: Unique source ID of an existing order that will be linked to - the redemption of this request. + description: |- + Unique source ID of an existing order that will be linked to the redemption of this request. + + For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request. nullable: true type: string status: diff --git a/docs/ClientQualificationsCheckEligibilityRequestBody.md b/docs/ClientQualificationsCheckEligibilityRequestBody.md index 5757e53a..191b8903 100644 --- a/docs/ClientQualificationsCheckEligibilityRequestBody.md +++ b/docs/ClientQualificationsCheckEligibilityRequestBody.md @@ -11,7 +11,7 @@ Name | Type | Description | Notes **Scenario** | **string** | Defines the scenario Voucherify should consider during the qualification process. - `ALL` - Scenario that returns all redeemables available for the customer in one API request. This scenario is used by default when no value is selected. - `CUSTOMER_WALLET` - returns vouchers applicable to the customer's cart based on the vouchers assigned to the customer's profile. - `AUDIENCE_ONLY` - returns all vouchers, promotion tiers, and campaigns available to the customer. Voucherify validates the rules based on the customer profile only. - `PRODUCTS` - returns all promotions available for the products (when a discount is defined to be applied to the item or when the item is required in the validation rule). - `PRODUCTS_DISCOUNT` - returns all promotions available for products when a discount is defined as applicable to specific item(s). - `PROMOTION_STACKS` - returns the applicable promotion stacks. - `PRODUCTS_BY_CUSTOMER` - returns all promotions available for a customer for the products (when a discount is defined to be applied to the item or when the item is required in the validation rule). - `PRODUCTS_DISCOUNT_BY_CUSTOMER` - returns all promotions available for a customer for products when a discount is defined as applicable to specific item(s). | [optional] **Options** | [**QualificationsOption**](QualificationsOption.md) | | [optional] **Session** | [**ClientQualificationsCheckEligibilityRequestBodySession**](ClientQualificationsCheckEligibilityRequestBodySession.md) | | [optional] -**Metadata** | **Object** | A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard; in the _Advanced Rule Builder_ &rarr; _Advanced_ &rarr; _Redemption metadata satisfy_ or _Basic Builder_ &rarr; _Attributes match_ &rarr; _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule). | [optional] +**Metadata** | **Object** | A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules) in the the Dashboard. | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/LoyaltiesMembersRedemptionRedeemRequestBody.md b/docs/LoyaltiesMembersRedemptionRedeemRequestBody.md index a554ad6f..35e20e81 100644 --- a/docs/LoyaltiesMembersRedemptionRedeemRequestBody.md +++ b/docs/LoyaltiesMembersRedemptionRedeemRequestBody.md @@ -7,7 +7,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **Reward** | [**LoyaltiesMembersRedemptionRedeemRequestBodyReward**](LoyaltiesMembersRedemptionRedeemRequestBodyReward.md) | | [optional] **Order** | [**Order**](Order.md) | | [optional] -**Metadata** | **Object** | A set of key/value pairs that you can send in the request body to check against vouchers requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard; in the _Advanced Rule Builder_ &rarr; _Advanced_ &rarr; _Redemption metadata satisfy_ or _Basic Builder_ &rarr; _Attributes match_ &rarr; _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule). | [optional] +**Metadata** | **Object** | A set of key/value pairs that you can send in the request body to check against vouchers requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules) in the the Dashboard. | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/ManagementApi.md b/docs/ManagementApi.md index 48bdc8e7..feb44768 100644 --- a/docs/ManagementApi.md +++ b/docs/ManagementApi.md @@ -253,7 +253,7 @@ catch (ApiException e) Create Custom Event Schema -Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). +Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). ### Example ```csharp @@ -355,7 +355,7 @@ catch (ApiException e) Create Metadata Schema -Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. +Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. ### Example ```csharp @@ -859,7 +859,7 @@ void (empty response body) Delete Custom Event Schema -Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). +Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). ### Example ```csharp @@ -957,7 +957,7 @@ void (empty response body) Delete Metadata Schema -Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. +Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. ### Example ```csharp @@ -1449,7 +1449,7 @@ catch (ApiException e) Get Custom Event Schema -Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). +Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). ### Example ```csharp @@ -1551,7 +1551,7 @@ catch (ApiException e) Get Metadata Schema -Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. +Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. ### Example ```csharp @@ -2255,7 +2255,7 @@ catch (ApiException e) List Custom Event Schemas -Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). +Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). ### Example ```csharp @@ -2355,7 +2355,7 @@ catch (ApiException e) List Metadata Schemas -Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. +Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. ### Example ```csharp @@ -2850,7 +2850,7 @@ catch (ApiException e) Copy Campaign Template to a Project -Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. +Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. ### Example ```csharp @@ -2954,7 +2954,7 @@ catch (ApiException e) List Campaign Templates -Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. +Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. ### Example ```csharp @@ -3266,7 +3266,7 @@ catch (ApiException e) Update Custom Event Schema -Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). +Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). ### Example ```csharp @@ -3370,7 +3370,7 @@ catch (ApiException e) Update Metadata Schema -Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. +Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. ### Example ```csharp diff --git a/docs/MetadataSchemasApi.md b/docs/MetadataSchemasApi.md index 34d54c33..513969e6 100644 --- a/docs/MetadataSchemasApi.md +++ b/docs/MetadataSchemasApi.md @@ -13,7 +13,7 @@ All URIs are relative to *https://api.voucherify.io* Get Metadata Schema -Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. +Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. ### Example ```csharp diff --git a/docs/OAuthApi.md b/docs/OAuthApi.md index 20572cd1..664bfacb 100644 --- a/docs/OAuthApi.md +++ b/docs/OAuthApi.md @@ -43,7 +43,7 @@ namespace Example var apiInstance = new OAuthApi(config); var grantType = "client_credentials"; // string | Gives an access token outside of the context of a user. (optional) - var scope = "scope_example"; // string | Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) + var scope = "scope_example"; // string | Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) try { @@ -87,7 +87,7 @@ catch (ApiException e) | Name | Type | Description | Notes | |------|------|-------------|-------| | **grantType** | **string** | Gives an access token outside of the context of a user. | [optional] | -| **scope** | **string** | Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. | [optional] | +| **scope** | **string** | Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. | [optional] | ### Return type diff --git a/docs/OAuthTokenGenerateResponseBody.md b/docs/OAuthTokenGenerateResponseBody.md index 97107345..591c9e0f 100644 --- a/docs/OAuthTokenGenerateResponseBody.md +++ b/docs/OAuthTokenGenerateResponseBody.md @@ -9,7 +9,7 @@ Name | Type | Description | Notes **ClientId** | **string** | Unique client identifier, assigned by Voucherify, for OAuth. | [optional] **ExpiresAt** | **int?** | Timestamp in seconds in the Unix format indicating when the token expires. | [optional] **ExpiresIn** | **int?** | Number of seconds left until the token expires. | [optional] -**Scope** | **string** | Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. | [optional] +**Scope** | **string** | Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. | [optional] **TokenType** | **string** | Type of the token. Use the value as the header prefix for authorization. | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/OAuthTokenIntrospectResponseBody.md b/docs/OAuthTokenIntrospectResponseBody.md index 9233b46f..870feea6 100644 --- a/docs/OAuthTokenIntrospectResponseBody.md +++ b/docs/OAuthTokenIntrospectResponseBody.md @@ -9,7 +9,7 @@ Name | Type | Description | Notes **ClientId** | **string** | Unique client identifier, assigned by Voucherify, for OAuth. | [optional] **ExpiresAt** | **int?** | Timestamp in seconds in the Unix format indicating when the token expires. | [optional] **ExpiresIn** | **int?** | Number of seconds left until the token expires. | [optional] -**Scope** | **string** | Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. | [optional] +**Scope** | **string** | Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. | [optional] **TokenType** | **string** | Type of the token. Use the value as the header prefix for authorization. | [optional] **Active** | **bool?** | Determines if the token is active. Nonexistent tokens are also marked as inactive. | [optional] diff --git a/docs/Order.md b/docs/Order.md index 401d7f5f..541e8afb 100644 --- a/docs/Order.md +++ b/docs/Order.md @@ -6,7 +6,7 @@ Order information. Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **Id** | **string** | Unique ID assigned by Voucherify of an existing order that will be linked to the redemption of this request. | [optional] -**SourceId** | **string** | Unique source ID of an existing order that will be linked to the redemption of this request. | [optional] +**SourceId** | **string** | Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request. | [optional] **Status** | **string** | The order status. | [optional] **Amount** | **int?** | A positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the total amount of the order. This is the sum of the order items' amounts. | [optional] **InitialAmount** | **int?** | A positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the total amount of the order. This is the sum of the order items' amounts. | [optional] diff --git a/docs/OrdersCreateRequestBody.md b/docs/OrdersCreateRequestBody.md index 05c85d0c..6e3ab041 100644 --- a/docs/OrdersCreateRequestBody.md +++ b/docs/OrdersCreateRequestBody.md @@ -6,7 +6,7 @@ Request body schema for **POST** `v1/orders`. Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **Id** | **string** | Unique ID assigned by Voucherify of an existing order that will be linked to the redemption of this request. | [optional] -**SourceId** | **string** | Unique source ID of an existing order that will be linked to the redemption of this request. | [optional] +**SourceId** | **string** | Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request. | [optional] **Status** | **string** | The order status. | [optional] **Amount** | **int?** | A positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the total amount of the order. This is the sum of the order items' amounts. | [optional] **InitialAmount** | **int?** | A positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the total amount of the order. This is the sum of the order items' amounts. | [optional] diff --git a/docs/OrdersImportCreateRequestBodyItem.md b/docs/OrdersImportCreateRequestBodyItem.md index 93866e61..30ffe4f2 100644 --- a/docs/OrdersImportCreateRequestBodyItem.md +++ b/docs/OrdersImportCreateRequestBodyItem.md @@ -5,7 +5,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **Id** | **string** | Unique ID assigned by Voucherify of an existing order that will be linked to the redemption of this request. | [optional] -**SourceId** | **string** | Unique source ID of an existing order that will be linked to the redemption of this request. | [optional] +**SourceId** | **string** | Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request. | [optional] **Status** | **string** | The order status. | [optional] **Amount** | **int?** | A positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the total amount of the order. This is the sum of the order items' amounts. | [optional] **InitialAmount** | **int?** | A positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the total amount of the order. This is the sum of the order items' amounts. | [optional] diff --git a/docs/OrdersUpdateRequestBody.md b/docs/OrdersUpdateRequestBody.md index d4183376..1edb4719 100644 --- a/docs/OrdersUpdateRequestBody.md +++ b/docs/OrdersUpdateRequestBody.md @@ -5,7 +5,7 @@ Request body schema for **PUT** `v1/orders/{orderId}`. Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**SourceId** | **string** | Unique source ID of an existing order that will be linked to the redemption of this request. | [optional] +**SourceId** | **string** | Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request. | [optional] **Status** | **string** | The order status. | [optional] **Amount** | **int?** | A positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the total amount of the order. This is the sum of the order items' amounts. | [optional] **InitialAmount** | **int?** | A positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the total amount of the order. This is the sum of the order items' amounts. | [optional] diff --git a/docs/ProductsApi.md b/docs/ProductsApi.md index c5850f7b..626b861d 100644 --- a/docs/ProductsApi.md +++ b/docs/ProductsApi.md @@ -637,7 +637,7 @@ catch (ApiException e) Import Products using CSV -Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 norms**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). +Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - 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 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - 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). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). ### Example ```csharp diff --git a/docs/QualificationsCheckEligibilityRequestBody.md b/docs/QualificationsCheckEligibilityRequestBody.md index 6d51955d..25fa2969 100644 --- a/docs/QualificationsCheckEligibilityRequestBody.md +++ b/docs/QualificationsCheckEligibilityRequestBody.md @@ -11,7 +11,7 @@ Name | Type | Description | Notes **Scenario** | **string** | Defines the scenario Voucherify should consider during the qualification process. - `ALL` - Scenario that returns all redeemables available for the customer in one API request. This scenario is used by default when no value is selected. - `CUSTOMER_WALLET` - returns vouchers applicable to the customer's cart based on the vouchers assigned to the customer's profile. - `AUDIENCE_ONLY` - returns all vouchers, promotion tiers, and campaigns available to the customer. Voucherify validates the rules based on the customer profile only. - `PRODUCTS` - returns all promotions available for the products (when a discount is defined to be applied to the item or when the item is required in the validation rule). - `PRODUCTS_DISCOUNT` - returns all promotions available for products when a discount is defined as applicable to specific item(s). - `PROMOTION_STACKS` - returns the applicable promotion stacks. - `PRODUCTS_BY_CUSTOMER` - returns all promotions available for a customer for the products (when a discount is defined to be applied to the item or when the item is required in the validation rule). - `PRODUCTS_DISCOUNT_BY_CUSTOMER` - returns all promotions available for a customer for products when a discount is defined as applicable to specific item(s). | [optional] **Options** | [**QualificationsOption**](QualificationsOption.md) | | [optional] **Session** | [**QualificationsCheckEligibilityRequestBodySession**](QualificationsCheckEligibilityRequestBodySession.md) | | [optional] -**Metadata** | **Object** | A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard; in the _Advanced Rule Builder_ &rarr; _Advanced_ &rarr; _Redemption metadata satisfy_ or _Basic Builder_ &rarr; _Attributes match_ &rarr; _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule). | [optional] +**Metadata** | **Object** | A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules) in the the Dashboard. | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/RedemptionsApi.md b/docs/RedemptionsApi.md index 69617c90..c38a79fd 100644 --- a/docs/RedemptionsApi.md +++ b/docs/RedemptionsApi.md @@ -337,7 +337,7 @@ catch (ApiException e) Redeem Stackable Discounts -# How API returns calculated discounts and order amounts in the response In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. +In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. ### Example ```csharp diff --git a/docs/TemplatesApi.md b/docs/TemplatesApi.md index f93807df..9a38f4c6 100644 --- a/docs/TemplatesApi.md +++ b/docs/TemplatesApi.md @@ -18,7 +18,7 @@ All URIs are relative to *https://api.voucherify.io* Add Promotion Tier From Template -Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. +Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. ### Example ```csharp @@ -122,7 +122,7 @@ catch (ApiException e) Create Campaign From Template -Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. +Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. ### Example ```csharp @@ -226,7 +226,7 @@ catch (ApiException e) Create Campaign Template -Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. +Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. ### Example ```csharp @@ -328,7 +328,7 @@ catch (ApiException e) Delete Campaign Template -Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. +Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. ### Example ```csharp @@ -426,7 +426,7 @@ void (empty response body) Get Campaign Template -Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. +Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. ### Example ```csharp @@ -528,7 +528,7 @@ catch (ApiException e) List Campaign Templates -Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. +Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. ### Example ```csharp @@ -638,7 +638,7 @@ catch (ApiException e) Update Campaign Template -Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. +Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. ### Example ```csharp diff --git a/docs/ValidationRulesApi.md b/docs/ValidationRulesApi.md index 9a5d7aed..e5bb3565 100644 --- a/docs/ValidationRulesApi.md +++ b/docs/ValidationRulesApi.md @@ -126,7 +126,7 @@ catch (ApiException e) Create Validation Rules -Create a validation rule. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. +Create a validation rule. 🚧 Managing validation rules 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. ### Example ```csharp @@ -856,7 +856,7 @@ catch (ApiException e) Update Validation Rule -Update validation rule parameters. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. +Update validation rule parameters. 🚧 Managing validation rules 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. ### Example ```csharp diff --git a/docs/VouchersApi.md b/docs/VouchersApi.md index ff261d4a..b041fd52 100644 --- a/docs/VouchersApi.md +++ b/docs/VouchersApi.md @@ -743,7 +743,7 @@ catch (ApiException e) Import Vouchers -Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 norms. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. +Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. ### Example ```csharp @@ -1098,7 +1098,7 @@ namespace Example var order = (ParameterOrderVouchers) "created_at"; // ParameterOrderVouchers? | Sorts the results using one of the filtering options, where the dash - preceding a sorting option means sorting in a descending order. (optional) var code = "code_example"; // string | (optional) var ids = new List(); // List | (optional) - var filters = new Object(); // Object | Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. (optional) + var filters = new Object(); // Object | Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. Note that **Try-it!** adds the opening [ and closing ] square brackets on its own, so paste your filter without them, for example expiration_date][conditions][$before. (optional) try { @@ -1152,7 +1152,7 @@ catch (ApiException e) | **order** | **ParameterOrderVouchers?** | Sorts the results using one of the filtering options, where the dash - preceding a sorting option means sorting in a descending order. | [optional] | | **code** | **string** | | [optional] | | **ids** | [**List<string>**](string.md) | | [optional] | -| **filters** | [**Object**](Object.md) | Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. | [optional] | +| **filters** | [**Object**](Object.md) | Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. Note that **Try-it!** adds the opening [ and closing ] square brackets on its own, so paste your filter without them, for example expiration_date][conditions][$before. | [optional] | ### Return type diff --git a/lib/net9.0/Voucherify.dll b/lib/net9.0/Voucherify.dll index 8a205b196829a9429de9acef6e7085d80a699410..9028e5c43c2acf68796d0d50c2a900e6681f7233 100644 GIT binary patch delta 1286421 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͑|c&0GP+ty`HhE1;^I1*OXWL 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%0Dv?Ft5}F3rllNSk705g1+|LyBcRf)c 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 !!Re-4ofGYY<0_Z%)qM88MeE?PUx<0Hy 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%0A>dk*#lp@Naq#v5bWEIz)B)(G*7E5+F+kuFVOpe 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 delta 1286418 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

acfb;L1m`#BGm)QQ9+76XAwB_iC^c%C4I&v(_ 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

MbsWxcf58FZkw5|78 z-O#`>+c^RJT`JGt;ylL|^fUY5?^3nXz;RnI0sLL6sek(qs-46slTX_22!Bix`Ia|YBtU=$UdQZI};Qua_ZK44FE>)de zfELiWVB0T%zDw0k4a~)~eFSjHmYl_=Xm%3RS!e_dQLl0_J7dAG+3deEr=@qQnsFZ% z=K@@}#S0+CC2B7~z-o2tei(nh`L*rHZ>-1#_}V{Er1}2OWhD_E#fc=sHPJ|sAc*`D~%|3Yc9%!JbJwX6};x6=|I1jX^3*b-Ob=5#I zd#(Wf#N9j%6t_nlVjrBI2Q^T_K3o8Q;_kHuO4_#zpq<#qs@5ZNo`^-ro-cquaW{Yf zed4aPJ?eM%K`)`kZGuPsoH|XMK5?hFXA9>~-02=;S_9YNef9Raf3PCWj!}(#jM?$1 zrH`=&go4}baXHNY$qgt{7ZQhkkVx_&X`&iEfsYsfr#(Xe<SF}9EM&K+cR<_qZ z!+@%~Qm>vu@w?1&|Kiue{ud?1*aI(d1AbA`v}cI5~ zR#BgNLV%9ScJ>?%_^&3yp9_e!+b^>ZzMAMsfUYLm+v5fB)x;tK72uV#MIIk(j+iPE8MZTIa zy@UpJr;B}*0A6HTXy7CJE&;sAjD3l-+q#IlhyBP^Hbqwxja0{1Fx4EOr`>#w0bNbJ zuci}d575gVCxEu+x~M$_Xcw-xJw*WT!aXHGb@F5TB>|`LJ?RKlH6JPRF-#@clm8Ou zNYg<|<>Q2CBtTz#{A~tWjT&H26bUZ^SJ2eIo_uQGDuCZP=Xfn(p#8Z3K2dJ-S}unM z+iU;L#hbG%&9x~7_ zhm!3HBJr=ri$;X=;7zxui`;)Tv}m2kzqaR!+Fs(nzgg##?NpAtZQs-<24guVx`!oK3UxJ3`TL6TByHsW1)s2!4Yd!k6_ZKFfgQ#7@W2l&C>@D(?u6VqhXyBOkF z0I<$}NdUcVG#!$S_B@f$+eUv>YthuU8(@r7Nrv%V@R{v9(0NBX9SUj9h*?+OGc*7QX4XRTjoHqAX zmVn2IjreVtJ)=l*{{sfp&v%ufr1W#YJ>@M1+|SV^rJo1vkwqD3{mizQ7ft>B zJY-)efcyE3j5mVU!}jz*wn6=DrTUbDMhAc+_FMrp%iYvsfY5#bNA2f|u?A)CSCE{r zKNJbg@?3R|Y|uh}(q6kbH|0w~SLyIMwx!TGV?S4d0hO}VYDektIsqA(4@!rll+nG8 zr}iv8H{g36o%JwTd=qX_*#iv>sAB2WECRH|KeI<`z+bWUY2dkirU0&3F9=Y@dSTBI zz!j^80l)?yFYR_C`=E+dM)f5?73-BfUI16Dr3AvDk#A2GK-J=Hb(}yQfY`jbO)^1)Krsit zX8wNkkuaJU@|qJKhRf~1rqLL}`V>8a|NVdE2k(vIN*vRnZuJOj<)^cKJa z=I|}}GujfqC3F~?IUR9cwy0H#GLAta;Y!io3X61FTh@^wfGfo`EBZko*b(Vt8(a{c zXd2}mNdmYagxkba1xJ#HP3)EV9AJH;6OTv9$~XO70aZz>XYV2T;i| zsw@LrZ@$*6;+QKEE*h=T)c-!rs*Y0v60Xq=mI-#`@Lt$>+YuXFVEnKu?||_$05u#@ zBe`OM*H>z!6Q+u1 z;8lr^BLe7nHLDE(p+0~Hj_o0=p>5qnIdVio$7_yyN;W9znmFvC+?0>ks;=-kq4i;- zx#LtN2DB#qpvIx8Z8Jbe$9@4H>?=|vQ*H6!IQa#jlOwMx+n~2FAAsaThrSw1=q=2@ zsG43hJq!@`eI2BRYU4KWeNZ4K5AaOUq5mA$yvb)JaI7PVwKn`uXduT?JB@bM~nbUp1;&17!SP*%bfmRlMb3oDp-`l1wZ(Bq0GF{Hp_rx4 zu(-{U*pf9UMY^ldO6W%dK&B%un!%X;*sFzPyJL_@=*i0jwThY!1^C&K)S8=W^=X%5 zp-8wsm9LCAXvy2{I459KS1N^_DBncpb@Z8-L8xrUk`r3@vseZ zT10OV6WR~2Ul)l|)D7?pZ3 ze8-X3slae!HKQ5~QzqYaM1IJi$Zaa4d#hotT0-NVBcU?`n%1_ELett(HLi}P zwC(zjqklX%)u#1iST6d$Vts`taa>RDwrZlA8RruS~L4e1Og#svHKUX~g0>-Jy zZ%e|yc1-EYiaY?e8Zt8fIkE+C!nUpfSF2#Lh%>euYtUG(RoehUGXUOl*6zW8dX@=E zQD=-usAn0fR)i#MF=w})+*IpX3FmN;aL+bJAP!2{lFsb{IAL$YhHW>Dmv(0KVjI-u zgQ{aqXq*7hIr9WimoKU500FnvhMLl4r}O5=tjJw%^p14dmHgyFc)C=HqF6_%1)aCM!1Uc7>gu3ii-D^pg%Q|;`!cDa<2Rl!Rgu8sPmUOwi z)7_7oa+fW&5l3Yhujn-QXFy%9sm9et&l;+gwdEKMcSa0g&d2C0aQ_ii#W`F6AEPzv zAgVZ6tme%Alr`u?rz<4YomWLd(;KHYQPbW4HJsT4xheIvKO_;(t0JMk_Ey#3mA<~? zd^m`kYJIKkEIF7Z+}CyQN?+?ZV+3$tufc}xGZ?SyZ2lQ*P+v!>wsoN~86eV`EP$qW zmYNI@kfPSqmFaEf9F@q5JiT=zp-9JibLTDrJiUV>;p!JyZ0T%1lr^Z!`_*}X(8B=H z&ahz&sLLlHY3+;>33d6f>ReB{+{PI@oSSN0ZtLtX67KTpdeY?&oa+T}mv!~Aw476Y z>thz5z{iKqg&^U3FTH( z)do%dx%II#Xbd;y+?v!7UVFnvg0tJ$0u?&(EC`$1&%A4s0a-9Om3F zfcv?Uz(!ac?kqW;HK?Ck)!9b=tIN^vfzu3+a=Irl=c(VMfzi%x0(k0g5!eZfW1K4l z41O;F&r$mt17rh?b>0+kasvHGqbac`tf&jKrw+SZVIs*LK+3hQ~LDQeBRzbu53}A+Hg#eoVfS=TbCgFH9+D|y|a}Juu zDm4GJwKdl{MIbp~tDq7)CwGUpMI&=J~RJw;Pn4}j&)l$qR=PN4g%-p!G~!vIz| zBWE$76X;|}RykuuLMPDk)mk*Qjs66icFu(Y=mdI#y3!oRmqFuuXZmcmLF2YYwP^v3 z9|6`la|O`2?NXBfLJtC@JI~Ew4Q;PzgY%(CsP}W#A+kYrZKJdHTyDzOo^M)&(|5q< zw8YUt8S#@dV?J|UKJK=}x#?s0_}MvVAp<(C%2#_^!Fh>HoccSje#5|x9U(d%jyRu- zgrEB@6%FSEjyfAEZpwQ^jS0{m(I3u<0(g&T1cBBte$2UF0PPWVRO<-P9#M|7WQxRD z4x75_TD1R|oZK3mPJ~W5-HVye#IR3OJ6dCO>1Fq4oGS$I%kD$p2cVHT=L}oI8vG3P zy!T;>z&cNxZ&I-fSxzss`dZ`>`^yj!ufgg;x6-Qw#d($uWbuO3a*4JP5}4(iUvx$ zQUvf=IX)1LQm#t^_<8d-1Zaj!yMn)GA3Vd82(;Xe(ov>Y&AyFMw}>y=v#LU^QdK zqRllWon7(D-cJK|SGE9N*_Xvi7CBw9YgvPzH!sy*T)A8e1@QCcjoU+m_Fz4(pdVO+ z_h8o%p!D*&(gbjNxjMiU-RTN)-4Vcdy4n(;=grHws;y&F{Ji<(4lvafgIvxPoWX#S zsjqrK8i@eGt^@&;Ok-4NM}VmSr`n=>$`hOs!q90yvpE5_oq9 ze)8v9D1eeFN=+v~$<)SmP5>v}-vO>%kq8;X=1mXd{b)6DGzpL$`iuMBN z3$WbfKF&VqceMjmJp!KttZ;P`K(jqc4IwZAV5Mt?fZt;R@O;l|0y6==bKMj`KM9?$ zE)rM_u*wy7f_-!uQ3OTK(i`A=fHc=20f*syy=p~Z3&3huh5)+Ju|tg`kOlC)D^CF3 zto==GA#fC6jVtmb`xuF5+fJ&x8c25~323yJK)H|oyECId#_r4oRlN_+p{_&!M_09T ztWUodzN4n~2|tVbIz1Eow|8uP{eKSfpRu3Nf0;GT)^ zUu=uA=7s9=X?VrA0(WMP|1|s)`o+bqf&N9tHwdwRv=e(D?!;VfPe)uY)t&$yCV}p) z8t~t^o2G$c?&kvdFxgFj4wK^UhWFVNA0|%-^n;HQ?ui2EFd3@C2LsSyQqsL&03Rkj z3DCh?%3bmwHpNThqQU-~vH_og)1xMO_bK80s7YM{q-b!vAFv`H^@9mecZ}|C0{CEA zr2&(Bg#cbm&wqwZ?<7QRbq{*Trs(G3mul<~n3@h?b7u&k?3|-E55eI@zqoL?bDpw> zc5xl#z9SMoJFbxk8&pQhxU2okP5J&?Ujp=`Mp<{F0De+qsislRy;T6;m^-e4VE1zY zd}FS}Q1MaT-S8Rv;2U#|G*H1kQ2^hV8#WYai8o^pm2>(qckT;TyT%6Z*Hy6Nn$}GbKyyH$5!1vZ#4MVbjlUZ(fcsYDw6hqU( z9TZT)f5Vi=to;ZXnwIWf0$SIn3)pD{c40zVxzhyDdiSf^O@Jmn+I>d=Px=!Lw02i} zi+%8sz_*&x~|rI0poW8+Pg!FaZ_4A9;nL%{srjZ z?k|8=$b4lR2~czwZgIKS3!oLUlxj`D3=rpjD1a7Qr@8UjHf?d%9 zQB~C%6@J$C4nPlgRw)K_v^P{`M#Ew&fS&Ha(hRy{QE0C^0t9qZBS&MIppp61ZPzpB zk!dsriesTT&>b(JhmqcZIBbkRl%r$(i_oO8{y%k+U?v%@liZ`MY=$m9=c`vqaI;L6 z8wb80e7gIHo%#Oe_~o#=H4ep%(tL(H&cWbCJ(|n*y8t^TRpljF*A{>@0SvMhI>%({|CS4ODIzC zo81`#WIv7o?Z^G-&J#evV?S;(hLm=Mwz~UQU{l(T&`<7(BH`VfwUc3kj@C@~egV9j zbA@blKtFc4&sAg_v>0}Qtm;EgtY?UqO?=AMTq1c)(A7CEjz~`>Pc8e!_i8B<#KYH1U4Y z9bA>0viE7zkXT=!Yp31rY7E+k(+$!mq%i~FjJunFjR65g7OC)L?1HQSIO`6s&Kk4} zvK^9(?nsf)dFd}|D4N<10937~>|SglEh*AoDLy0^Z~Ht6WTq-@iX&bL+F>BxwG z!Ed-TYB0YXMO!fQrbDslFZh|edw)cMqCvfeqRkEPm%C(52J4YH6;!RS0jdMscE<=< z7K=@9H2@&ADZm|f&^xU0Q+?h%%yrimNfsoJ)#k6^wHKQH;~rJ3!0V@~%nXG4scJF< z;f?@*P?A|Y+I>178oD`R5KAl02CDG=M*^^z5HP^kM&71DC zph>3#7LUF@gY{R7V7Fv}2CSY~0bzb{NCP&{LIFK*kj5Jg*gfY2Bwiy>XSVooc!C3Mf8-_JcOf!D#FE;0(jlun}vV!8&49zPZrw0F?Di6cAqt zSNf{`TpS3M0D?Uwo3chU9-VFoNhMFPNa$hers^2kAW+$pAmAjzX{w6N6A@_x<3Q z1_pcdAF`?Oeo$!%OgdnmY?uw4PocvEug_yD&(`ct(kY zM)Pg8YAH~n%&TFk!R+|Y=K7e6V-h=Msp~@H=a9v7-*yUt*1x=OL#O_qp5#1mwTEE;L*IO zffb%)0X&+P6{4}yb3_1-W-ASR=P~zXA3U1lG_cAOCxAzD%L@N!Hd~2Pu%+tRN+jfZ zM7`N_bpY$r5dNsze+Q2{0Dkm@e9C}^aF3cs;5UFRp8f)82#=`U1Wp2M^{f{_LwH_2 z`OZItZCCLSu1cdJyo!cLJoeAoG!5b3O7}g6@F~DiPvS5J+7O=hB#VTHup^rKhwzN& zhyWhK=^8leF%M@OJcN5RaLyAafQRs@2F`m@1n>}6T_Zj&crFRxA?&@zKZK9gUPTgBFnUu2@DL8xfXRDF01x3R4Vb;bQ`iR&;du>Mya@t$2u&OPL%4h+ z&hS?uT#vU%GAq&*zy{TK6N1|g;Po~aKsTR$RZ9Uvj{^9-=IN|KH=pi7QqCJD61w^H zRNWvObaEN&9VCEny?HWFs*3!IGZSy{47Ncli5Zeg-bj(q96FWCfQ>Q$mAy#p6=7l5YT^o0zxIeg!nB@&*)#c1k34BB`D7jaXb!($qV@kR^aIV`qKG}?M+3g9_x zpn(s(IRbbNhiagm*ZvLr;5l5g%|C~Af5KrfS>5{yhrvQb-QBxl2{)r5T%uZJ!sAMS z9^RV*Xb9J+u>>{(^z?=;Wepm_t!guYodCVOg9OkJ?p3!l{X^JfI}af~vxgzfM#E9w zQ{S-#8p0Fm&CeLZ%K)Rj5orvxA)Mrm76}hwtDQ0+UwUT>;2|8Rfyv$+0X&3TG%&?$ zU(LpO2=8iOsyAK$4`I1o;^QlCssJ9sPP_a=cxx99gA)7joS`>zEnB2>SBqM=8;U^y zbG%6c=-joEx&{zh6JV~l`FhrH;uMNX^eS&Rk@(N?GQ)qt-k$&bcC9yW1GnY#+rfJz ztRK9Q8yWEV?J5nd^Ck)4^V{!>@umtW>%v8~nhp@U z0brXqX)9~|hEbwZ&!4>uMZ%|^C4Pl*0z19u1n{Y6BMt2G25n;-eCjz&1G~Mw1n{Zn zS`GZ-O%uSUo>zXw_M=I)*%y8{Gz(E3^oH$Vizxu z2>9%NK#|L8&VKalCcqJI&d+RPU?-mcW8OO=839R8WjFvElo&bQYCE~<+HC}y5uody z^$##>}JOW61`&G=bwa{+9;`fpwQG4mphO;{biV^k0toPx{EbafB2QCIen%qHR2B8j6~NbN8%Tpdpzo9b zzD~PA8na=lxUbtmHuV>tIbEpQ9frnIfD*nH0>eC-(<9x8J)_~0yD}WD{iyE-|77E~l z#c~vDeHk_IsDG=l+#fjkPe*rxeGN~rVLE1hgrtHmP9${9Y*)|zK-7BxD*93c&@ppB zRX-+a9qPMzl5J?mOqefUB%Idkj>&k3`=U;9Q%>t^1Skco_@)Tpw07l)@oK*O(}j)K z@Y&C>gpDuC5#tfQcmZtuFaa`N)0ZlMjRzdZEFVFaYWcRFWm9yTbVdz6jw9omns+>W zoc#@WLtnS^%x@1XQl!`cRpA7VDcZMc}e& zk+7*or_jUtu+heMQvhv7MX9x?aHFY}x^fB?G8Vjp@5og)MI-Q$T74QL&{rKgjpwf> zgLm}}zg`f-bk*gI^s}39y8s@5IU4Bh%NM`{aNvwY-P4zHvvAbCd>JC)sGFTd)N|qW zV_(v(f~c0LO=l6+YIX7~qS^;O&=+#MAgV*E&pC-|kgvZ0j%u+62K&|v;HZwBlc-5Na&=xf~tD~Ht3{!v@b;fpHvUNfB>sQW2`SPmu*}^4%UVw$)~^163WWz z>K-+v6dUi$6QHHo1fTvNZpwWbaFOx?HYWMb37~mzu1;UX2)9!&E@FfSgMaOt_^`mo zFg5*>jPMNKegQnfdo(c9SMm{S@CZM>BvH-wr9Eb#MK#B_OC%iCu*-;Q47|?sB|qV& zRKupIE0^JQ4#0fh5dl=f7Awb}2sbUW-k(|t%kbqqXH70)E3ZJ4R`|_6`wIqK!p>^o zM_;@EE@6hNqOrx7Du7E^GYxF@T@}D3Y_tZp`9fZ@4=!PwH1LzJzW^>_w+K8#e=>dR z1yBilt$f!20uN%n^*t0oC9Je+e+@%J{rK58>J|Io61JN(2<-Ij62K+w329hhYPYX> zK5Nicqf7O?4vn$^zxa{`&{kuJT67&VMI|iDXAUUozsIMQu-|-PBH3;|riCTQT0FHZoMux%Rn-52>5d*u>#PXmX2NdmZpmA{Ft#;WK*jxVGb zYtU9>BS=p88j6Ixwo+woA@LP@2DJ~ug zHh?@|H8X3_;&&2~=f375p~dgAs{S`@(Bk*Pmn?u6zdnDX65dg}|Hf*h%f@M1P>hXD z(SqSpZSP4xiUrLT5Q--xd#cFp4e949ntNq9}f1D{3!li`t^7C@Lx{ilXSDD2k$@qG+ht zqt;XuMMZ5M)i6ZB-T%>(4~KM+ zVn`FgkB=&$PFOG6g{9QtZSSP*Mqfb$H6v8+L%e?v_zf~jTz^9`{L7*OcjsvQKn z0eodh5MEr7Ei@;?BI&<}={0yqm=>R^K*PXK4ZL>;6V z{BLouoCRA5P!?=7BnaRvxS?zOXxJ=(v%vaPI^Sd{6u?=~nE<)F*$~@=``|2?se>(s zBmtZS`*iS=AyWWn!9yLS8^W8isbCh&ukOVcvyb4J6GLosmQzR_^A~yTk<}sp*^nf1 zifFz0$02VD`F2C5$SI(0RGCnKt^gT^@D^-{0@_zKATSJIhapY?1vF8OBrq9Zr(w1L z3g}F=767mNWrcdVmQNWf#<4|?qN@ZHX`8#4c-pW)07r4I4$c^I1aK4& z>ENuv(wh6=C_W`XQT)TuPXI@;c1h{uoMDXsj^bb)AL z;7`LS0UX8hVWM%tuvGv@v55{Y8j1vPEsrHYwS39Ys4e%wwY)(Gmkr4RxR$SmA@Gq$ zakgu4bYKk%yiv6;1ygQ-tA=<16#3WGR00hE{xYNrpwKs0I|#f3aLte}fI{Cx-6Jp% zAkPrfk^7*~<0;nC0OJ9!8xjRj=s#1v07B=e$)zRqA;!YatSALciZqv@#@H?lq=3r+ zQ0Pk-lLSZs>!74DQ-Bn(4#JG#UD=crFaZjEDPx=fDPUcrv~jioDd2GFyo~Xr04ZPs z%e*<_h4@S1*e`DD)9VcX#fCL*HKq<&8rG zaOfA6Md%~4@Dh(Pq8Dq>dCtqK%nLAO1*m9jCxFg#e5wI}_Buc%qoFrz(0NWrNGcm+ zL_+5|@2M$dg97ogF;M`Y=4^ify$*s#v~g=6wm}IuQn|`O;}d|Y#v%cfa4D)Mfw=&$ z7#qFM8kBHL)La5<0IC_21yI8Ms16a>0bnp56hH}gKs_b!8-URm(U(n8!sV#i5g6Gu z0FyDZKLh>XQNx%c63)E|Xc`P=O`~N1H|5;hM1Y3;nz5e%&b{k8sAXIufOF4WUNmBi zHwAF+bs|8ySKC-)Aosz!H(l3w-8f1B=iVM2)G=-qz`6H;0Oej?W03&Py}*kC>KPlw zb03_0eRc4LF5U^PHvW5iH4MKRr|A}a!90K8>vCxBx5 zi)slFdRz^yD2qr}V|D^7av%?oBF#)UW7G%+9LOgGD3INaT?B9-YgH1^!?;)g2Xc@O zdKxbZ;6N@VK!JSE==hNP;6R?zHF_E21#lqCy(E3~Hl_;TKsF{o?)EX}3*bPG(ZT!1 zn33EE2Xeg*`Wh1ja3HVfpr0{A00**aB>D*c3^0a_VpF_`wAH}?V^aaVh)jv}cEx?Y z3z6RIk#WcHqK`3eEGyD$Z||yeQLxwtAi?PWm;o&^gH@%ujFVCMM4FdO#9R={^`Em|u zxMAvnF-HKU{Htn=0~)mf3XPT}Y>F<=*H`PI5xhMA$hc-X1O4)Rh-tS-`0~6@gAJ;M zP*d2q+?0!?j}A(hS_t4GQ93ATnjwITBufWjrfdORBqg2FM=4X(3hsl8q@EK+@)id0 zf+=Ga1G+rl5t0bgNs&;m@2T1@*cb#*-W2^EH>F-js=+SI4qcwFV2WMMfG^LVc6s?p z;3!kZnrFduw|BYr2~1Tr#eUC#N;3tLYNn1Nq0;<9wfCUc`2Ysf0s&N-i_}z)RFBD& zyN+$>rD-)4iG-`ClovKAt~OJnRBp=EQ=b4;kKL3kfU9SOSBz_>qV>-kcblSqU-O^XGv@$SChp>m7QdmWowFZI&_BON1bXe!#ombcpJNw4Dpal4VJ z(Pjo&S#%64^C}E{o8ISDU9*kJu=QEZxz$Cpt*N&F);xrt_n}9Xy#@}p)MXb_yY0^^ zUax^r{sGXX^lwe zVCz>W$Oav3`5+ccAf=DKo3MtH&xG8YN1f zP&swIZwKe&8thFV@v`dV%(6u^C*CXM>gSYb*$UffqR z)#MFmv;$aa$`C-Q(oKy8(E0 z!UEO4KIUvK6w^#OC)pIayGgC9FYazMSxzxvcQ4h4yE~z=$rST@vAYLV>sUnLgc=bm zQP^%;e406D%8^(o-h<)}ljBTrS5H)(2GZ3|Q@jA~YG?y29^of(Yu04>gEeS%dkK=g zrn(}b)h$}xARA_YeWvjOXm!(+^-WoT_L~l#V;lPFcF=TDB)kAEeN+56WOC$iQ(k~h z5unxWuqj>uFF@rQit(eSi|3y=e#}%T5;i`qp%~9L#s2xM@m&PS_;FK`05*Of#v}b0 z(h1Xo3#>u+=3ZBQ8X^3R0Zy8lUS#moL0p%`J+0HG9wONf$uzYVO@rY-V_GJFUtqn^ z2*$g>#vi7POU1_DSFIW&ibK`##)x7v_$5=(W#*JnpQ}UQ!Nk98YIKDGhxch??<{Q& zG_IO*^B8#X%?;YTzLdF0B>a(=O>cSeZV{T6HaEJ?O}CB4yG5te-*0*G)ZQsPXl70p z^42hVQ^?!|-4X~l9~5wK9)V5-XkjXAj`;gof2QjiFPPg2pqFJ|QhRiba^`sg_@(g& z1gfHs2=f^Mb+Lh!Sp}K`I04F=4L7(CdMDPe`Vz?c8E}_)eN8!Kqa&PCijuhCKP)<)hEyz;3ac{0D8r{gBn4g8$hIa zvw*19^t$|N0s{e}%!LAIbAX}hJb_UFmCdoYxDPiv|5!!74KNAdWpk1MdIfx{YDwS= zfGXxp0koIFJT;NPB7kUf_&;pw-(K`Y;1&XF0IHhf1kj7cKd2i7wg9|ho-JT3Ol?=z z=3d&^wR3YyiWN9NF-PBKiz%Ih-`o76xwlK?UTB)k%Y+P04h=b|9zrF!J%ZVsD}c90 zsNMpAwvw=z-T7?m$KX~H{RvROtmYvCczc9JIidjq^^>CWALNH~NpcqZ97%LDIzBMI^Lo z#~f9yH7+460C?M+@|2s>zQo_E9j(#%dVuEUqXKA_($zhH(7mck8(dtWpuTU84J#Xb z=7%RBvaL)&UvrWG{w_{S9rQD23gGYJOw>Vtb9gB>#a~X^qJshEI05{*qZ>LHXr3*A zKdEGGC!NQePYU4gAa&NkAaitS?t{OzG?Re$H0}(WdkCP96UC@~?SeJ+P*)sc&K1sI z+Ns_iinMADHM`5OMP9}G>tL99hyb~^O`svV8g5P#K#Ms(mr5WGAi-Q9fIg}8jw{i!-%VqPhn zzteOKJm}ar<~#u$r&65(u4BYY&Hl=4k-l$qTh%Aj`+=J11gNVQ^@r>R<9aei1u&FqR; z&@aBN<`$-B^^M&SL{j|OoGpOHI!#UM7Ia`2ao-u7?U`p=SdoHUTluYr9c>-vA)A?!= z0G?e~)kCg`{$)Pu;;#5hc!PUFk@Df1xuTl^F9XX7JcPwOb4LMmz<;Vv6DWNa_t(q| z1kj;1LY03HfDZV7n{x#4xlR)Tk5Zk2$BValI)Xeg->k_hG^g*WX76L_2B|^sBTA#eOIQ+XF{fZmR1d);KL;pj z$q+!{ou{hzh2m1xp|7m4CX2r=EArH~?FU7gbF(Eu0N2nI9at=z1@H>HT?bZ6p#WZC z@94m0iLJ+d@CxhdFMZf8NdkCkWe)S|~rT^k`e`@-#JkSa5|sG)z|5QI@*zJgeVzID$xuA6a$_ z;1zcN@Sp>aiC=_+V=YM?S&@SLw;Gs$xw@~WC%|y%Io!RmM7+zKYPX!KHUb{K3^38s zP5>!dRC|C>pBg;^iWI~Jmb%?ok!!cqhfpN2&@x^CPhx!?d~Mk+fWtOI2a7CW-Psh^ z?rI$@wzLqyC3;>5ODr=4a3w~Ll+M4gWDDT+p`{L%TB3SzAG{1q)WI@K7Xe)DTSf*a z@CI=z(Qhpmg>#8oM+sPAar9)1T%w&v;e>N8X6`#nz5puGh3X+`ECX0=iFuDTs6@Y0 z)kgzRiLS9E3g8m$Phi7GxME|;5I_sdHnnIp!nz)&)>)F?XHyiNbXDdfL}#z^eT3-z z3Z7<(=vU0osO`kBs0-ksw^h$EIOsLb!5%Y~j)S-v{l;#t?1{m_cTJQrW?OQE^WbOc z;JC%|0W0$0_Y-IXi@#a=3Gjc4E8OZa0ZNM#mNf#bTj*iCnqx6tbn@`KWz=9c#TRx? zjFrw$Teb?|eGkiiEZ~f#NC5vfZ%BYPbUSNlG=xp@hHj$?bca`eSds+UKAKI@$hWI~1Zd>!bDf6Ps}_)8|i25m`M!WuJ|+ zBm*o3a9a(@Y>JLptI~TV(`jBR$g9@PQ<%_Z;6JJrQ-X`Z*(vC28+c9Y_!Q)%;NKt_-#&2zV0*>3CItCQJ8A< zeLV0*@U)}Wtl*!ev!vt6*1RR$j6FJ~gJi4!n`b>LHya&)kB&dHCN5(@xw~17nT?Kj zsYSDK{CVjDj)B(jRm|y2vC+ym2VK$9x7r#ffS0~L1kBJ_W1TI4_Vv`1nj^=Db=Dr= zu_@jmv)-5Z?L!Oh2J4X340yqPvu@*X`ED0(f~{ zI3HcnPM|xij&*E`cLFW-6*Stw)J|)>0NTE@qpDAUHZb00O%=c!7?1c0rn*C8kJX*V zrrtz`_E+bjp(Oz9wH6AXi+OaK_=~mTMs7-HYtxjbV4Sk}fVHCl{=92<0;F-!xEpCDNdWH++F@aEsaU^ImWuP%ymVINy+O--jirM2 z2EAy_-Nr!Q8}zERNF=;B==QIrkH4&qe&(jUH|QN5T(c$%;Jrazi;$aNAObh6Lo!%{ z>SKX=x(M~LLfIFiJ|2Qc*bIA^Q++&Dn--%hs*m!v-U7Hjt`jJI5qA-6D+N$}L@4tT zsgFvwguQHv>toLnsgKIGq+cE`keH{A+rXtZtRom=L)}Z>Rszxl8 z`lx1$-p_#Reu(p!%@d(gbjQSeHwE z*ll$Wuqm#OnaiP38>Sq#@dBtm>Z^SOs6I5?ZUI~$4++ra7N;%jAe-X*E7iY6A8)~w z+qUc|11g+2wdh+EPGj}IKx+pMyxGC02j_G z9W=0Q7QlsbP6uz=3I%ZCR9Y1*oWZN4aGKhBpX9E%aQ3f~!f9^n@jC;(aN=yEM8btL z_B-*awQZ{aE}RWIXk#l9z=d=5J0$IBMBp7;?in^tg)>p@SdGH@JpIyYuWTaT&(Gi5w-@`^OnvSt$ z3!qDSf2%U8b^;>-Cfh=C*%aL-8>{XRNCHTq z{sR=h1(;!5DS%G7Qq=^2&~&x@2dtVeT*k8wwz!+DNULT=RdWLrY1Le1n=OD>&4C1} zK;t{xNddHK8r6~wvTCliExX00c-3r}CadOpTiQPic-5@35vFL>{J~ZrfLG1d1n9JF zgRSmu*5Hhstb;V$cmaGqw~c@UUTw7P7C?das@uB8kG8OUHpM^uv>&C9O|}*ScmeMI zV{ieU^CQ-Uny~njEvkSOX+^8Ao%t*rE%$DX(b#H_M84$hJ&? zY!j|)9Jb{O;1#XR7BO|i=6=YgWSeju9JLJ*z$@CwE%37+CgE3G(qq=pSFGc<1tQ@U z>yB>YH(QPXUa?$1Nv|htmLj&nD^|~+kkn&T`cGIcC!&utw(KX&Y0K*=s!}>0w=$~h z>0bKe@sh2uIzvl z%K^&RlLSzKtW#BYqCkF94R)eH%3i^BbGy4DD^h_}P+8!?0AFV1eo+7y$Q~WMYIj6&A6y_0_5=$guor1o0~TxA z^Q$nY0(nC%+=~Kf2Jo7FcQgaNKwh_>5eXN_B{U5dNFBSODmUc{plX)w2X+fxPb zz5-W%fpL1Z|9yLmgKhAu{cR6GgFs(xzCnGcH(W9$`u4EUw< zP6VhN6YU)Za5+xb!C3nO0bGuI4tr;ztM*5vt10%7>d$s{>41wJy zMF4lzS_diiqXM|A$w$4jqKYt_>Grgm+y||2rE`@ti!RXR;^e?yAcP)ttfsnWA&r~> zGwr)yW0gI>hlVtTWRCreNU|VlqgJ44F!o>C4Yjx_KcR9q3u)998uRQuVi=Tg)BCf{ ze#OE%Obz-KL#L!!Vh?+rIc@)cS3Lv|f^Y0C1YG`*QlR=Vte>C3;&OXL-C~Qg)$wDn zxJcbUCKlJ(bLu^7aZ0vWOto9yV89l)XT!(f35b1-0A62R#{ssYt2BGNSk|C>ID6IH zNdqhJvMK>fK ztLwi7ms#@(xKjEmE=ky<8yCA$QB6Mq#cBY1?L7ogTs5@^Ahd?MdP02s!|rJItdFBl zijU{)@dDV#bvnqgrwU*nFX`aCJzoIdPO5TBO#Nw(d7Jy-E6S~PaKWA^fUiMM*1<)4 zh5){uv`q(>>>AE@|p?MH=kMa_MC z!0$+;s<=6nXU`Ep*M7}v&}o=*0$jISTCxV+PV%dz1n73s-}Zh2_;%8%(}>O-1mUJV ztTk)UjoU@4@fm1*2XM>YLI6c4O^pEv-L4j$k?V+M9E;ntA|DOZStwFnggY(@n7D^h zD@zAu9gcTcgYU7H{6jQeaKsDXWUQxya*k919M9o8h;ZZ!;2^BhL3u|^2kwLK6Q9$; zi;hGAeCN5+IqAHDBSQe+d2X(QijI(uY)UFY2bCO61@KkgO*(kVks@IAAR77gAi(TL zI*tmUYuEY8oP*9E07N+|cH%zh%KH=5DJPg3({uP<@n1P|uh{J9(T&^jz2ed5gI8-W zorfJd+psy@-I?<(-ztCNh)_k1_!Ff>>xADC_TIDlp%)N-Qhe1hLjWrdy%2O@1@WlA zaE|1N>&=Rk9wt@cBC^1vYF(5o-c1}``ZDJ%cnBWMf~Jne0yqn*UlP#FaZvzgL4O^* z?QryCQ=A2hbkN)pFMzY)xDHx4QU!2?%3PK{S~~ItaD*BV=!4<>&k@s~`=CG!R3ixt z18C()6hMI(rPf{!&clVv9EdlrNFd&IWDH^h9Ed|#f`O==3p+HQT^%VOFz5LkoEr?p z{#*$}Uq`>8&+2!&DuL+lxG8`Y_goD+@BmyJ2M6OFsR^w3F3u}x*+_6?iiDp|8vPec z5%|y%H-ej5V(3-hOMl@sot_x~$kF3N22an2;4Z|rYveV+7{@XJP5vZs`x;CwLa$>T zJw~wx9Y$8E?s*7*nwpp=OLU6kb9MNMKaA=z8;B!Y00UXS61n4j_ z-LXsnA4WD_4^F@};xww64tFA3o09p+5 z)GpGv4e+I->A2!iJygCM&l;y z9Fcx@xF@p)ACb!5h6WvxwmXIh;3HB)0(3;maHI*~BhqLB^nk+-M}Yu-z+v5Ol)xlJ zXP4vTRPKYmRh$CJZpTfL(Cx`d%9D=>e*v)9u{DL8(nY%kYJNUW3|9c`b99-;fWB4y z6C}Sl5=27ZD&DQm=LhE^@(xTL0YBt8_&IA(PMlH`@4(NC0EZnB(-}~0{H?YSxDRl| z(M~{@hIAqS20-Wws={4d7NFVv-C>x?iafi6?grP8Q+Ls0%{)Ar;P8LJoJLhgHNGdK z%5g-^X27Fbe@{kr-mzJLKB|k3qaxu^-M<$cm9GG%-b5c)9F8xGoo}I30i5pukn4yS zK*Q~+vH(Kk)tv$^iihZ;OYEug^S&A}za`mMMUj z-HngErz0y~$2A`w9dyuo3*bz@u7i%+N&&%4pKtbY#oaDy{P?Go5!Z)%8CwZw7 z0F>nKX>kHL$?KQ!b&Y(A!1UHCZeb0ISXs3i8lh3@NC_W5=`mDuq%-HhXeD8hl6;sJ zFMtEnT?fOpQ~?~AIRq%l6SRB*oa6^e((I@w#A$jy)DpLHSG)?;3WJZ7{iC#yZ4CIN zV`&&PDEmiiO$BiFpCXNBeQQM10)mAkw1&wY1iP}~Hl!yJ)7=X~>YEda4UuT%3 zE!*|%aDAnrNW=Y7%N4-G?W2RantL~E@Nkt5=4nF&a2{sqV7`_nfb+0q8R_FItv~?h zVLcrvt?nM~gY$5>4i;$R1@MZyN(T$I-2!;UJy#|;*OkK270vY`t;Jrp$aCFX2aB~C z0(ixp5H88MRO_;jH8>f~WnqevahbMQ04HN70+fu)wTl8c8K)DVWc*fhWU?tv#yw?y zUA5DQ&PpxpAcN0-3k~@bl2w{PBy%7+ts1_7rb7^q)mrQ!Zo1<%?o&eYz1C4Ahas7& zcD#V@2&~f<2$*n&z&#zLYB>U;gTPY`#&gl@4_b{QZ2YwveEy%NwGc@INIq1n%fUEJ z*ChylpZS_mlE6@ts`waQ~i z>)_5#ZR;`Ch$(?-g=CkOEs`dXtWz8HrhBxl+0QrKt7VIXn^u2OtY&Ikk3ZjZzm_c$ zZn~bDHil;hw5`7tH*EpQK`mP()U>hkRlwA>0XVEJKEX}D#^u8#w<`T`u$E(*Ac zG#aY10JKDaqnhIsYdCQga4{q&wOEk^Ao)&Jt_T|&0ZwU20{kQKKxTTYiatDlM-e-x z#hqaz9I;uIe0JwAP|4BO{J~&(A--R66W43B-6GilNtv7KOeLQ!@K=jF0EJqrfJFRg{z`eG0G0qe)ba(;lCnbeBJe%H zBQ54n?t^Y7rK$M@(g7Z8i2~?m(hhZmKqf$umLY&1XF04wEBm@))2r^4v5GfS6DtQ7 zxh?$X2LG|XEV)|7*(jHL(<>m{*+nFrt4sB!FE|@reZFZqXBUxhQ)3laJqwS@I~)B~ z-1H(OFFL!3gqogJi_kRkFMx_p$2D$BX`QdiMEmf%C_p7=yZ}n;Qn%Eb(LS42@fKby zcBbaB3gvYSB(FF#MM8P~rkVmHku3qLIm54WQ_AZO>D!}`*TK@aI`eN7yGW&PbB5n! z36G}ID>6q8XTAV^jx=ZZt!JCgqNd-#hRc~RfSN9V#O)0Kr?}}is(dwR>UHJ|(3|?4 z;kTb{I-Q!nhfxHa`2whEe@I?+hUXVIeNUA&U^)i_)Nq~@K+`!|jW%E=k^pKtqwlZ= zP3Pxo9YE-Obeys3*l{$%8IVzew1FdNwq5!$vn})PKcIt3%S==@$t#b*pqVjjRpO(^)8hx@)NH zcFe^80N!)PK4lve|Bk9FfYuA3moq7(T=2F&&E{lC209mrgl2Q5T23|=0K_|U1kh}L zn||7^A0>u4*OX)}f6y_T;=UuCFIpc23Y zXM%t>`$DiW{RjdkfKQy81<;;#4z-$q4`8CRP(UdhBxI^H(5(>&X)!l`rbzvjfc~by2Z3xK}XV?qHP3x+&Xd2lJV5&1)0L8DZYUYL?-2hUY zQRP^J;@3}&1JH&8OmlXLU_kMk3&|X3f=DQSOVmEHu?FBv=Vk#EzaP^dx@k3}a#-M8 zT!D?~)xXfWStOi{ZM_)G4j5VFTwJlZX(l9#ots5MO?Rj)G>tqA@QpL65;vv6oK*FE zaO48OQfH?eQ*Qz!kFPhZ+M zIOAR}_K+fz=IkdDj!ct)1o1~_T$SgWZgTb$2{+wCP2WO)Tbyyx#Z6m6@{_ZlNT}&s zs^O~`cUyq1&Kgy@DUG|UTK6h^?gy~VIZ6PHdziWepp6Ci*}3%<)}SCRfn={UTO>5@ z)yh*HHhu)y=ZvbxO=;X2>AkAcxM`U<rDVekaN3zEfIN&z zKUI@FYzT7RnQLbw<#2``2gyZekw~H-c}Mwb!AMttOU_0PZc3{`FV%;@0D#NRWC3*I zG(@Rd2oU9Pt}{(z4LygiIuDA3hX0MK93x@B=1g-IH>C{8a~>24hkY(JC98is(_F<( zX_>y^JSY;jTB$agj)Z5ooJZZ<^gcYJrnjBBBB4Qiqh{5{AgH^1r`y9#X%Sqf_QOW- zbo;I|%FBQk(weVh{wKirJ?A_hgY1gf>Ku|M&Qy_Hgk-H6i>8rj0RK7j1ECkP_?f{7T4-H6 zzUeEjB9U;@MS4?%EBE#1n;Kn3BH^Z0W5uf3m0RcerWRL`NVus&(_lW@TnFoNQ_jbd z4Umt~2%6p1?+pg^Bk^SiNM3b~7fCBfnyXf58rcS*x@)%pihM^ki9mON8m_SVY~$nK zLPGkebOP}JHC-(PeECZV*2!B0MgzR&njwI4ew?zu3GgXEEmyVx%J~%4mB1{37*|v* z_d(aT=Brr*76a6FbrC?t@U7ZUU@gGwuEjb)F>Fwe3H$_5$8}LaE4&z%p=vgi`K;%P zZpeM;dHRN{hDdlmH|R}cUD1u6Z`#0BLnPcZ&`7K{bVWCQzG)*@4Uurub$ZjcT+wem z-?WLVhDf-nr?FUV=8A6eeABmGHAKQqSL;n%xT2dr-?XKxhDf-n_Lf*}<%(|heA75r z4Uuru6?)S)uIRU)Z`#&XLnPeP+C;3jcSSdUzUe!z8Y1DQOZBE5UC}L`Z`#RKLnPeP z*i=%wv#Uq|r}VU@Na=luZx`2@mTZI0RsVpbrz>A1v`k-A$I&$M8o+z5nE!E8TG(%? zGR*)A0D8F+1<;x2Bh>&PD)b&MDZ4TRP`Z`5r$#lyZw5NTyzlbI6}wJ{jlQm?A|cnm zQFofjg!Fg$TNgK_1IYkaQ<3l}hrf-cFQUJAm%mMM)5?$xay1nRHGNUtLet1<0E1l> z+j3Jn8PHVM<`_&3fFZ7q0_bGm4K)iuYX&gXwV)kq(8<6cNJhKTL_#M6Bh_iL@d?03 zt^xscGLVv9zJ-38Hr|!fq1Zzj%mi0~NO&-PTS~|#x^{QurW~?kE#b&qSWj{#bz(pv zTMbFFYk^28Wb0Lx|G|;X08?B!0_aTRXVsd(9)QnWmUr0(o%$b8lmCY){1qU@mC(7^ z!Bdb-bESxc9Q;*n!*<8);N6%7rQJyi#?<%T;i%L5}v{_ttEAq zx-9QK-*lO)u1L7)eKZZO`QN(2dT~>p?LKYba|bxG!nINW%{F!Sohw5md>*qFO@k*m zt6d?z*~ZR;bb@oC4g8?1$ZK6)`Y_P1BCm5Lh=i{q_iPIrbQL+(wOIgPMV{Lh4)%i| zKe$rgXB)Jp4^vN}5js}c+xhq<*d4A${h9N_H`m+2B3<;}=}H#BFTtAI2d_+YY7fKI z;~rPL0jx-6{h`{^UR>GhnkRs706ZW-FTw6}oe{t|?zbkAIo1!a%Kd6Q8 zz{hQB$2+)%lm&joW%+>liw>MJt12CWuC(p|{mbCLx)uy(PGihd+lb>+l^uMWq6)!J zxsrw!+b?ln{nQbsQ|0gDyxf&3gfy$D8y(TJO;zaRn}y4POFO~yW@vWFb#i#I18vnQ z0yGJiUC{{)coNFJ3zxbt!o?Xyv2bw)_6^t(S=zy9_fIKR6)&1yMj}CQ#N54Vik?YKu zVvo+K+Fjw%1vR)UJjw$Pb?+Wq>=Cwi=!Vt!2|x*V*vG|+W&Tz1-F&vtm(=ubL6@p^ zN6)qY#f40F)Oc=3QEI5#6CjsfbaxTJlQgwET>2k0D!L0N6kBem?sbPtot38tTeWr#d16MnlGNUZ0;+T+q-WHV9TBQl4Ui$FYd|Jhv81{h&jbBH&cOr zaJijo-%kwpb1$3wtl=vC#c+Rjt^hXNx_{8{=qfIqt*j;e z)n#QKBBTD+y=E0Faxz^V;-ekk+7Au>*)bGjybF)kxD(cJGg?lHlxLXFUZPB)YBS82 z7xZkKJAU1>c3KV(8rZ^rtO+tDJKY(n+>Ga{vkrE-L)J6kxtf`P)C{O=37C?Gg}7_y z?w7`#rmUqJGeV~1pnHt~o|5$=px9BB`B0u4IPNa^@ma_Ed>C{ri~rOci2=S3`={OG zw{SBW;1IQHB(h_SIyBP9dqC#7M{Rx9%>Ge9Gc`vC|123T-pY^fp1o5$^$CAZ>eVjER=;Qtg;$w{Grf~ML<|pD~ zZBLC~S&@Al_zA+*K<)Vi)BQF)s_)6mX6}!o7ssnj#B_E5c+(U68-vzW=uO{BM9yJt2QF&_|Z+i53ZutbK~FYt$n&{mc__jhoWQ!XB%g zDLD12pf07L_tzie_Jt=quekSERezdsfr8InCnt$~Z&DvCiYjXTal_Hbcgd>WLS?Fc zs`Z(PfNfOUXQHcZ=xVbk^b(A6&hKY11uFraZ}t4UvAoaX@2J<<0W=;Pex zsUZ>`=OMCj15LMk9RC*ExUXu@f{l&kCMZ51cLe zcihwa5nJS4*Om~VmqdQ^tQ5d6lbs+yi^&O3o&bKsw(J}MCq4ehY>MBoZAgGN$2sLm z5Wt&%j3&?&UjOddEFcR{OSDnz2+-yqr#*!NWY@JhnEkHM_`{P~#C_22arkKUm(ZAy zgJ)wr;ZGRwu4~)A#2FB6u6Ev&_LRX5{Ezkm_|tPxB>bv#ow=Bq0cy@%M34sfz>`@r zB6t^;bK=Ha^g*D|6CTEZbHX|gUTuX}k3A;^kXJj^zInmJ$-{Y2q|>t}o*t!GktezO ze8h7<6rXx>1<=M;zJ2|l@-7>Xq54Wg|jKz^X`^vrQj~jep&Af z0X+NZ1ZZI{=Zz}M8eA=Sft15i-kTl4Ko84{-aL_TSeBz{Xn}gXK*I8hH>Lt>@W?wY zgjW=nYTiTvJo4!TXygWOh5#P<9s<>#;76M`q#~Q5k!$J!0UEi<+f)FLJn%ID#l!4P z5y0{2`?YVsRs*K&UVkK;qCM~4fJE~)6$w36*hsZr1RKo(oZb`x^t5toHF*){g7&;~ zd$&fh4Sml$uQyvH{Ges%V%VTe@_C~wb5njav(94Jpgr#bUjNGsp4{L)?_Tvb6$$To zw*^gc0$gE<%x80N(^te)Jz6sdEkPeNpDny80yxc=EySoYQ>$H^_obP;Be%XJAE2^KGi?Qc3gn-kSn=TBj@(AKvlSFtP>*d%F%g zct;7~VBaA?!S3kYDu9FSS_ZHiopFI4}XAM2g-}A2vC|2_lCRJ6vyMz3Z%ISrbc>GJq#$#-H?p-W{QN;{8e>iC2Z6N_{baX<))P8 z^;PI9N%KT+T^|EI%|G_G6A7pJ#8t3CX+F+7PXMR+7P3KUKEa#nXB&E&f8xy)38#6j z?=YWlshQu&d@65d4c6e*{MvWugXVLAH@qeTPIKdGr1?AyV3GHv07~<()vndSG{3)E zoLl1U@fs^~n)}uu3zkE1sW(>urTJ>52+*`H_YSGW8a%Bf*NP9{dea1On%C383U7e` z4)$;Y6zrAWx-o2ugT0Et59oZAcf0@!_EvR{00sLy?`{Dc>`LDQ?1RQ?Z&+m<$Bd$a2?(9`?}Z=Ogv&6l8QXtsK=PQvoD zHzt-fc;xL<;T45tyEjn)k9;Zt8hM5{LjaF_2SC&VjAMs4qyd|vk%vB21*y3FN<-i2 zZ7PI^?pY686p&rs6agHNUh9$P5l?Xq+3Rn_wkXeEhGf6DsYoc#4XWi2uwe)I#hW64 z^4y~){vdgN(7UxU+tBm;us2&Ioaax-2Ict?Z`51dl=HmS2Fdd*ufGWcJH6y!R5Sv8v39K&GV)R;5=WHhCKfi1GwSs*n%}E&r?)`jln!0 zxlx?E<;@Y!dA@cd(qI-8Z+rW-WJSvJ`Kt1dlIM54HwEytPWn-Nxa+O)Ki1%Ar|aOJ zca#8*_ALSw?E>#s0UT}nCV<80{JytH07d&d)s+AR`(JOPR@?^%dlrF>(0JfY7C?EP zuJ&(|Jb&noh+_@T^O~C_&mVi|3E(_m0uWrzpLpA~V+}pe|MSL+g!8=G7KCM|8ofor z@`7*kJI{{%*cNz2VJYV;6u=`d^%DS%Ji-^-fi-yK^$A?XILiBy1klKDs}Tffbndm&BH=UhE(=tiiFbq1$7`DHYx$U>MZG{a=^J>0%0yxb#Zk04Q`ck{H4L!|GzD$vD znpfY3`OHw$w&8l%iD7uE*LSizYtS#b^Q!94(udm@-Gc%DkZwzWCc)$DA%H&}JLP9s zG^qM?1MK5V62L3Ry`5M& z_Q2hKzPJxqgI10MYW}X^lpWaxMT++T-$~&-Wud!KSieFs-q&L=E7HnwQVk_QLHfX# zD}Xcg>~8U4u+Ke&HF%OM=qnRdt8}jeM#vLjaHbDFKQ{iZA3NHpTI%y&vgS52j}LRwgo_m7@tH zU-&XaLMum0W&Q;=+5yb+g^cBR^&9FcnDdL0mZGp908Q(d({mBG_61T z`hCh8JguD%ix1m>>a)uli3sp`yqit=zOPdlmH6$303_F z00n!OZ>sz%BH=W@gQlT3RI4lr%L$)1ff&d=*IRZ5DQ@+gtc;uCS z1$e1M$&lZDg#u{g2GyJZjr_DPb_VysBcDKk;&H~8B!J_w=~v(WP?s8e49A9^uz1tg zWezJ+2J}^Bvx6DXFdO=G6XqY^Md2aW=*_*+1jz7hpW{nbWW(zSP(tVX;stQdTp~cj zz2i$2!1GY$xPZI9d;vTUtqIUP-1EiEY?1Ji(&v;oSiv8)gq!k`qE5+@QpxZChJn7MyyR~x5?)d&|Bgvm zp@#pCNuc+B4gUCLtikX7KK(tI9<@)SOg6$@vp;4zb6N+|)p7zm0j&O&-!h=<)dyAi zGjQ$%fX$yLfIioBUNs?*2VnR6SFi>>RC!m81;Ei_$r&l5*ZhgAnDgrP;EZoM?$<6n ziym92;DJg1(eId(s~uFSKVXsQT!jmp@4WPmm(e4W@egGX>BD^;TJbV)3Y; z=3c<9;cWOY*kAY)TTI>@itQO@UBt!us{lj%QCk_%=Nl-IM*96C;Y2!(rjaiX$N7Xm zK>%&?VNm5SVan_PANdOfxWehz=h#d1Y&VRL@yBjsOCR`=Wa$zMy zKK4g%=LYmNRAtrvGUl|h8hsgWpIN{s_~&IXpK}?*LSK{osUlep$pCffGEBXSrjz|K zJGd!%7o%EVf!iNLBiWxQV9Hhc$lBy9(5MfM&-`n4vIf0N+DzRhjdlQ2{Wk?r3UpIi zF1+fmTIM3DD0i0mPwr(!e$D?Zcn~c2NAF|s0v>|9t14U-@U6dx0DkYinGRO?mkF3W ziZsUQV5L7-fc#9+!79Hyll$Pc>?{Ool&CB=kV$R5kcIx+Ac|@6Y0<^g!lRwfuT;E>82G z@_$RS-Tp#pMh|07RZVoT#~=GE>(j%SQ`OkNk!1z&VV^(s7=uwp`fSKmXlP|il?=)B zFUV%F_J4Sv1U?+{r-@_}BzINd270AH9QGFo=zW~to9|1&3mZrLb&s=+eMb6R%R&Nm z0FL^{3;6J92woRIb_4Fvd)vSIbADqDeu%UFO}G;Wjbr}UlMK>MgoF%-1y*kb?%L^5KUI;J&}N0CKRV$|4X8@UMTR0CMncRq_r%dw>W2 zJOSijcUA8WdL01p&>wT5*ukNYJo3khgd7~8(y8f4fFl2li^UGkg(M`fQY7Ty5>@*y zx+4%8$P+*gE>VMZP$J;J#5TymC2F}2N(K@Hkb_Iq>AT44H852wuCr3kzWDB!D3>Pe6-#6yIY7!6l^Beei$4O##C-R-_*)g{uC2-{asn zA?$&KJO=zth?f6CBce>n5JzCM06N&ctS0{J>srSO;0z?*U=13tFDRM8l92dDh&FB+ zy8}Uo{Xgg`oVa;K#~BOj1SbQ2bg!7 zi~51^+pNKJ(YO#AG#9afH~~BtV+w7BHZ>n62glVDH-WM{>086)1eboR8McA48Fr+uniL zLI!-ao}hz1fg}NZwBDqH_XC*%_-K7y2YmzK57`tSt<6Q!N54Rv06toG(n0^gYyo_< zp00xdfs+FGXuU@V0|U{IxDP&BKPU=LY2XREqJzYsz%t<+*1kIUAdoA7kJbyH$kBRe zAnh?*f&d+@hX?8wu?8QlR}&~1j;m9F@dD^*U0$944`GW2 z_%P5Yq8B^6=MoPafh9LkApB}R1?^BtKW-i( zHcJB;5p0oaZJnwe292KpmIXq}GoYaDR)YaTkEmH;em*na7Ral}oafqHO6K9`fWHz0 z9&RTcY!4&|;2=!bK}KM+0Isz?I@l2?6u`CiKnFVmu`h8STx)^S()q4Hk^qipUmffY zWD4L~Td0FQf$&H+#kF>mW05Qh;2)E92)g;{$_*aoW30HGhMab^AT;BX+%$cn*QQ)6C$A}x{E1AY?&-Ya*#4*m`# z2;geFqJtZO%>pwokBBb*>fj9x2em!+?H!xcOSKC}2+zXr(z}0pr2oRQnK(v+n;A(qHfU50& zpoajiw%X-`IWxFCI91z&K(27Ew&mp!w&RG-!$7LW7AZRCRQVU7@fX0OK)wKarZZnP z0ni=;JPw4rSc9JF)Ly{3)T;LYz*7``udu=m=MCp zgj{DbnM?>FlgVU4PqISDgb*4blL;YYLMFq6kP#u1-{ZW`dHwYLYqve`uXE1x;+*I6 zd7iJ=>;2NJ*`$L;u!3%g06yo~Lx7IJ!gP58_z3Ji0rKr|-3JE zD{jtK>C;5?o5EFeccp|sC9$?9bP%YjbF|<~H^<=^O|fO3kr)OG@s0cz@E5?F#V1pG8GfsX)c>4pfP{>)Wzwc+in zRfpOM{7hW~-FO`f27@<$MeT$dp_mspJ%@%CK|!o8&%_sKAHry^E07ZTQcMJFQTMjc zg`4?O`BDr4>VcNJWC8po$0eFXf-YMCf64JUfqSr;s5>U08;-J`s7jHjPSt8*A$r{b zE8EZxL@l}!Dd7Xr8IjNtKMpT1>tbzu>6{nnr_Oc|h=vZEE>!@1Yo)QeO`th|UAImE zeNsiQn$-d53{?(YnSl5rI;87Y2P0*Jgi9B2unju138;gR2<@1Evra0`jvo=spaRQA`U2%y?+QhNw&0~nyo6+pH7PTeO!PC8Im zq5&IuMPihILAqE!+u#%G!35}pday240H07VCa@1ShUnG_pcCq&>L>v^p&qI$6Tm0b z73%>|=)A781lR^2sJrVW(EBK>iPKjThwDOGG3T$sozn#0(6tdjzmCvfMZ5qBYR(8< zmH=K)I%ptGcUSx~l^CYcr!>OrVdr9()m#2DN;y zu16O(#UGe!(lCL)%=nS6Yc~ek*JzY3RZ4g@J=IW*FVd|Oz+a=O5hGx+u1o-bjV37u zquc~T^QrE1cUDeQS)!`n2oer}&vel}7*ML#T6H7P8DObyfB@RM^-?nl3<6lDTPdJw zB7GTc7XV%!y3j~w#cy?eQ&=PaXgfaMM~C+38cQ9&)1~!h&OQ;*1b%f8iVJji1<)by zQ8lFrBz^(dqjS8<5})8`uUKtug1yisfI?k(9|n|8UQ@kdAyEdfPnRr!?l}Cd<`AHd zBmSVv7C^fvgW4Ml<92`py2!q)YVls$3+dw^(FWk4E=2%+2<{~{6d>|3Z2YLp6+m-M zSPhjMm(Vz(Y7HEw=}LsqWK&BWCtY;`4(nq3u@O34Z=fnQh4ol~pLF2^8LVqY_p-+{ zMV~sAYKrY}TksRQoI%WK_`0ZO&7kpBfFfOy02;m_svm(-04H@(gIR)xZ-SanAQRvh zU0(q-d>^WV0HKT3&1N!uw{@0bEXc#xK0Y{n*Ww{h{(Dc?CY8DD%$uVPH=y{w?yvwF zzB_7mb4WY{c%Z8_oF!=Zo~S*|F?`QFi`|E=SO5)Qbv3vJBq9LHbun+S1Pxz3wU|H* zz+>GI0W^F~)zKC(o(S+ncS8UTpINzELV|`bL~j_us(AQD6L3KyRG%S$hA*I26KD@m zLBCA^jb3MUjzAB9FnzfI8ogIlL;~6|5a1bon{>88qc=irO+c5vt9cDOs3^YogJ(e%irq6o%l~TfeT}dyO*4Hn1n=jQS!)X0F zDdEX*1}=?Q4dXBBCynDv$q_cG+j=x-CqP4efdH!252~2~wK}dk8YBgC=<_DBAR9jm z9`pdG{)PbF1J^bRaOn+`Sb}%v?KR-mX9(aFY_bMC`fUO@1>39vufALWr(oAK;L`^t zvkl(lH#CWHzdlm{r(iub5YQhGz$w^lQ*b-Ihd3>nt@T~sWsSUK-q%2qet`g9G84@h zZ)Z&$6zK;{VF~g=zdCA$s&)YF^(zHX3f4(gv;a^FmaM-jfKxCxf$os#pih{}swf5P zr$$>aY^eYp^<~o;(CFY7ZXtn}e?qMoomt>r^^;~Wrxb0znrDT^&j7mV3j~m0p4tx( zx>;SfN{W`Iw|u~Yyr^8UL68D_q<*{rPSG0J1-z->DS%V7?iv`S51GxX*h6M%AYI=^ z06W5N4UE=j3E&%pA7CDVmeObG5=k#_NX&pcE}ijUvzxV1hnR0HtVgYLzqSQ)h`& ziZ)Si_>eVnidNf|(7Qs|X_e+mm=xUk&CsXJ=L`5FE00{ko!>Aw6wt0eOCP&{In{NR z`qYhGL|t{?jp3)A<45`s^DLM1-SPT>)ZsgQnE-yO zn+P!74O;WwSolg*$edJ1@NA|3xVx0zDK`P0PWfLsu=`m&;GqWeM*2@{;NJy0Jr=E0UD39`U3)ZJgT%!*cVq9s?O`v*0U;l)};|j zF6c9*gyy?u>aVuYp#!+6KOlgfb+M@C?a&wWtV^l>!B?z9d)DQ5eXR{#!b`yFcF;kd zbVc7o052NnNCz#T*Ys%{Swef(1IecIzvH|lXipS_7M{qqJEd6fLAUnwQ! zDCwonw1>Gt0Jrp41yEbkRLx|J$v`zc8DsMO1f1jOQ#Z3J+AtkZd%+{dLGW*V-z^Mu z&(oW<`VI)SY}LJk2tLyH*!o|=^&JvUMJ$0}h#@VX0VT$(lzIt*8}oO(M2Ruwzi|f7 zF1~=>q)8{#HR?Is&M{0CK%1HuRc``u0L=`A0%%jyQq3hmjuUUF{2i-ekJ_h!=7vrJ z*rOg1AdhNc$PvIEW$X-Kf{m7jA_3%49yN>rc~pWSYB$?pkNT7Vc~qjIuK@O_6P<&z zp#NoX%6|=p_yQK>{C6w?5;Pjp1aSVlmH;)!WY{Qx=dBAGFdOa);CZWV7i325QER&) z{Cl=R`EO@+s|!^10B{(R1yKHrhc~(cP&_*g*#bD8`w*Z{vbzk&1n@1Vc?2lya2q1` zvJL(u`~I$Qk%6$`H5BX@9#h)y=R#0H@Mk4ZLDFEr3($F&gM@h(5wLIF(-0J(x;|^*{j8 zM9|xib(A@$(*1f!D&5zRd7OckN)I&TN(t|JYWI{{4KkDn;8eQ31_m2qe`Xz=N>A>I z*^XwJVTObv2HMc18rnz+56!Uu$%OQV!E%x>)jE2Fp_7zwM_JFw`y%K*{07lB>&2SY}}n9Ez2@w3*ddwXbsFV923C1 zv(*~-zz}(sRq;0coCanaQUvgf8_`>AWE*k?@EqMi19J=|0(hf0MFSriVvE@ZZ_~GG zV6Gum0B_T;_YUqK8odfr6xs6(Wx_eKduiY!gXJ7+%!8bW?!K-=_q zrSAh(dVr4&Z3NIZ-KvHXpl!M`WC`GH`Vs;jNGviO7C_tdcItQ^3|lvVPYgL1*#?bH zALZ?f(Rp1B?2FNP3w)^|x|BI>(JAi;U6Sw9Hos*e3+o4&(Pbd?3! zVcWk3L2~+?hNx={c$+?11G@};1@Ja~vj)C1EEB*Ua!muf4W$Cu5gPUv8wG~=KiCG3 zUQZ3|F{BCLZTf5td~et&fVb&;G_cojR{(F*?`xpY;JD5<*gX>mi1B@fNdkDAK3D@k z7zzaNHhpmrVA%E>!f&uDzLRp40NqJBU`Q6gcTy@24EmINAUJK)e>5Bu&fE0S0~2~j zKEmi6HY_S*jWjwHBh_yM6B^@(20{lVOpc3=3=27K=zE7Rp#6gmB_|9SQbPL&hgvZR zMv?%E4BG^dQ*~Bn1_k#I=E1TJIAd_!WmUX?m@^o@l>$K|-1ivJ{$Y@MI2bN6QZ*PN zf+dF7zyB*ZZU_V?LGYr%bDsg#{(W_62&ys<;F4jg0NPkAQT2vmx%mR1)R6O#CFtQz zTC(mK@}z_h$_5UFa(aUHuEFpRU&>F=9)XUCU!mikAwvL-LWv4{9pDPU--c}hXcTTL z=j&K{DWv}~9C*a4IHYS2g9L#`hU(=EIHcPXxC>R~hOQc@OTTtFd022jHxI*v8(Ig) zK!%JbEVvH2#Iq==V9b^h$}S?6F%_!n1B4lm383mWQo{(u1B4qRL!J#jXs{Q*!m3lB zrUqA?`>C?(R5ccdGUp|++iK*QW`L;N_-0~2mridED}It|B@OE5ZY7Cd`lMm z5yqV_upk?+I|hQ}RB6VL`V4qR?W}>3#x??Yo}aFPH;q{Wc){PUfl;KL7(NyYK0P!%!I<$POOSsxRMp;w1U(w@j&Yj+el(&L0b1}U8p{Rnf$Ee_56@xjpSJpr0&z*iWzHD}JA zFn0ocYe?O&kX6P&3kGx)|Au-*5~BgWFlGv%qxf;k_zt@6U4S*lt}R)Df;m&2cn1=* z0lqXY5J15^PgR)+un1tS@w5Qy?9Y^cB8;yBSZ^GVz^W)_*Q&K7K{5N4aisu`*$V`| zhQtQrRRI*U+f?020J{M;8WR#(6~*j6)tSIyfKA490W@L!tfo&wJI(-XF>W)m1jX_t z6*n2d^QY=CIbm|-Kj7PqZOqJR_`;*quanW|HPz$E!L#^>?@A#5U<|SIbz02tH%3Vb zclNj`a_K>1Wd~oX#r%)P7%AbHzlTdB8b)DTVJs6suFzZ!oQn2X0FD?f&ZpJ#DFqPP zLG73-G5@Hi1aQpn)4-obkDqOD%s+ZB81u&IFhwz6W-JuW zF+WTLw~dtpEXXnc>2wVECiL80W03%I!+hn>gsSfV?ir(6u>{3@p&CnoV*YPqUjZER zYY7~J#C_v30TlBm)rCw9TM58J9m0qh9+EV0qhR4#x=Z>R=hOo7g9gE#q0G|anz{<$P5u}S#F-Wd;7$G-0w16+o0?7wp#55oI!{0W zG&4naVH>o){8ZKXAm~#aKLDpqesj}G;k?P8_5q*87k?mU@n+NE9;|@R;z!I5o~Rcc>?(Sa25eNKYY`4Lja#2?j~S_@lhtjV75W$hi-L` z0G%JEn=%CO`C-eC0NO!fv}v0FI*ae527ZL<(pmf%Q(y?I;C{}P znqw+?lL4K@FGk5+(*r4?`EIEi{4sQV0gz+zjN(h_EPkC@{4x515}A)oY3U5Kv-kz3 zOex_dpss=r@}z~P0|I!_=&WQ_RHl;AtV27CUu1e9C43fth%ViXdVFFE8N-)SF1-&W zxuz&7paYmreg*i{)K>ttrBqE>gfSVY&Md;1&{_QFrs51%#ksV3F~o&n{|cxGb>f;2wA z@YTl29xNZ?a|lP1R$mY{9T3iX5ldCo7UNg4<~ zjAs2*z$sIK0CuSn1cJABOyN^m6}!}O0$;+$8B?+Va;Yuq6oKIF9aFXdcBvYl0gy|b zH60VcE|v6Ia2nh|oDSoEGv!WWQ+ybISra^ODiOek@%5KNf|^reihYkIc;f1&feWTo z0X%WdT#6Hc-Kh0t)A;EuL5K1CRR3jAbr|4x(@p_&82__cNPq(RiYX+MB{-lD5un5P ztEM&r_%J?nIRIs$*GyRg_%PnS96oXeHm;j2v&1;2<4bAG&8a{+fuD+TbWL9fr@{d5?A*Hn_t%C+s|Bhv#Z;qBu|O-H%O zGlwr_9o1GqIUUA7Hcb`4hw-flP<8$_6$;?P_;DI|VygThtK!4>^%@8Cx;cd^fRZ`tr z<{kq0Fg{-cwatqJ@L~MTRSEklRE}0#zQ7v(LUdS2eeml)?xz-|R1GDN2+-MV zSk9_wdNZpf1Y7_wn==GZ))r95*P$Kl0lJyDtYQhu+PbMR>(MiPm0FJ-Rx0@a%z@R+ zX{_E-&AtMktU7)bOxoISz(h4nZQg)w(=cV+i0+&Nq2cD@bu2`~rPPLvsK)02ZB!<-|4_t+J`7K!)GMFKe4 za%*6wIqGY+!RzK|4P=@73gDG?wFYLHmkHqQ`Z*1JU@jHF$yUT>F+STIznN`tvejX8 za2Gg*I8D!U%o~OC^t@FAADZt9;OY7LW{gwA7sEp4nG3eCM)ICGHD?P{B>;S64&Tav zk}Z?kOMsHC`Q~H+oNPTL;Dp2ibG86Vwvv>7D;)7lC$QD@JFq+PxK{ zGYWi(x%gY=lx$5^YhZ_Yr2uw>$r{*czAAu6Z?gt=nG^P~4NkVM zY2Z6^x&ThL8g3WkyUkk!aI)1?0|n*>0@yugYhaJr^F7<(WNVKGzBf-5z{%Eq0uRua zd(DLcDB1c~C4LJ~u_2zgHCNutswmm2rUrk@DGhN-wtg_@2CLCMx^)vO?BxL*MT$-TlY<-$4HnqPn#eFVX0ESV=+kdm!M z>InhbiB+~#|AhhX#769qI#jWA6~HOSat&0qED*r^!&3xke^||OS^)14YkUu|6vnGt zqEE36+8?e_Nd#zrSi>?v0Phbc5ZD5VXDurQP_p%{+VDN9OUYI(OTuYZ#mQFvy#TZ~ zd(N^&0PoFa0tAz-NK1M#OK8bf9ZQy!@Fu!qA%=aA>R%|s(#TTu8%uD@w-=&TG%SrR zQRf+O%Wn~&mN&8V6~HZz+XrwJ?TEE36F@D$qxuk_md9C21#rvf5uovCYKbpl8$2HS z_aWJO3{@>Ghc7aqWUEq4SV)4UR7z;RtD!di03DG4iI(_Fd?_VcFQ_X&pf4!d(pyqW z8EDCt(ULADyaWv04;|!5Cd(E9yl5=h4;^%e!eTjmnRRH%meo=!C7f*4JAg|Yp&oY2 zjoaazK!a0w+_UZoDeTrz;mk}QDQ@`^eF9Z0sC9mJSWvgNlNxXOZ@Y)w0e zaqkDgR+gRD7*Mh`Ox-+)P6F+q@s@CVf<>1@ZPW`_AeHp-AHZK`3Rav zo-@Xhs)1m#HC+Q4mURNyrM43wml|s+6TmKYi$D}?ylt`EWgFyDjaA%F0OV5REaL^R zOZ6c@E;Zh=Qvkcvyq|*8;A7&HY)!Oe-D8cMY?+UW;3Ugo0i0|NCqT`aY^n7(OYp?C zR0Ho?dI;c&>*P@+TZyRkdzK;hS%Q)+vs!-)s$2lmEqMYc*$Svj1Sp_0EjI*kK-W7C zK*`n&i{SyQ;$*7}0ZO*sw`2(5WNXH8_(*%$$g;#d7UP(XyQ$ldi0cb5%TgvlOSa}% zD*wxu@@nh+8OkXhKD2Zaz{%Dq4a~LV2;f9%)z9#LO19=%4u{kX-rLoZtwoknDdA+R z$q7-u*b*Pgm$HuD1Sr}1#F8d}ldZX$#1hL!0i0~@(?G7}t^iK99%rvbCoO5kxItX}KECf}CvCKPk!9YD?)e476lxouyn#c-wRIq}W(* z2~^@sIoYcCi-4~znF2W3a{q$q?rjXs*Oow4mZ*=PXPS$W?UocNp&x8osNzmRM=rp( zmRteLFVYX%_8~yO{j|eUB7jnsXf=-j{aVycOKde(PJ7E?YCnNju%*~#Nfkh8QHpwe zDi|umPh(6s!PFkhvKlNn48Ksb6D8kUwn+*7X3Zvb1(!zr08nVje3mbzJ-{*5{S4-p zvufNKbn8vin-Vb|);`o?{92IOkb3q*7xX3t0k@3}`i>J^Qbg6e*z@_&1e* z7JYIJ;H)KAz`JwkS95O?XbK(0mJ$Kfy$PyGF+kW`_)%F)Y#mX4iC)p~O&|*3H%qF3 z0~o2sYHl$)%M4W|mTk|o1m#a&^@t>r0WMg|1yC=(qKxOzi~Us3bCN&(V<~-s1vy?X zg9p9#ktM!91Kyz4|4l%-B~1Wto4aY?v1OwG&Yxy#;9tvK0lXCM(!djoBbsgS;`x^b zLadVn@D9BBc`+VpEfB!@Q-2Lqu!c8aRh&O9JRjWH9U@LMZn!mDIM2ADB?2m1j|t!z z*It6HBHf^_Y|VXvQ2tca8rzU1IDcwOU>^pdnl)7b zX?@1Zj*0T3XWtaDuc(0}0lR0@wx4Yar2jR{)Q6ol>!(vpSly4IZA3 z8qixO3E%{2ng$Hk0s)*LFfLYWWJ|U|2~wHbM}QtVvsqIF@FQoBE(e{)_&YcyNDga>a88hh{f^mTu-fxG zf`_KTR@PzzE9Pmi+Z71X#M#;!V`RV+=gccX#k;Ox+|!%jW|DP_i8&4LJF59r2+ja# zXMG@m&a>vK{scY&Xm9nHS%Lz5rCLZ}13S22T;;}5h(*;$a! zvpQT0o@ZUZ26^(Aq1Jc@a~}Ohf8dd!+Oar!u}*R_pf=Q1`sb&#ibFi!|D|40|7K%>FUv+ zsOLn0sa8)C>!6{Zp^UdsogCHkmQ2Wtt+DNy%Y+Ob9H>vMsRCp|E)%fCx=w&h$QsDC zmI;svSp%P1Ey-*{CS(nKW*sj;CS(mPweA!k6Y^~_zRViZfmO+btbyg$HUeZqzReRd zaq`O**2BVOLcSwlrM1>etWhT9J2D}!wiXMJ37I5lLe8_sbYuyckpBXp33-imhya<8 z3D6TmUt047@DoE5{|W~7$-gA9H(Qr=WsMxzL+?V60(*95NHXo)0!rLY#7y!d+;d- zz<1V3Jy?Q#sLvQq%qxpE_;LOJPBA==%_);6G!%A%K0V zy#{`@8hW#YoQ-MVtTjUb`_yI)6kE3mV4u3CfpgY!0qj!^ABgeatbteA2K!V`4V<@T z3Sgg_t$`Bj0Rik&dmaRP|2}c@sf*UGeOM#=RN_Mcm#hl}uulzsC_eSObwFR1V4te^ z40q~qHSpZFTuc~T~0jLKe zY}pzJ=E8=NPvCom8;p0}k4pgehmxv)8Vvr62Lm@hCw+c$u3)t08WxS6QJt2ZAAh&NuI6&k1gtLw!umAb`5xKeFbom zd`km9+cE*1B*%p((jCbu;fb6ix3N{9z#2J8J`B7l?Ry&8DgmM4IdzC#1rt>Y%$YV6@`BlHL5af zL^i|k-`ENT)bEY=E>SYbRxBlElq9NrTpApR!M2$9SO+`I&B|~(3nYfx9Mc)l%R&x^Zs^MVTh$Zs&Lnx{JllW|S!M1N{M^3k^(-U_d}LcG;1K4wlWGou0#stY z?W%yqG4ulod!G$9>*2Gg>+JmQH4|rtMjXL)D{MO#ux9G8Q|fjtbl62zr#2e%CwQJM z`D5lZS`XB!+At6nkB4q;*#bzgiaJ{x25PC=&q0u4CEr%Ghy^Xdlj`NqL6E>UThw9( zKjOQ1cho5YerVio>nngh0o+#AhzM3WDFVFVW}Lp*N`()@`x9|$0s)#8ciQ4VVU0X1 zZqUFkTbcl#6)#7?O*+BUZrie4mY~Z2Pj!ogs(}Cnwo(C%delH2!2;rUBIYb9D|NZVkXOTjp|>c&8A*0F9F4wp=NB zA0=y4pXYJu=&x~K$+qruzEqpkPTC5kgeSE#&!ZmXO261Dui#6^_n{wGs#!M}eZ%V} zZVvrMHHgCWvKOW<*bHAtby2H>YFrfL=@+0c+A;+2_Y>Afp$^9&QEFSZ`e}7fq2#h{ zo0L#>kExdRq`FsZ2lD=Jb+6esXS#!CD`ZGiOum- zF1G0PEJ2QCR;K{sTmX-4AsZOb5Vb~{rllNY`SQwka*?US~!1U30n71|K(SPAgFeZV&isL5+lQrA9SN~p;z z)fBpvyt1A>E1xgbnq1$$OiH-Pj~hypqwS>vxXI=ic;zNFCk72z2UW55yW3e6O_}i1 zMi8XQBF^skmH|(h-5bI9Uev0YJ!=Pp6g1#Rl*HSYNeMM+uR2bb9s_7$&)UhCQj<=h zq@{hCl(6S^X)H}jv~S$SmugMY+Yd+yH|a=YX_CQS{X4#tn-tcBJQvDM_VC>d*mFlU zfy5mEvprb=d+sWL3YA)@ADf8h`s|K9EXl*zI~J1Uxqka30X&RzW65({;AWLQ{Ck#Q z&wT_C=K@HwU){?f=(#9qV-G3h6878)anj~?_FDTGXl+im$4d#f`F@?s0xK|D*~J~X~(&lNzu z@>tbQ40dPxL~vRVGwrb_StE^poSIC4{AGqcRRBBEW(~Y=U#Cep=vky|iNQ7|=@K_r z2ydw#=-`RZx5VzjKK@tMOz{|_X6mJ`3+y`ua6InPLqSVb*MLs+Krq){TKu$1t<`8l zu*$0qBLA5^?c9Gm;T(Yu5L{~CD1h49MMW5cH5+N9jT`tE_R}RSNFFd4C2QVHIcw%fVKAV0>}fVt4$`@xTva`#RE3lV=l2Ed%#e0unxP; zK@S*Xfd_m5H9PH*SNJmWfCb8Fh5n@gyX+|f$OBfXQC2j5omyoT4>)9Bc8vwu1FSX( zk_Q~NmkMAH7(w7HG#;_X|G^T}D;LyqTd+G%5ho8gYTqcFJ)njifIQ%s{jLD^fFunZ zw>z%0MxIJ0*n@36VMjk-g~ikMz%Ay~&-YMr)}A6I)X$I9T1R4&$O;L#U1QG`K;2n6 zL0xntHjbzXa?V~Nghrr_s_Vpj6%BCSURK81sq31m=}s(UMzz{0BT#BDyUm9P z>bc)4g#2#r^cMqqJ(V7rxoRIGCH&K(Q(V%S*X(%$`1RDS(18H1>BjK2MjguRF@Ha; zLnn38jXLyF58bE(?STHad+sxD{ycpHqq`^A=d(O$!*Iwyv~PLvRDO)Q=YipO0sgT+ z5J1D9rCNHSc)sf5l~p>-vGN}ljaSE zpHx0T=oxj^CyHx1QvUs~;t~F!;^lrQz6bdTM|4Q7;EiMI^(U%E0E(+7Vi({TAmB#V z3V3-m2>>sT4hv9MppRd0WQDSz@m2aEr#%5^bV4xNaiGFejY%r86*RsK&;UQn$bhPv zq6P!t4#CV;=zQ9qS{NTRhPr7COWv98uuR3$lb1#tYeY72=U&;e~7 z)t_Yv8l+=tecME9+*yEjj*yxRwC9aFIijS5&&MjYgYp%452UlBuK+q9Tcf-L(gxx| zV8=26bUrp(jUjLs%DXs91<*0jKWYtu_aM>L5nqd~&h*izXwSDpB+?^4uQ*C;GtkZ- zdN|6ZgwG%PwTBLx)_OVu&+(;v{xH8i+8V0E5rM-I!GOG^ntB3>(C1Z?rw(a|ZIId^$zC!Cm!*?{cY z5z>%>w!xX{ZC;B4(AHGbdGR{+mH*E^xc)RZhosQ^Ct>D5^zW;xc`(3n-xarRI(^kvvc2l&vjQUG<=J8B6)=nS>{ zjv-@dawWF&5 zK7*dGfjq|o0esGVPy=fmrv>og^b-wy>4=VJ8+-t6?FQqA(9X4v0Rrg6_@o-qjpwm$ z=%5ntuN*loS&;hS4^`t82;KwO;3yJ6w~e2uB!JMWYS=5%L4}SkhdBirE7 zS*?LXjuZhrI_ETS*pVxMZ}mp>6yrx6B?9VvuA;1ks znwLS+DgL(9pN>o^>4=hm)q>?ATnOh@&d8wJqvbwWkF z24IG&Xy;u4bVt{zI=q%hzmmQ6HJrFMMI9PDvpcXUx_O+S=JdyOX9kFKhIeK_w`uX4 zz5~$QWYv8D7X2RJEu1+oGpAs9O$}d7!7RyZ>lN_e@7Yapwh_Rqaf9Ii)rM9Gnd;0E zK#Oi|)qOaImUb@Fojr!ID&7R$8;-uBM-*o|hYV%F`;a4VKov=3Ir9YY&Lxa)<4`Bg za^4WYz3bG#2TsH5tcrVg6oD~l=WJ(&09x@Us8yOowsV^R-sGIsz#M0}0N&)(P797l z`!wtbhFrw!%+7=nY)ab^%y+ht5}t4OrNKBYqYIo_0(eL8NCOLz$U-d>QxCAq{-x z94~Bo?F;yn}LPNFSbXmJ8q%d{jna@5sMV zJe=KUN62;mi;a)r?L$KGh^{I=2bzJ$P74cvAf5HRIDfwdaApcBF1Da(DRp;^Woug{>c#JKDa}`(g2h2G`37vq-5vb}KAb@iky9TPcRtgxO z5rUj%BmwHn>aME-T40j8qgD{0nW2U&VK&>~a6Y4fXI<$6IGk&~0|~nGUDLHi0N?p; zOCZvWPl>o52%tOPFRF+4o1i++yK?3*e-qDo#H-x| znnPn5_Y#L^Q=PWn{c4Y}6mC-8hJ*aG^I=m+;ySQ?f{#Rwq>8K02 zQ&(4s0G_VePDd+Wg2q=|S<6|1H1<%NNTNSLch_M7^xdA}>Iy(y20#y2@#ic--|Z?n(*Gb$=**CUlT@_i;H^@TEN04JAN<($_Uf0N*iPl8HN}i&V=Q!Og+#86uzV zippboetoIg`yxNu)mH#7sQm~~JKu6G6To3JUjt)Yr2;r?4iccS$#BK5VH+GaPYCQs zJIA`x1W?!+FY__Xl6JJK&*iJ3{0E)W-WV^z@ek$Kb9Rdh_UETUXTt~U0wlHUJ+&UYA)TN7D zeFd=VT%U~^&4R{HT;boa1by~&zUq~o*u?%Bz!F!o0P2UlU`byt`Trkw%yngON$|st zo7JXl99ogNRj#u9|I{PD+MGmVXvA?SS?enN_Gt^wsxBX*hQ9->b5-8KfIl%c10e1Z zz1YZy_Oc=}uRSlx#pre|3{|kn&xwAp#0q^x9XG98vzAD^I|ht#sDan*c3yyInT~ zbjDZhW~#Y4*gb!qe=R3C>m0`if?er*+4{C7bi1PdN22m4*A@Xsj*!Z3A7QvUp}xml zo%XQ=t!n>MyGUXnz;RcOfbM#_d-E3nZkpGf50h=x==s6z;_CUh`U_lr!IgY~)zBxE z)~Ry@HUnIAWecFsXl_>#3t*T=wA2-OkR{l&rYwL2fy=HG0qj{@2~dCi?#dM~H@GTZ zUw}R@fQ@Ue?8B_;QgKK~Rp_|kS}7%ED2Y%@7eWVto35(@RtLdJ0yIj0x)P4Cj;%eZ zgQ|UudY**xGFRXy26Th(yc+j0RR`d?z&Pd=?mC$)SrEcR0S7DMA; z@MqoCPd()$RnJeLaXdgxcUJ*a)%VnFfY3Q=!zWVJdT!5||5kPE5;T4d1nawZ{>p#^ zH>(Rvpz%9^Xm`k21{7QeRNY(z*9m|I?!y8oxXMt{$XzNW)Xs;hKQ0Z9XJdDKG3(%V zF3b&f(5+nQpcd|_zcJ?yn)0a#wsaQ?V8N}QqPk%Yywd1?aGoW|nQN#CA1D2 zM0ctH>Y*fc z<_qbe$?h@%+(T_wLxOtfUAN^PtKuG-NPv21ihH~O?x9VqrH9^gr#@f_t%qi~r%DO; z(9k^SpdNbPT_}KiXbA!8p_%T=4_OEI(D6KM-Ct5`)*zz#q8%T(E#=H9qFz_dFQr!V z-QxvtM2-3q4IB-Lh3<8aS%SKDqB=_w?*n}7E)zgqo1<#4h3_p<*0n+3o4YpHv-?mO z@eQtC?tbuu)lkpwRF4Sk1^C?U38@{ti$y(qP#M=rM6GmNDlpKxW3{`JlyG-!SO*={ z9eM5?0o)yz2~c;eaTf{T?x?>W4s#4vzj9v?I*sASc1zUBCu5RJN1845iN_;i7%An#l0N4Qv-0_teP^-ME&j#_A@7)^(u)pjl z3G$b{?z;lmUmg=6e<^f3s<0~d7xPB(m;LVe>I}3F`q3Sb67HZY8=-?b=#V>80C!M> zO#swEhusGRa0hkYgbr$h1{`-6Kg-JLSoUS*{TdRz0e*JJ)MP*l!eBK9AoNY8zQ#Un zF8DcjNiF7d(7RCG{yNxY%{D`xoj}qTrLDl-KmibUPNEgR~oOl zr%DO+Zg(|#3v}e+(yQ)50duem`bupkK%a=b=B`|ab?_%5uWiAwHBd=gvCM6SV3~VS zUFOuP-Kxqr5d0C~w!2sWwW>(@0YcBK!QUjdj|_3+N1ole^;nQv^^9A6_f4V&6Ubkr zfSUEMJN5;>fSc7kAI+)($uQ52Xa>_z*GQCvd%_!V3Dv%a>aY#I@dCgzo?`+I)5BA0 z>o!zEug+{soE+x{ujVntupqtb+5;ued6K1s-gSLdP27&^3z6NjN$%$i5hq2pK zvz@5JZh%-%kpMcm->3TRltY20p7>@gp}p$b%oC6je%19XF2&Oz)?Khc;gsOXi)RVG zNjP^GnsZn^B2E$E@KkQey#7D5S?~EB>TnNraC$lkpe}u)W)q;dRb8GO0sOY=9s=}! ztJ_l~AUXJc>wN-MJ=iRGq7v8!4MHuIxEmcreeLrs6Tp4FcsC^8!La!~r2=MLrelhu zBvBWtT6uQrSQUA6BjqlDL;^r-Pl%oY^|ein2Ea#^78YP7pnmA%xoTq0w@>2sK#)LR zPlA~Nzbw;71N}Vd0{F((JPo|&*&=}NF7DSrf6oH}d=v4p1_pRM7Pi6n3eDe(@qwPH z0{9-;a19Ld6bj%Ql}j}+*i+fcs`!57$?t>nO|`wyNb~AYPmXY&a9e5Mbx)B1o^Z$Q z#W_B`5j)(o%*Gn|Wtn<~P(?4xyx}Poz%R>mAwVz7jPS(US%P1dnL%I;1|iLpCV*~z zZdN-AF>K!fyy-ExS%PkD9#GBpLE;3!C{Km}8n$z)A3*3;HEo}qPk-RK>SsYd^P2nv z1Zmi2dlCW+_zvb~4P<-L1@H^8*EBH4vqb=VK*Rl_>O;>10X)z>H89uXX~i~pbY^QH z$1_y`-zD9nfq9-n0emO+z6L(>RBp|x_)cu%0Wm(`(@6lk-(U?a@Z<>KTLOzUu+UQ^ zfbWtX4FU|y$DXJpwn2Bb%2dUJut6`xDotq7kf&D^9!-74`SHb zdvSu{S=XL5QnYnb5kEqrFF>xROaKkr>#73)9_1bRBW9IPz`yj=dWi)o;+LuYBzO?( z##&Dg0kl#0Nj)Y|1hCGtNI>!e+M$>a0j!3q^`2q@v=psZ!w&^3zmzzwL>oLqI9Fum?FcaNLtBfTxO48u;0>P5@68t2A)JQzn3?inAIh@>qJX z4R*%bN5%L_&v*emRkYW@FP@zOc&eCuG}v>SiPKbZ+S8^dYvifong-5zvIOu{(eN0i zigrFcE9dF)KbD}WqLbQl463>VobxOaKvP9;b)NuD6~B3k1@KgncpQMBXw} zy}H52;d29^>Vl{ARR%OVZ>Xb?2py~bI*!qq2L8Jzz3)>#TTTBN{A0EHXY3k22fyyw z_!@J1&?p}zw><}>gl=u_QXNj94zzu`Zvs;vZ$1Kjm2 z5I{FWPpRt!XzzBw1p~pvmP8 zHR=>3ZldK;-pEvzpvmPgwF)5eAAow^6amL^w<~RcvA%MhH2)nvbRd`rl+%n_JCEQH%m%*?^N+DE**`|(0emR^QG@@ z#rxwZF?h43Bnu^@)pT4M`o21M78BxpaGSUC7?v2*B@}Ne*o)DC25NsX+#nC!=Pe$~ zoZR4RHRl|>dRP9YbM)@iY`E4upja_8t>Jz8bH(5YPh*@kUN! z3G!8|nn57AMewF*Aow=v4h_8S%@x2m2W}Ifn*+nVB?9>7K(i764{W4*V<)o>x;fBJ z^&>zx2Zno71@O&*`2@)G-tevyz_%<8mISxg)(hbDHt9(3_;*<&zfC%V013Y7-6?<{ zH&{-9nls89GKD308at(dbZ;90JdM@3h#M5$Q0okDkEtv{Z?moGxqYXD=tiv-Zk zxFM?kB>;M);caiR0Dh#Q8v%NubeuP48mr4K7ps$wa0yazDJ8+e~DEx=<*S;}1+oFW#M1|Qh&a2YN#7nfyu6F%U}$VC>bn!iJS zCBQ6ix&WFnzfx@pYzO$jyG4M$1$|j_B0$_v0JFW3*{rJlD;zHKy$Mpn=OKGZ2gT6> zZ@K_p3?FJ>p?8Y_4i5blk@(pAK!7}d4iNb-tSYZ(4qK&7V0bH)dnGX?qFSr4kj37} zxlfx`M^(BC?~hR}uVT(m0RPOpEQdMGg*LSVJgybMQg8Y^2HH!wE4*1!!u1WiCe>Q$ zJuHAKcZSeyM7;x6=X!+Jx|xcZig5n{R45HhA*{u#P5wz$(4j zxY2t<0KbIWn*jCeCa+;3E9XZs=W5_jHhZ@T;72hZX<&=DTmV0cX}k{q zDN(bpOA7d{H+2!4;+JqQU&o2cbyRMbcgQCUv|G&IdnZW=Z?_lUkm~OB76{-+UXE&@ z&>Oylb?_rE6>lc)i|d1-Ip9tHlz}!hhr9!%goox9E{%8{mmc+&f5w-RXQ!+Ef5PfS zfMedkQU>I}Gt^@OIRMAKnF7e=KT+meaEMg^KYI(7{a>qRyr-pvtxm+H!4de?8@-$_ zWtZQifwSHL0(da55I6?q#om!PJZHDDL`)6 z66oC;pDy)X6+m?5n(vRq=BWmkH2=X;plk z1n`4t_3r`D!dKOoBY+paZuexpuI>xp$f`8&t>KH7687GsxHMuS>RHowLjXD04CVeC zK(=`~h?ku=~~t;GtYffQHiHD-*y&d6Ga)7;*Y6+t>&VWj$5xApi}f%Qs#C z4`nL?G?Z@NP60fW;~oZw@)B`cUVXl-?W~cP*Lwempx<{`057jy2vDs9zFOb11TU{M zG|||BEyjsgKqCTj4$+xpWY#Ui~50W@QP6PNpM9N z{X|xT*L|4>nDdHo=!vWd!+leKWT3^=o4!R-5{#*ZQ*>P0QNCg+4=xA`w@P`sFXj+y z2(AYUuj}?jjKsKP_$nXaatgt5YHz5nN$7j(N~rEy(9LH13XU=73Gh+{C?x;O_Jtp3 zz)@2#41l6$jxSjNM@<(3g)sG@FIxab%};6u0g9TrzGDJ7YIYEysLAm~{>(NwYHo+= z=<()$;ovj@&i9oF=Lv8=fip0*z!!Uh1<9k&tAhk+0$k`z6~GhV69P2Pee7E&faf`D zMF5)Tl&?$xPeCIp>i9vh#lDzRY(pE9Pkat3;d$;FE{*sd)yef$KFya>Czq+7&!CeZ z=uD{VB-g0R{=C&nJTUd01eoF-vR+VV0{SC zfF1Ci7Qh2GuS#&h9uuc&?vQU~37eANZmlYUhkaKC@H97^05#``FW~}9@HDqn13&rF z1@JU?vMM}!E^7U=Z|X&splNQQT3-#Sasf{G3I&i;e6B7LplPniSNRf4@HAJiIsi>` zCw-j+$Zxk+$AGSZs#CtxSHuRUIUJ}$BJMkY)4sf`476#k*jFGWvhl3}U-xev6jc+ZfZn^J)0NMCz;IYqhhjqxtw>JFZG=?VBAA6Sp z1>r??t~P@3W`5{%S`fzhiyra?9E8IoVC$8(cm~rS^$!CI!W6ZXK!1Q{{=Nbz2#2bZ z1juXS{mV2E48m%W0-F0v1#l3yB0xdd!XN*LZEz5d3j)|^=}!|tLHM>>Pk@3j!M{-e z2jL|G6oiTXy8<`}>(vPc;fy-q6odwUK{=b^AlyNK1daai#|$_KZxf*AnEc5CI0&0P zFTm{27QjK+?|F3gG}PMe&;6HGQ4r2l*1C}R5WwLt5kNt>K#d?kLFn|yK4A$C!sP@g z2wnbE0UU&<>LLi2K$XXTH|)9KEqls7SE-~Z1mQ*iufH&yffj_V{KZnjK{y+i2ED$u zKc*sI%0akC14;fN0yu!~M@bO2^)IW$5?T;;@^6z84#KhZM0sa_xd7I&mH-9e%l<%R z*1&lJExSoZ}{)zyDM00&`b4RrHYufnQ02&Ze{6@OO&9E96n2nJz9eF?%8 z|ITVG$U!)=z64<(|F#+ov>+VdKPDv{gpH!5Rs;Q!&+?@lguOH{$e$vBgK$nX{NhIp z&FlU^Eta4lEK)-oAPCRr&uX9r;RpV*I(z{K;q4b;t4%wcjrc9kGoT=RNi}N-&Nc6AZ!{jld}g7y65Za}XvGAi*{HFE>JGk3p?-{o7t(RTP91)UL)*H5K4ff4Kk(!uQo*1SkkU z^9Sm)1P5XBCIA$KOZ}MwI0*YUK@iS?s^$J#F=7KjsMH}y#C;C%xxYk!7KC5;A4mxY zVMHvH)6%or?`gz3I0!pvAkRNl00+>NSP8-}{X3hmgcgLG{6$j2LHJnH@wGoHmM>); z<~UfTAl&TlD}aM=I03587XLB<9E3|Xu+?8GfP?U)2EOsf$FU6#!fH)LRlYw>00&{K zrokXw(o}+Qm;ZD#7UUqj*HnVAz+cpyffj`O{5Pb8gK$kVvGIf7(1I`JAUv;u{r(IA z9E5e^;TJnGG>80s6Ig9zl3q)ozYjJ<}d9+xYWz%*j2fs}ap%ihT2||Aqi@ z>gGE7HM3LA;SA)WzxlW6S&);3q!th)aNb`ofFo`K0gAX1f55;J9B~^6M4%2A{FwqM z;u@&SEntH->X-c0jV!?%^=>U8K^yf_e^&uKbIfch8};A)#b%b!`tpkZu9O7(GQVO1 zO+WE4d&^&F<7?>v%cMpoLc15B%wO5gfSxmLuT}uWy#jFCUnF2&1b%uJCHMR{q~tS{ zyrZs@4sxu&{RRi?;FGOJI@Bp%ViDXETnaKvptK(DTG~Qt^3`z%nVJhZq~G&bTxfCWb(%0DdNax>Ywfbgqi9A^6*>kv83_ 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 diff --git a/lib/net9.0/Voucherify.xml b/lib/net9.0/Voucherify.xml index ec9aac18..882da4ee 100644 --- a/lib/net9.0/Voucherify.xml +++ b/lib/net9.0/Voucherify.xml @@ -10922,7 +10922,7 @@ Create Custom Event Schema - Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -10935,7 +10935,7 @@ Create Custom Event Schema - Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -10948,7 +10948,7 @@ Create Metadata Schema - Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -10961,7 +10961,7 @@ Create Metadata Schema - Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11076,7 +11076,7 @@ Delete Custom Event Schema - Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -11089,7 +11089,7 @@ Delete Custom Event Schema - Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -11102,7 +11102,7 @@ Delete Metadata Schema - Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11115,7 +11115,7 @@ Delete Metadata Schema - Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11230,7 +11230,7 @@ Get Custom Event Schema - Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -11243,7 +11243,7 @@ Get Custom Event Schema - Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -11256,7 +11256,7 @@ Get Metadata Schema - Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11269,7 +11269,7 @@ Get Metadata Schema - Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11432,7 +11432,7 @@ List Custom Event Schemas - Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -11444,7 +11444,7 @@ List Custom Event Schemas - Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -11456,7 +11456,7 @@ List Metadata Schemas - Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11468,7 +11468,7 @@ List Metadata Schemas - Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11574,7 +11574,7 @@ Copy Campaign Template to a Project - Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11588,7 +11588,7 @@ Copy Campaign Template to a Project - Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11602,7 +11602,7 @@ List Campaign Templates - Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11619,7 +11619,7 @@ List Campaign Templates - Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11690,7 +11690,7 @@ Update Custom Event Schema - Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -11704,7 +11704,7 @@ Update Custom Event Schema - Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -11718,7 +11718,7 @@ Update Metadata Schema - Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11732,7 +11732,7 @@ Update Metadata Schema - Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11917,7 +11917,7 @@ Create Custom Event Schema - Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -11931,7 +11931,7 @@ Create Custom Event Schema - Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -11945,7 +11945,7 @@ Create Metadata Schema - Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11959,7 +11959,7 @@ Create Metadata Schema - Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -12083,7 +12083,7 @@ Delete Custom Event Schema - Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -12097,7 +12097,7 @@ Delete Custom Event Schema - Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -12111,7 +12111,7 @@ Delete Metadata Schema - Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -12125,7 +12125,7 @@ Delete Metadata Schema - Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -12249,7 +12249,7 @@ Get Custom Event Schema - Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -12263,7 +12263,7 @@ Get Custom Event Schema - Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -12277,7 +12277,7 @@ Get Metadata Schema - Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -12291,7 +12291,7 @@ Get Metadata Schema - Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -12467,7 +12467,7 @@ List Custom Event Schemas - Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -12480,7 +12480,7 @@ List Custom Event Schemas - Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -12493,7 +12493,7 @@ List Metadata Schemas - Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -12506,7 +12506,7 @@ List Metadata Schemas - Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -12621,7 +12621,7 @@ Copy Campaign Template to a Project - Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -12636,7 +12636,7 @@ Copy Campaign Template to a Project - Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -12651,7 +12651,7 @@ List Campaign Templates - Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -12669,7 +12669,7 @@ List Campaign Templates - Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -12745,7 +12745,7 @@ Update Custom Event Schema - Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -12760,7 +12760,7 @@ Update Custom Event Schema - Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -12775,7 +12775,7 @@ Update Metadata Schema - Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -12790,7 +12790,7 @@ Update Metadata Schema - Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13070,7 +13070,7 @@

- Create Custom Event Schema Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Create Custom Event Schema Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13080,7 +13080,7 @@ - Create Custom Event Schema Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Create Custom Event Schema Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13090,7 +13090,7 @@ - Create Custom Event Schema Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Create Custom Event Schema Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13101,7 +13101,7 @@ - Create Custom Event Schema Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Create Custom Event Schema Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13112,7 +13112,7 @@ - Create Metadata Schema Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Create Metadata Schema Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13122,7 +13122,7 @@ - Create Metadata Schema Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Create Metadata Schema Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13132,7 +13132,7 @@ - Create Metadata Schema Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Create Metadata Schema Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13143,7 +13143,7 @@ - Create Metadata Schema Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Create Metadata Schema Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13318,7 +13318,7 @@ - Delete Custom Event Schema Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Delete Custom Event Schema Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13328,7 +13328,7 @@ - Delete Custom Event Schema Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Delete Custom Event Schema Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13338,7 +13338,7 @@ - Delete Custom Event Schema Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Delete Custom Event Schema Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13349,7 +13349,7 @@ - Delete Custom Event Schema Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Delete Custom Event Schema Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13360,7 +13360,7 @@ - Delete Metadata Schema Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Delete Metadata Schema Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13370,7 +13370,7 @@ - Delete Metadata Schema Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Delete Metadata Schema Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13380,7 +13380,7 @@ - Delete Metadata Schema Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Delete Metadata Schema Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13391,7 +13391,7 @@ - Delete Metadata Schema Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Delete Metadata Schema Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13566,7 +13566,7 @@ - Get Custom Event Schema Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Get Custom Event Schema Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13576,7 +13576,7 @@ - Get Custom Event Schema Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Get Custom Event Schema Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13586,7 +13586,7 @@ - Get Custom Event Schema Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Get Custom Event Schema Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13597,7 +13597,7 @@ - Get Custom Event Schema Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Get Custom Event Schema Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13608,7 +13608,7 @@ - Get Metadata Schema Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Get Metadata Schema Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13618,7 +13618,7 @@ - Get Metadata Schema Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Get Metadata Schema Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13628,7 +13628,7 @@ - Get Metadata Schema Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Get Metadata Schema Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13639,7 +13639,7 @@ - Get Metadata Schema Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Get Metadata Schema Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13890,7 +13890,7 @@ - List Custom Event Schemas Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + List Custom Event Schemas Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13899,7 +13899,7 @@ - List Custom Event Schemas Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + List Custom Event Schemas Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13908,7 +13908,7 @@ - List Custom Event Schemas Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + List Custom Event Schemas Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13918,7 +13918,7 @@ - List Custom Event Schemas Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + List Custom Event Schemas Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13928,7 +13928,7 @@ - List Metadata Schemas Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + List Metadata Schemas Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13937,7 +13937,7 @@ - List Metadata Schemas Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + List Metadata Schemas Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13946,7 +13946,7 @@ - List Metadata Schemas Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + List Metadata Schemas Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13956,7 +13956,7 @@ - List Metadata Schemas Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + List Metadata Schemas Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -14114,7 +14114,7 @@ - Copy Campaign Template to a Project Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Copy Campaign Template to a Project Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -14125,7 +14125,7 @@ - Copy Campaign Template to a Project Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Copy Campaign Template to a Project Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -14136,7 +14136,7 @@ - Copy Campaign Template to a Project Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Copy Campaign Template to a Project Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -14148,7 +14148,7 @@ - Copy Campaign Template to a Project Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Copy Campaign Template to a Project Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -14160,7 +14160,7 @@ - List Campaign Templates Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + List Campaign Templates Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -14174,7 +14174,7 @@ - List Campaign Templates Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + List Campaign Templates Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -14188,7 +14188,7 @@ - List Campaign Templates Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + List Campaign Templates Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -14203,7 +14203,7 @@ - List Campaign Templates Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + List Campaign Templates Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -14306,7 +14306,7 @@ - Update Custom Event Schema Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Update Custom Event Schema Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -14317,7 +14317,7 @@ - Update Custom Event Schema Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Update Custom Event Schema Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -14328,7 +14328,7 @@ - Update Custom Event Schema Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Update Custom Event Schema Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -14340,7 +14340,7 @@ - Update Custom Event Schema Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Update Custom Event Schema Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -14352,7 +14352,7 @@ - Update Metadata Schema Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Update Metadata Schema Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -14363,7 +14363,7 @@ - Update Metadata Schema Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Update Metadata Schema Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -14374,7 +14374,7 @@ - Update Metadata Schema Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Update Metadata Schema Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -14386,7 +14386,7 @@ - Update Metadata Schema Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Update Metadata Schema Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -14586,7 +14586,7 @@ Get Metadata Schema - Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. + Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. Thrown when fails to make API call There is an infinite number of possibilities for retrieving metadata schemas by the resource type because you can define custom metadata schemas. @@ -14598,7 +14598,7 @@ Get Metadata Schema - Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. + Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. Thrown when fails to make API call There is an infinite number of possibilities for retrieving metadata schemas by the resource type because you can define custom metadata schemas. @@ -14637,7 +14637,7 @@ Get Metadata Schema - Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. + Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. Thrown when fails to make API call There is an infinite number of possibilities for retrieving metadata schemas by the resource type because you can define custom metadata schemas. @@ -14650,7 +14650,7 @@ Get Metadata Schema - Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. + Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. Thrown when fails to make API call There is an infinite number of possibilities for retrieving metadata schemas by the resource type because you can define custom metadata schemas. @@ -14750,7 +14750,7 @@ - Get Metadata Schema Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. + Get Metadata Schema Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. Thrown when fails to make API call There is an infinite number of possibilities for retrieving metadata schemas by the resource type because you can define custom metadata schemas. @@ -14759,7 +14759,7 @@ - Get Metadata Schema Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. + Get Metadata Schema Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. Thrown when fails to make API call There is an infinite number of possibilities for retrieving metadata schemas by the resource type because you can define custom metadata schemas. @@ -14768,7 +14768,7 @@ - Get Metadata Schema Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. + Get Metadata Schema Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. Thrown when fails to make API call There is an infinite number of possibilities for retrieving metadata schemas by the resource type because you can define custom metadata schemas. @@ -14778,7 +14778,7 @@ - Get Metadata Schema Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. + Get Metadata Schema Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. Thrown when fails to make API call There is an infinite number of possibilities for retrieving metadata schemas by the resource type because you can define custom metadata schemas. @@ -14834,7 +14834,7 @@ Thrown when fails to make API call Gives an access token outside of the context of a user. (optional) - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) Index associated with the operation. OAuthTokenGenerateResponseBody @@ -14847,7 +14847,7 @@ Thrown when fails to make API call Gives an access token outside of the context of a user. (optional) - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) Index associated with the operation. ApiResponse of OAuthTokenGenerateResponseBody @@ -14913,7 +14913,7 @@ Thrown when fails to make API call Gives an access token outside of the context of a user. (optional) - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) Index associated with the operation. Cancellation Token to cancel the request. Task of OAuthTokenGenerateResponseBody @@ -14927,7 +14927,7 @@ Thrown when fails to make API call Gives an access token outside of the context of a user. (optional) - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) Index associated with the operation. Cancellation Token to cancel the request. Task of ApiResponse (OAuthTokenGenerateResponseBody) @@ -15056,7 +15056,7 @@ Thrown when fails to make API call Gives an access token outside of the context of a user. (optional) - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) Index associated with the operation. OAuthTokenGenerateResponseBody @@ -15066,7 +15066,7 @@ Thrown when fails to make API call Gives an access token outside of the context of a user. (optional) - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) Index associated with the operation. ApiResponse of OAuthTokenGenerateResponseBody @@ -15076,7 +15076,7 @@ Thrown when fails to make API call Gives an access token outside of the context of a user. (optional) - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) Index associated with the operation. Cancellation Token to cancel the request. Task of OAuthTokenGenerateResponseBody @@ -15087,7 +15087,7 @@ Thrown when fails to make API call Gives an access token outside of the context of a user. (optional) - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) Index associated with the operation. Cancellation Token to cancel the request. Task of ApiResponse (OAuthTokenGenerateResponseBody) @@ -16522,7 +16522,7 @@ Import Products using CSV - Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 norms**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). + Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - 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 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - 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). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). Thrown when fails to make API call File path. (optional) @@ -16534,7 +16534,7 @@ Import Products using CSV - Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 norms**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). + Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - 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 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - 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). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). Thrown when fails to make API call File path. (optional) @@ -16907,7 +16907,7 @@ Import Products using CSV - Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 norms**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). + Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - 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 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - 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). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). Thrown when fails to make API call File path. (optional) @@ -16920,7 +16920,7 @@ Import Products using CSV - Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 norms**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). + Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - 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 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - 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). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). Thrown when fails to make API call File path. (optional) @@ -17446,7 +17446,7 @@ - Import Products using CSV Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 norms**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). + Import Products using CSV Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - 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 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - 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). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). Thrown when fails to make API call File path. (optional) @@ -17455,7 +17455,7 @@ - Import Products using CSV Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 norms**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). + Import Products using CSV Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - 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 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - 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). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). Thrown when fails to make API call File path. (optional) @@ -17464,7 +17464,7 @@ - Import Products using CSV Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 norms**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). + Import Products using CSV Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - 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 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - 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). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). Thrown when fails to make API call File path. (optional) @@ -17474,7 +17474,7 @@ - Import Products using CSV Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 norms**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). + Import Products using CSV Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - 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 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - 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). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). Thrown when fails to make API call File path. (optional) @@ -19944,7 +19944,7 @@ Redeem Stackable Discounts - # How API returns calculated discounts and order amounts in the response In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. + In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. Thrown when fails to make API call @@ -19956,7 +19956,7 @@ Redeem Stackable Discounts - # How API returns calculated discounts and order amounts in the response In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. + In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. Thrown when fails to make API call @@ -20125,7 +20125,7 @@ Redeem Stackable Discounts - # How API returns calculated discounts and order amounts in the response In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. + In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. Thrown when fails to make API call @@ -20138,7 +20138,7 @@ Redeem Stackable Discounts - # How API returns calculated discounts and order amounts in the response In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. + In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. Thrown when fails to make API call @@ -20420,7 +20420,7 @@ - Redeem Stackable Discounts # How API returns calculated discounts and order amounts in the response In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. + Redeem Stackable Discounts In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. Thrown when fails to make API call @@ -20429,7 +20429,7 @@ - Redeem Stackable Discounts # How API returns calculated discounts and order amounts in the response In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. + Redeem Stackable Discounts In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. Thrown when fails to make API call @@ -20438,7 +20438,7 @@ - Redeem Stackable Discounts # How API returns calculated discounts and order amounts in the response In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. + Redeem Stackable Discounts In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. Thrown when fails to make API call @@ -20448,7 +20448,7 @@ - Redeem Stackable Discounts # How API returns calculated discounts and order amounts in the response In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. + Redeem Stackable Discounts In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. Thrown when fails to make API call @@ -22666,7 +22666,7 @@ Add Promotion Tier From Template - Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22679,7 +22679,7 @@ Add Promotion Tier From Template - Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22692,7 +22692,7 @@ Create Campaign From Template - Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22705,7 +22705,7 @@ Create Campaign From Template - Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22718,7 +22718,7 @@ Create Campaign Template - Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide details for a campaign template @@ -22730,7 +22730,7 @@ Create Campaign Template - Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide details for a campaign template @@ -22742,7 +22742,7 @@ Delete Campaign Template - Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22754,7 +22754,7 @@ Delete Campaign Template - Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22766,7 +22766,7 @@ Get Campaign Template - Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22778,7 +22778,7 @@ Get Campaign Template - Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22790,7 +22790,7 @@ List Campaign Templates - Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Limits the number of objects to be returned. The limit can range between 1 and 100 items. If no limit is set, it returns 10 items. (optional) @@ -22806,7 +22806,7 @@ List Campaign Templates - Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Limits the number of objects to be returned. The limit can range between 1 and 100 items. If no limit is set, it returns 10 items. (optional) @@ -22822,7 +22822,7 @@ Update Campaign Template - Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22835,7 +22835,7 @@ Update Campaign Template - Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22853,7 +22853,7 @@ Add Promotion Tier From Template - Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22867,7 +22867,7 @@ Add Promotion Tier From Template - Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22881,7 +22881,7 @@ Create Campaign From Template - Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22895,7 +22895,7 @@ Create Campaign From Template - Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22909,7 +22909,7 @@ Create Campaign Template - Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide details for a campaign template @@ -22922,7 +22922,7 @@ Create Campaign Template - Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide details for a campaign template @@ -22935,7 +22935,7 @@ Delete Campaign Template - Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22948,7 +22948,7 @@ Delete Campaign Template - Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22961,7 +22961,7 @@ Get Campaign Template - Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22974,7 +22974,7 @@ Get Campaign Template - Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22987,7 +22987,7 @@ List Campaign Templates - Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Limits the number of objects to be returned. The limit can range between 1 and 100 items. If no limit is set, it returns 10 items. (optional) @@ -23004,7 +23004,7 @@ List Campaign Templates - Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Limits the number of objects to be returned. The limit can range between 1 and 100 items. If no limit is set, it returns 10 items. (optional) @@ -23021,7 +23021,7 @@ Update Campaign Template - Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23035,7 +23035,7 @@ Update Campaign Template - Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23112,7 +23112,7 @@ - Add Promotion Tier From Template Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Add Promotion Tier From Template Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23122,7 +23122,7 @@ - Add Promotion Tier From Template Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Add Promotion Tier From Template Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23132,7 +23132,7 @@ - Add Promotion Tier From Template Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Add Promotion Tier From Template Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23143,7 +23143,7 @@ - Add Promotion Tier From Template Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Add Promotion Tier From Template Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23154,7 +23154,7 @@ - Create Campaign From Template Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Create Campaign From Template Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23164,7 +23164,7 @@ - Create Campaign From Template Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Create Campaign From Template Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23174,7 +23174,7 @@ - Create Campaign From Template Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Create Campaign From Template Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23185,7 +23185,7 @@ - Create Campaign From Template Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Create Campaign From Template Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23196,7 +23196,7 @@ - Create Campaign Template Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Create Campaign Template Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide details for a campaign template @@ -23205,7 +23205,7 @@ - Create Campaign Template Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Create Campaign Template Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide details for a campaign template @@ -23214,7 +23214,7 @@ - Create Campaign Template Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Create Campaign Template Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide details for a campaign template @@ -23224,7 +23224,7 @@ - Create Campaign Template Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Create Campaign Template Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide details for a campaign template @@ -23234,7 +23234,7 @@ - Delete Campaign Template Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Delete Campaign Template Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23243,7 +23243,7 @@ - Delete Campaign Template Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Delete Campaign Template Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23252,7 +23252,7 @@ - Delete Campaign Template Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Delete Campaign Template Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23262,7 +23262,7 @@ - Delete Campaign Template Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Delete Campaign Template Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23272,7 +23272,7 @@ - Get Campaign Template Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Get Campaign Template Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23281,7 +23281,7 @@ - Get Campaign Template Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Get Campaign Template Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23290,7 +23290,7 @@ - Get Campaign Template Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Get Campaign Template Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23300,7 +23300,7 @@ - Get Campaign Template Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Get Campaign Template Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23310,7 +23310,7 @@ - List Campaign Templates Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + List Campaign Templates Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Limits the number of objects to be returned. The limit can range between 1 and 100 items. If no limit is set, it returns 10 items. (optional) @@ -23323,7 +23323,7 @@ - List Campaign Templates Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + List Campaign Templates Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Limits the number of objects to be returned. The limit can range between 1 and 100 items. If no limit is set, it returns 10 items. (optional) @@ -23336,7 +23336,7 @@ - List Campaign Templates Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + List Campaign Templates Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Limits the number of objects to be returned. The limit can range between 1 and 100 items. If no limit is set, it returns 10 items. (optional) @@ -23350,7 +23350,7 @@ - List Campaign Templates Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + List Campaign Templates Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Limits the number of objects to be returned. The limit can range between 1 and 100 items. If no limit is set, it returns 10 items. (optional) @@ -23364,7 +23364,7 @@ - Update Campaign Template Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Update Campaign Template Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23374,7 +23374,7 @@ - Update Campaign Template Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Update Campaign Template Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23384,7 +23384,7 @@ - Update Campaign Template Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Update Campaign Template Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23395,7 +23395,7 @@ - Update Campaign Template Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Update Campaign Template Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23442,7 +23442,7 @@ Create Validation Rules - Create a validation rule. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Create a validation rule. 🚧 Managing validation rules 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. Thrown when fails to make API call Specify the validation rules parameters. @@ -23454,7 +23454,7 @@ Create Validation Rules - Create a validation rule. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Create a validation rule. 🚧 Managing validation rules 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. Thrown when fails to make API call Specify the validation rules parameters. @@ -23634,7 +23634,7 @@ Update Validation Rule - Update validation rule parameters. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Update validation rule parameters. 🚧 Managing validation rules 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. Thrown when fails to make API call A unique validation rule ID. @@ -23647,7 +23647,7 @@ Update Validation Rule - Update validation rule parameters. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Update validation rule parameters. 🚧 Managing validation rules 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. Thrown when fails to make API call A unique validation rule ID. @@ -23695,7 +23695,7 @@ Create Validation Rules - Create a validation rule. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Create a validation rule. 🚧 Managing validation rules 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. Thrown when fails to make API call Specify the validation rules parameters. @@ -23708,7 +23708,7 @@ Create Validation Rules - Create a validation rule. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Create a validation rule. 🚧 Managing validation rules 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. Thrown when fails to make API call Specify the validation rules parameters. @@ -23901,7 +23901,7 @@ Update Validation Rule - Update validation rule parameters. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Update validation rule parameters. 🚧 Managing validation rules 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. Thrown when fails to make API call A unique validation rule ID. @@ -23915,7 +23915,7 @@ Update Validation Rule - Update validation rule parameters. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Update validation rule parameters. 🚧 Managing validation rules 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. Thrown when fails to make API call A unique validation rule ID. @@ -24038,7 +24038,7 @@ - Create Validation Rules Create a validation rule. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Create Validation Rules Create a validation rule. 🚧 Managing validation rules 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. Thrown when fails to make API call Specify the validation rules parameters. @@ -24047,7 +24047,7 @@ - Create Validation Rules Create a validation rule. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Create Validation Rules Create a validation rule. 🚧 Managing validation rules 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. Thrown when fails to make API call Specify the validation rules parameters. @@ -24056,7 +24056,7 @@ - Create Validation Rules Create a validation rule. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Create Validation Rules Create a validation rule. 🚧 Managing validation rules 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. Thrown when fails to make API call Specify the validation rules parameters. @@ -24066,7 +24066,7 @@ - Create Validation Rules Create a validation rule. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Create Validation Rules Create a validation rule. 🚧 Managing validation rules 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. Thrown when fails to make API call Specify the validation rules parameters. @@ -24352,7 +24352,7 @@ - Update Validation Rule Update validation rule parameters. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Update Validation Rule Update validation rule parameters. 🚧 Managing validation rules 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. Thrown when fails to make API call A unique validation rule ID. @@ -24362,7 +24362,7 @@ - Update Validation Rule Update validation rule parameters. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Update Validation Rule Update validation rule parameters. 🚧 Managing validation rules 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. Thrown when fails to make API call A unique validation rule ID. @@ -24372,7 +24372,7 @@ - Update Validation Rule Update validation rule parameters. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Update Validation Rule Update validation rule parameters. 🚧 Managing validation rules 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. Thrown when fails to make API call A unique validation rule ID. @@ -24383,7 +24383,7 @@ - Update Validation Rule Update validation rule parameters. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Update Validation Rule Update validation rule parameters. 🚧 Managing validation rules 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. Thrown when fails to make API call A unique validation rule ID. @@ -24740,7 +24740,7 @@ Import Vouchers - Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 norms. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. + Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. Thrown when fails to make API call The request body is an array of objects. Each object contains details about a specific voucher. @@ -24752,7 +24752,7 @@ Import Vouchers - Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 norms. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. + Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. Thrown when fails to make API call The request body is an array of objects. Each object contains details about a specific voucher. @@ -24834,7 +24834,7 @@ Sorts the results using one of the filtering options, where the dash - preceding a sorting option means sorting in a descending order. (optional) (optional) (optional) - Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. (optional) + Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. Note that **Try-it!** adds the opening [ and closing ] square brackets on its own, so paste your filter without them, for example expiration_date][conditions][$before. (optional) Index associated with the operation. VouchersListResponseBody @@ -24857,7 +24857,7 @@ Sorts the results using one of the filtering options, where the dash - preceding a sorting option means sorting in a descending order. (optional) (optional) (optional) - Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. (optional) + Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. Note that **Try-it!** adds the opening [ and closing ] square brackets on its own, so paste your filter without them, for example expiration_date][conditions][$before. (optional) Index associated with the operation. ApiResponse of VouchersListResponseBody @@ -25185,7 +25185,7 @@ Import Vouchers - Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 norms. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. + Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. Thrown when fails to make API call The request body is an array of objects. Each object contains details about a specific voucher. @@ -25198,7 +25198,7 @@ Import Vouchers - Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 norms. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. + Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. Thrown when fails to make API call The request body is an array of objects. Each object contains details about a specific voucher. @@ -25285,7 +25285,7 @@ Sorts the results using one of the filtering options, where the dash - preceding a sorting option means sorting in a descending order. (optional) (optional) (optional) - Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. (optional) + Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. Note that **Try-it!** adds the opening [ and closing ] square brackets on its own, so paste your filter without them, for example expiration_date][conditions][$before. (optional) Index associated with the operation. Cancellation Token to cancel the request. Task of VouchersListResponseBody @@ -25309,7 +25309,7 @@ Sorts the results using one of the filtering options, where the dash - preceding a sorting option means sorting in a descending order. (optional) (optional) (optional) - Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. (optional) + Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. Note that **Try-it!** adds the opening [ and closing ] square brackets on its own, so paste your filter without them, for example expiration_date][conditions][$before. (optional) Index associated with the operation. Cancellation Token to cancel the request. Task of ApiResponse (VouchersListResponseBody) @@ -25796,7 +25796,7 @@ - Import Vouchers Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 norms. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. + Import Vouchers Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. Thrown when fails to make API call The request body is an array of objects. Each object contains details about a specific voucher. @@ -25805,7 +25805,7 @@ - Import Vouchers Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 norms. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. + Import Vouchers Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. Thrown when fails to make API call The request body is an array of objects. Each object contains details about a specific voucher. @@ -25814,7 +25814,7 @@ - Import Vouchers Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 norms. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. + Import Vouchers Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. Thrown when fails to make API call The request body is an array of objects. Each object contains details about a specific voucher. @@ -25824,7 +25824,7 @@ - Import Vouchers Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 norms. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. + Import Vouchers Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. Thrown when fails to make API call The request body is an array of objects. Each object contains details about a specific voucher. @@ -25940,7 +25940,7 @@ Sorts the results using one of the filtering options, where the dash - preceding a sorting option means sorting in a descending order. (optional) (optional) (optional) - Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. (optional) + Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. Note that **Try-it!** adds the opening [ and closing ] square brackets on its own, so paste your filter without them, for example expiration_date][conditions][$before. (optional) Index associated with the operation. VouchersListResponseBody @@ -25960,7 +25960,7 @@ Sorts the results using one of the filtering options, where the dash - preceding a sorting option means sorting in a descending order. (optional) (optional) (optional) - Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. (optional) + Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. Note that **Try-it!** adds the opening [ and closing ] square brackets on its own, so paste your filter without them, for example expiration_date][conditions][$before. (optional) Index associated with the operation. ApiResponse of VouchersListResponseBody @@ -25980,7 +25980,7 @@ Sorts the results using one of the filtering options, where the dash - preceding a sorting option means sorting in a descending order. (optional) (optional) (optional) - Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. (optional) + Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. Note that **Try-it!** adds the opening [ and closing ] square brackets on its own, so paste your filter without them, for example expiration_date][conditions][$before. (optional) Index associated with the operation. Cancellation Token to cancel the request. Task of VouchersListResponseBody @@ -26001,7 +26001,7 @@ Sorts the results using one of the filtering options, where the dash - preceding a sorting option means sorting in a descending order. (optional) (optional) (optional) - Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. (optional) + Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. Note that **Try-it!** adds the opening [ and closing ] square brackets on its own, so paste your filter without them, for example expiration_date][conditions][$before. (optional) Index associated with the operation. Cancellation Token to cancel the request. Task of ApiResponse (VouchersListResponseBody) @@ -39754,7 +39754,7 @@ Defines the scenario Voucherify should consider during the qualification process. - `ALL` - Scenario that returns all redeemables available for the customer in one API request. This scenario is used by default when no value is selected. - `CUSTOMER_WALLET` - returns vouchers applicable to the customer's cart based on the vouchers assigned to the customer's profile. - `AUDIENCE_ONLY` - returns all vouchers, promotion tiers, and campaigns available to the customer. Voucherify validates the rules based on the customer profile only. - `PRODUCTS` - returns all promotions available for the products (when a discount is defined to be applied to the item or when the item is required in the validation rule). - `PRODUCTS_DISCOUNT` - returns all promotions available for products when a discount is defined as applicable to specific item(s). - `PROMOTION_STACKS` - returns the applicable promotion stacks. - `PRODUCTS_BY_CUSTOMER` - returns all promotions available for a customer for the products (when a discount is defined to be applied to the item or when the item is required in the validation rule). - `PRODUCTS_DISCOUNT_BY_CUSTOMER` - returns all promotions available for a customer for products when a discount is defined as applicable to specific item(s).. options. session. - A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard; in the _Advanced Rule Builder_ &rarr; _Advanced_ &rarr; _Redemption metadata satisfy_ or _Basic Builder_ &rarr; _Attributes match_ &rarr; _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule).. + A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules) in the the Dashboard.. @@ -39814,9 +39814,9 @@ - A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard; in the _Advanced Rule Builder_ &rarr; _Advanced_ &rarr; _Redemption metadata satisfy_ or _Basic Builder_ &rarr; _Attributes match_ &rarr; _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule). + A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules) in the the Dashboard. - A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard; in the _Advanced Rule Builder_ &rarr; _Advanced_ &rarr; _Redemption metadata satisfy_ or _Basic Builder_ &rarr; _Attributes match_ &rarr; _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule). + A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules) in the the Dashboard. @@ -77527,7 +77527,7 @@ reward. order. - A set of key/value pairs that you can send in the request body to check against vouchers requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard; in the _Advanced Rule Builder_ &rarr; _Advanced_ &rarr; _Redemption metadata satisfy_ or _Basic Builder_ &rarr; _Attributes match_ &rarr; _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule).. + A set of key/value pairs that you can send in the request body to check against vouchers requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules) in the the Dashboard.. @@ -77553,9 +77553,9 @@ - A set of key/value pairs that you can send in the request body to check against vouchers requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard; in the _Advanced Rule Builder_ &rarr; _Advanced_ &rarr; _Redemption metadata satisfy_ or _Basic Builder_ &rarr; _Attributes match_ &rarr; _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule). + A set of key/value pairs that you can send in the request body to check against vouchers requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules) in the the Dashboard. - A set of key/value pairs that you can send in the request body to check against vouchers requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard; in the _Advanced Rule Builder_ &rarr; _Advanced_ &rarr; _Redemption metadata satisfy_ or _Basic Builder_ &rarr; _Attributes match_ &rarr; _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule). + A set of key/value pairs that you can send in the request body to check against vouchers requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules) in the the Dashboard. @@ -117253,7 +117253,7 @@ Unique client identifier, assigned by Voucherify, for OAuth.. Timestamp in seconds in the Unix format indicating when the token expires.. Number of seconds left until the token expires.. - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`.. + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`.. Type of the token. Use the value as the header prefix for authorization.. @@ -117306,9 +117306,9 @@ - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. @@ -117371,7 +117371,7 @@ Unique client identifier, assigned by Voucherify, for OAuth.. Timestamp in seconds in the Unix format indicating when the token expires.. Number of seconds left until the token expires.. - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`.. + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`.. Type of the token. Use the value as the header prefix for authorization.. Determines if the token is active. Nonexistent tokens are also marked as inactive.. @@ -117425,9 +117425,9 @@ - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. @@ -117514,7 +117514,7 @@ Initializes a new instance of the class. Unique ID assigned by Voucherify of an existing order that will be linked to the redemption of this request.. - Unique source ID of an existing order that will be linked to the redemption of this request.. + Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request.. The order status.. A positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the total amount of the order. This is the sum of the order items' amounts.. A positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the total amount of the order. This is the sum of the order items' amounts.. @@ -117536,9 +117536,9 @@ - Unique source ID of an existing order that will be linked to the redemption of this request. + Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request. - Unique source ID of an existing order that will be linked to the redemption of this request. + Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request. @@ -119122,7 +119122,7 @@ Initializes a new instance of the class. Unique ID assigned by Voucherify of an existing order that will be linked to the redemption of this request.. - Unique source ID of an existing order that will be linked to the redemption of this request.. + Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request.. The order status.. A positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the total amount of the order. This is the sum of the order items' amounts.. A positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the total amount of the order. This is the sum of the order items' amounts.. @@ -119148,9 +119148,9 @@ - Unique source ID of an existing order that will be linked to the redemption of this request. + Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request. - Unique source ID of an existing order that will be linked to the redemption of this request. + Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request. @@ -120382,7 +120382,7 @@ Initializes a new instance of the class. Unique ID assigned by Voucherify of an existing order that will be linked to the redemption of this request.. - Unique source ID of an existing order that will be linked to the redemption of this request.. + Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request.. The order status.. A positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the total amount of the order. This is the sum of the order items' amounts.. A positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the total amount of the order. This is the sum of the order items' amounts.. @@ -120407,9 +120407,9 @@ - Unique source ID of an existing order that will be linked to the redemption of this request. + Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request. - Unique source ID of an existing order that will be linked to the redemption of this request. + Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request. @@ -121071,7 +121071,7 @@ Initializes a new instance of the class. - Unique source ID of an existing order that will be linked to the redemption of this request.. + Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request.. The order status.. A positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the total amount of the order. This is the sum of the order items' amounts.. A positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the total amount of the order. This is the sum of the order items' amounts.. @@ -121085,9 +121085,9 @@ - Unique source ID of an existing order that will be linked to the redemption of this request. + Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request. - Unique source ID of an existing order that will be linked to the redemption of this request. + Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request. @@ -139717,7 +139717,7 @@ Defines the scenario Voucherify should consider during the qualification process. - `ALL` - Scenario that returns all redeemables available for the customer in one API request. This scenario is used by default when no value is selected. - `CUSTOMER_WALLET` - returns vouchers applicable to the customer's cart based on the vouchers assigned to the customer's profile. - `AUDIENCE_ONLY` - returns all vouchers, promotion tiers, and campaigns available to the customer. Voucherify validates the rules based on the customer profile only. - `PRODUCTS` - returns all promotions available for the products (when a discount is defined to be applied to the item or when the item is required in the validation rule). - `PRODUCTS_DISCOUNT` - returns all promotions available for products when a discount is defined as applicable to specific item(s). - `PROMOTION_STACKS` - returns the applicable promotion stacks. - `PRODUCTS_BY_CUSTOMER` - returns all promotions available for a customer for the products (when a discount is defined to be applied to the item or when the item is required in the validation rule). - `PRODUCTS_DISCOUNT_BY_CUSTOMER` - returns all promotions available for a customer for products when a discount is defined as applicable to specific item(s).. options. session. - A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard; in the _Advanced Rule Builder_ &rarr; _Advanced_ &rarr; _Redemption metadata satisfy_ or _Basic Builder_ &rarr; _Attributes match_ &rarr; _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule).. + A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules) in the the Dashboard.. @@ -139777,9 +139777,9 @@ - A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard; in the _Advanced Rule Builder_ &rarr; _Advanced_ &rarr; _Redemption metadata satisfy_ or _Basic Builder_ &rarr; _Attributes match_ &rarr; _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule). + A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules) in the the Dashboard. - A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard; in the _Advanced Rule Builder_ &rarr; _Advanced_ &rarr; _Redemption metadata satisfy_ or _Basic Builder_ &rarr; _Attributes match_ &rarr; _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule). + A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules) in the the Dashboard. diff --git a/lib/netstandard2.0/Voucherify.deps.json b/lib/netstandard2.0/Voucherify.deps.json index 667abb3a..bdd36951 100644 --- a/lib/netstandard2.0/Voucherify.deps.json +++ b/lib/netstandard2.0/Voucherify.deps.json @@ -10,6 +10,7 @@ "Voucherify/9.0.1": { "dependencies": { "JsonSubTypes": "2.0.1", + "NETStandard.Library": "2.0.3", "Newtonsoft.Json": "13.0.3", "Polly": "8.1.0", "RestSharp": "112.0.0", @@ -41,6 +42,12 @@ } } }, + "Microsoft.NETCore.Platforms/1.1.0": {}, + "NETStandard.Library/2.0.3": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0" + } + }, "Newtonsoft.Json/13.0.3": { "runtime": { "lib/netstandard2.0/Newtonsoft.Json.dll": { @@ -191,6 +198,20 @@ "path": "microsoft.bcl.asyncinterfaces/8.0.0", "hashPath": "microsoft.bcl.asyncinterfaces.8.0.0.nupkg.sha512" }, + "Microsoft.NETCore.Platforms/1.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==", + "path": "microsoft.netcore.platforms/1.1.0", + "hashPath": "microsoft.netcore.platforms.1.1.0.nupkg.sha512" + }, + "NETStandard.Library/2.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-st47PosZSHrjECdjeIzZQbzivYBJFv6P2nv4cj2ypdI204DO+vZ7l5raGMiX4eXMJ53RfOIg+/s4DHVZ54Nu2A==", + "path": "netstandard.library/2.0.3", + "hashPath": "netstandard.library.2.0.3.nupkg.sha512" + }, "Newtonsoft.Json/13.0.3": { "type": "package", "serviceable": true, diff --git a/lib/netstandard2.0/Voucherify.dll b/lib/netstandard2.0/Voucherify.dll index 9f72bc5b8efa4737b265b78fcebf19dcf1ccebbe..fff0c19f26b0e83bc271edf636bd43eaea87ce89 100644 GIT binary patch delta 582 zcmXxdJxo(!6vpxUUO*6S3y3IRq9CYz-J+;S<)ha^tH_5{UYvkvI$SHIY0FS!Vhst9 z*ntMag@g`-!I((mc8RRUk#rysM_t@BAz>j5{7LX6zjKz8=Sh70sU|Q#m%UV+NvDz( zVk`A|M8p?_cqg_O-m}-Ig*q!#f#aKnY~DA$j2F+g$;H%P=G=d;T(!_9woSd zizr1I%29zzTtXEt;|i)#gR7`T9j@UzZlE3wXhaj5p}~n3+{7)k;x_K!F4}Mp?Qr2f zI?#zObi)lD58y!$df|l+5AnznYTwv)!E*jrN5}8v;7lY{;;`1zv*DdSJVrkTFo+>M zfgext%nI)eAHK4=Mt=QOME{VgD9WN4cgw0A|F~5AX4)-lT(+{{5BtEE?r+JB%C|n{ zkKjuijs_x8Eo@B2BF%4%z-uEE4H}wf^5xV-AQX#gUL)q4dSULncU-K}^?x?agf7d)y1Amudh5F`bz#{(@*qpiIITjT{3lY*+#_>GqlW+h delta 582 zcmXxdODtSr6u|NOU8B^i#$(iDn5ou#+@W4Y%Z#Das6pNCip4BElDV0y39Awk79wsm zW`TungoT~l4an z=*vR<635HaVWzKs_4Jh>!S$CN#qX zFIwP3E86fG?dZT4Q^=hIXUQ(pZmc?lZ)aj_JMHh@<(zij2|v2<72OD+2fgUSH&Z+B ze;i3%JlI~5L{~tTBxxx!=~45d{e!CHkF0yt{A!2mZgybps$=7J+J3T^>lAD${dzF0 zE81{qJY22~kNzARQhY&ubUdUf;h+}MBM%<+N9FTrvGe(qM>dQ5UI|on%T1@X`>TBU oAG=Sz!*JTfX5^1oEiq5MYO^rhv1XD_y^oR)-KMo&y - Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -10935,7 +10935,7 @@ Create Custom Event Schema - Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -10948,7 +10948,7 @@ Create Metadata Schema - Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -10961,7 +10961,7 @@ Create Metadata Schema - Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11076,7 +11076,7 @@ Delete Custom Event Schema - Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -11089,7 +11089,7 @@ Delete Custom Event Schema - Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -11102,7 +11102,7 @@ Delete Metadata Schema - Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11115,7 +11115,7 @@ Delete Metadata Schema - Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11230,7 +11230,7 @@ Get Custom Event Schema - Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -11243,7 +11243,7 @@ Get Custom Event Schema - Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -11256,7 +11256,7 @@ Get Metadata Schema - Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11269,7 +11269,7 @@ Get Metadata Schema - Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11432,7 +11432,7 @@ List Custom Event Schemas - Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -11444,7 +11444,7 @@ List Custom Event Schemas - Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -11456,7 +11456,7 @@ List Metadata Schemas - Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11468,7 +11468,7 @@ List Metadata Schemas - Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11574,7 +11574,7 @@ Copy Campaign Template to a Project - Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11588,7 +11588,7 @@ Copy Campaign Template to a Project - Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11602,7 +11602,7 @@ List Campaign Templates - Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11619,7 +11619,7 @@ List Campaign Templates - Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11690,7 +11690,7 @@ Update Custom Event Schema - Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -11704,7 +11704,7 @@ Update Custom Event Schema - Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -11718,7 +11718,7 @@ Update Metadata Schema - Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11732,7 +11732,7 @@ Update Metadata Schema - Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11917,7 +11917,7 @@ Create Custom Event Schema - Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -11931,7 +11931,7 @@ Create Custom Event Schema - Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -11945,7 +11945,7 @@ Create Metadata Schema - Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11959,7 +11959,7 @@ Create Metadata Schema - Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -12083,7 +12083,7 @@ Delete Custom Event Schema - Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -12097,7 +12097,7 @@ Delete Custom Event Schema - Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -12111,7 +12111,7 @@ Delete Metadata Schema - Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -12125,7 +12125,7 @@ Delete Metadata Schema - Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -12249,7 +12249,7 @@ Get Custom Event Schema - Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -12263,7 +12263,7 @@ Get Custom Event Schema - Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -12277,7 +12277,7 @@ Get Metadata Schema - Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -12291,7 +12291,7 @@ Get Metadata Schema - Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -12467,7 +12467,7 @@ List Custom Event Schemas - Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -12480,7 +12480,7 @@ List Custom Event Schemas - Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -12493,7 +12493,7 @@ List Metadata Schemas - Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -12506,7 +12506,7 @@ List Metadata Schemas - Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -12621,7 +12621,7 @@ Copy Campaign Template to a Project - Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -12636,7 +12636,7 @@ Copy Campaign Template to a Project - Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -12651,7 +12651,7 @@ List Campaign Templates - Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -12669,7 +12669,7 @@ List Campaign Templates - Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -12745,7 +12745,7 @@ Update Custom Event Schema - Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -12760,7 +12760,7 @@ Update Custom Event Schema - Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -12775,7 +12775,7 @@ Update Metadata Schema - Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -12790,7 +12790,7 @@ Update Metadata Schema - Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13070,7 +13070,7 @@ - Create Custom Event Schema Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Create Custom Event Schema Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13080,7 +13080,7 @@ - Create Custom Event Schema Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Create Custom Event Schema Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13090,7 +13090,7 @@ - Create Custom Event Schema Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Create Custom Event Schema Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13101,7 +13101,7 @@ - Create Custom Event Schema Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Create Custom Event Schema Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13112,7 +13112,7 @@ - Create Metadata Schema Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Create Metadata Schema Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13122,7 +13122,7 @@ - Create Metadata Schema Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Create Metadata Schema Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13132,7 +13132,7 @@ - Create Metadata Schema Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Create Metadata Schema Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13143,7 +13143,7 @@ - Create Metadata Schema Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Create Metadata Schema Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13318,7 +13318,7 @@ - Delete Custom Event Schema Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Delete Custom Event Schema Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13328,7 +13328,7 @@ - Delete Custom Event Schema Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Delete Custom Event Schema Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13338,7 +13338,7 @@ - Delete Custom Event Schema Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Delete Custom Event Schema Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13349,7 +13349,7 @@ - Delete Custom Event Schema Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Delete Custom Event Schema Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13360,7 +13360,7 @@ - Delete Metadata Schema Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Delete Metadata Schema Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13370,7 +13370,7 @@ - Delete Metadata Schema Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Delete Metadata Schema Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13380,7 +13380,7 @@ - Delete Metadata Schema Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Delete Metadata Schema Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13391,7 +13391,7 @@ - Delete Metadata Schema Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Delete Metadata Schema Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13566,7 +13566,7 @@ - Get Custom Event Schema Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Get Custom Event Schema Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13576,7 +13576,7 @@ - Get Custom Event Schema Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Get Custom Event Schema Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13586,7 +13586,7 @@ - Get Custom Event Schema Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Get Custom Event Schema Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13597,7 +13597,7 @@ - Get Custom Event Schema Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Get Custom Event Schema Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13608,7 +13608,7 @@ - Get Metadata Schema Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Get Metadata Schema Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13618,7 +13618,7 @@ - Get Metadata Schema Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Get Metadata Schema Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13628,7 +13628,7 @@ - Get Metadata Schema Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Get Metadata Schema Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13639,7 +13639,7 @@ - Get Metadata Schema Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Get Metadata Schema Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13890,7 +13890,7 @@ - List Custom Event Schemas Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + List Custom Event Schemas Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13899,7 +13899,7 @@ - List Custom Event Schemas Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + List Custom Event Schemas Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13908,7 +13908,7 @@ - List Custom Event Schemas Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + List Custom Event Schemas Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13918,7 +13918,7 @@ - List Custom Event Schemas Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + List Custom Event Schemas Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13928,7 +13928,7 @@ - List Metadata Schemas Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + List Metadata Schemas Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13937,7 +13937,7 @@ - List Metadata Schemas Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + List Metadata Schemas Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13946,7 +13946,7 @@ - List Metadata Schemas Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + List Metadata Schemas Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13956,7 +13956,7 @@ - List Metadata Schemas Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + List Metadata Schemas Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -14114,7 +14114,7 @@ - Copy Campaign Template to a Project Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Copy Campaign Template to a Project Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -14125,7 +14125,7 @@ - Copy Campaign Template to a Project Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Copy Campaign Template to a Project Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -14136,7 +14136,7 @@ - Copy Campaign Template to a Project Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Copy Campaign Template to a Project Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -14148,7 +14148,7 @@ - Copy Campaign Template to a Project Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Copy Campaign Template to a Project Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -14160,7 +14160,7 @@ - List Campaign Templates Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + List Campaign Templates Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -14174,7 +14174,7 @@ - List Campaign Templates Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + List Campaign Templates Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -14188,7 +14188,7 @@ - List Campaign Templates Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + List Campaign Templates Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -14203,7 +14203,7 @@ - List Campaign Templates Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + List Campaign Templates Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -14306,7 +14306,7 @@ - Update Custom Event Schema Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Update Custom Event Schema Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -14317,7 +14317,7 @@ - Update Custom Event Schema Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Update Custom Event Schema Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -14328,7 +14328,7 @@ - Update Custom Event Schema Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Update Custom Event Schema Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -14340,7 +14340,7 @@ - Update Custom Event Schema Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Update Custom Event Schema Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -14352,7 +14352,7 @@ - Update Metadata Schema Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Update Metadata Schema Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -14363,7 +14363,7 @@ - Update Metadata Schema Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Update Metadata Schema Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -14374,7 +14374,7 @@ - Update Metadata Schema Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Update Metadata Schema Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -14386,7 +14386,7 @@ - Update Metadata Schema Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Update Metadata Schema Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -14586,7 +14586,7 @@ Get Metadata Schema - Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. + Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. Thrown when fails to make API call There is an infinite number of possibilities for retrieving metadata schemas by the resource type because you can define custom metadata schemas. @@ -14598,7 +14598,7 @@ Get Metadata Schema - Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. + Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. Thrown when fails to make API call There is an infinite number of possibilities for retrieving metadata schemas by the resource type because you can define custom metadata schemas. @@ -14637,7 +14637,7 @@ Get Metadata Schema - Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. + Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. Thrown when fails to make API call There is an infinite number of possibilities for retrieving metadata schemas by the resource type because you can define custom metadata schemas. @@ -14650,7 +14650,7 @@ Get Metadata Schema - Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. + Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. Thrown when fails to make API call There is an infinite number of possibilities for retrieving metadata schemas by the resource type because you can define custom metadata schemas. @@ -14750,7 +14750,7 @@ - Get Metadata Schema Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. + Get Metadata Schema Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. Thrown when fails to make API call There is an infinite number of possibilities for retrieving metadata schemas by the resource type because you can define custom metadata schemas. @@ -14759,7 +14759,7 @@ - Get Metadata Schema Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. + Get Metadata Schema Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. Thrown when fails to make API call There is an infinite number of possibilities for retrieving metadata schemas by the resource type because you can define custom metadata schemas. @@ -14768,7 +14768,7 @@ - Get Metadata Schema Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. + Get Metadata Schema Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. Thrown when fails to make API call There is an infinite number of possibilities for retrieving metadata schemas by the resource type because you can define custom metadata schemas. @@ -14778,7 +14778,7 @@ - Get Metadata Schema Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. + Get Metadata Schema Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. Thrown when fails to make API call There is an infinite number of possibilities for retrieving metadata schemas by the resource type because you can define custom metadata schemas. @@ -14834,7 +14834,7 @@ Thrown when fails to make API call Gives an access token outside of the context of a user. (optional) - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) Index associated with the operation. OAuthTokenGenerateResponseBody @@ -14847,7 +14847,7 @@ Thrown when fails to make API call Gives an access token outside of the context of a user. (optional) - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) Index associated with the operation. ApiResponse of OAuthTokenGenerateResponseBody @@ -14913,7 +14913,7 @@ Thrown when fails to make API call Gives an access token outside of the context of a user. (optional) - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) Index associated with the operation. Cancellation Token to cancel the request. Task of OAuthTokenGenerateResponseBody @@ -14927,7 +14927,7 @@ Thrown when fails to make API call Gives an access token outside of the context of a user. (optional) - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) Index associated with the operation. Cancellation Token to cancel the request. Task of ApiResponse (OAuthTokenGenerateResponseBody) @@ -15056,7 +15056,7 @@ Thrown when fails to make API call Gives an access token outside of the context of a user. (optional) - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) Index associated with the operation. OAuthTokenGenerateResponseBody @@ -15066,7 +15066,7 @@ Thrown when fails to make API call Gives an access token outside of the context of a user. (optional) - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) Index associated with the operation. ApiResponse of OAuthTokenGenerateResponseBody @@ -15076,7 +15076,7 @@ Thrown when fails to make API call Gives an access token outside of the context of a user. (optional) - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) Index associated with the operation. Cancellation Token to cancel the request. Task of OAuthTokenGenerateResponseBody @@ -15087,7 +15087,7 @@ Thrown when fails to make API call Gives an access token outside of the context of a user. (optional) - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) Index associated with the operation. Cancellation Token to cancel the request. Task of ApiResponse (OAuthTokenGenerateResponseBody) @@ -16522,7 +16522,7 @@ Import Products using CSV - Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 norms**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). + Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - 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 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - 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). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). Thrown when fails to make API call File path. (optional) @@ -16534,7 +16534,7 @@ Import Products using CSV - Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 norms**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). + Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - 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 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - 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). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). Thrown when fails to make API call File path. (optional) @@ -16907,7 +16907,7 @@ Import Products using CSV - Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 norms**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). + Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - 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 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - 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). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). Thrown when fails to make API call File path. (optional) @@ -16920,7 +16920,7 @@ Import Products using CSV - Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 norms**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). + Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - 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 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - 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). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). Thrown when fails to make API call File path. (optional) @@ -17446,7 +17446,7 @@ - Import Products using CSV Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 norms**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). + Import Products using CSV Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - 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 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - 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). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). Thrown when fails to make API call File path. (optional) @@ -17455,7 +17455,7 @@ - Import Products using CSV Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 norms**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). + Import Products using CSV Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - 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 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - 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). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). Thrown when fails to make API call File path. (optional) @@ -17464,7 +17464,7 @@ - Import Products using CSV Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 norms**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). + Import Products using CSV Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - 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 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - 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). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). Thrown when fails to make API call File path. (optional) @@ -17474,7 +17474,7 @@ - Import Products using CSV Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 norms**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). + Import Products using CSV Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - 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 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - 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). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). Thrown when fails to make API call File path. (optional) @@ -19944,7 +19944,7 @@ Redeem Stackable Discounts - # How API returns calculated discounts and order amounts in the response In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. + In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. Thrown when fails to make API call @@ -19956,7 +19956,7 @@ Redeem Stackable Discounts - # How API returns calculated discounts and order amounts in the response In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. + In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. Thrown when fails to make API call @@ -20125,7 +20125,7 @@ Redeem Stackable Discounts - # How API returns calculated discounts and order amounts in the response In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. + In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. Thrown when fails to make API call @@ -20138,7 +20138,7 @@ Redeem Stackable Discounts - # How API returns calculated discounts and order amounts in the response In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. + In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. Thrown when fails to make API call @@ -20420,7 +20420,7 @@ - Redeem Stackable Discounts # How API returns calculated discounts and order amounts in the response In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. + Redeem Stackable Discounts In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. Thrown when fails to make API call @@ -20429,7 +20429,7 @@ - Redeem Stackable Discounts # How API returns calculated discounts and order amounts in the response In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. + Redeem Stackable Discounts In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. Thrown when fails to make API call @@ -20438,7 +20438,7 @@ - Redeem Stackable Discounts # How API returns calculated discounts and order amounts in the response In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. + Redeem Stackable Discounts In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. Thrown when fails to make API call @@ -20448,7 +20448,7 @@ - Redeem Stackable Discounts # How API returns calculated discounts and order amounts in the response In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. + Redeem Stackable Discounts In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. Thrown when fails to make API call @@ -22666,7 +22666,7 @@ Add Promotion Tier From Template - Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22679,7 +22679,7 @@ Add Promotion Tier From Template - Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22692,7 +22692,7 @@ Create Campaign From Template - Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22705,7 +22705,7 @@ Create Campaign From Template - Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22718,7 +22718,7 @@ Create Campaign Template - Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide details for a campaign template @@ -22730,7 +22730,7 @@ Create Campaign Template - Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide details for a campaign template @@ -22742,7 +22742,7 @@ Delete Campaign Template - Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22754,7 +22754,7 @@ Delete Campaign Template - Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22766,7 +22766,7 @@ Get Campaign Template - Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22778,7 +22778,7 @@ Get Campaign Template - Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22790,7 +22790,7 @@ List Campaign Templates - Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Limits the number of objects to be returned. The limit can range between 1 and 100 items. If no limit is set, it returns 10 items. (optional) @@ -22806,7 +22806,7 @@ List Campaign Templates - Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Limits the number of objects to be returned. The limit can range between 1 and 100 items. If no limit is set, it returns 10 items. (optional) @@ -22822,7 +22822,7 @@ Update Campaign Template - Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22835,7 +22835,7 @@ Update Campaign Template - Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22853,7 +22853,7 @@ Add Promotion Tier From Template - Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22867,7 +22867,7 @@ Add Promotion Tier From Template - Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22881,7 +22881,7 @@ Create Campaign From Template - Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22895,7 +22895,7 @@ Create Campaign From Template - Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22909,7 +22909,7 @@ Create Campaign Template - Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide details for a campaign template @@ -22922,7 +22922,7 @@ Create Campaign Template - Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide details for a campaign template @@ -22935,7 +22935,7 @@ Delete Campaign Template - Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22948,7 +22948,7 @@ Delete Campaign Template - Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22961,7 +22961,7 @@ Get Campaign Template - Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22974,7 +22974,7 @@ Get Campaign Template - Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22987,7 +22987,7 @@ List Campaign Templates - Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Limits the number of objects to be returned. The limit can range between 1 and 100 items. If no limit is set, it returns 10 items. (optional) @@ -23004,7 +23004,7 @@ List Campaign Templates - Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Limits the number of objects to be returned. The limit can range between 1 and 100 items. If no limit is set, it returns 10 items. (optional) @@ -23021,7 +23021,7 @@ Update Campaign Template - Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23035,7 +23035,7 @@ Update Campaign Template - Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23112,7 +23112,7 @@ - Add Promotion Tier From Template Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Add Promotion Tier From Template Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23122,7 +23122,7 @@ - Add Promotion Tier From Template Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Add Promotion Tier From Template Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23132,7 +23132,7 @@ - Add Promotion Tier From Template Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Add Promotion Tier From Template Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23143,7 +23143,7 @@ - Add Promotion Tier From Template Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Add Promotion Tier From Template Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23154,7 +23154,7 @@ - Create Campaign From Template Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Create Campaign From Template Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23164,7 +23164,7 @@ - Create Campaign From Template Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Create Campaign From Template Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23174,7 +23174,7 @@ - Create Campaign From Template Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Create Campaign From Template Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23185,7 +23185,7 @@ - Create Campaign From Template Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Create Campaign From Template Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23196,7 +23196,7 @@ - Create Campaign Template Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Create Campaign Template Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide details for a campaign template @@ -23205,7 +23205,7 @@ - Create Campaign Template Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Create Campaign Template Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide details for a campaign template @@ -23214,7 +23214,7 @@ - Create Campaign Template Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Create Campaign Template Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide details for a campaign template @@ -23224,7 +23224,7 @@ - Create Campaign Template Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Create Campaign Template Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide details for a campaign template @@ -23234,7 +23234,7 @@ - Delete Campaign Template Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Delete Campaign Template Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23243,7 +23243,7 @@ - Delete Campaign Template Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Delete Campaign Template Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23252,7 +23252,7 @@ - Delete Campaign Template Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Delete Campaign Template Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23262,7 +23262,7 @@ - Delete Campaign Template Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Delete Campaign Template Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23272,7 +23272,7 @@ - Get Campaign Template Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Get Campaign Template Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23281,7 +23281,7 @@ - Get Campaign Template Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Get Campaign Template Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23290,7 +23290,7 @@ - Get Campaign Template Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Get Campaign Template Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23300,7 +23300,7 @@ - Get Campaign Template Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Get Campaign Template Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23310,7 +23310,7 @@ - List Campaign Templates Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + List Campaign Templates Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Limits the number of objects to be returned. The limit can range between 1 and 100 items. If no limit is set, it returns 10 items. (optional) @@ -23323,7 +23323,7 @@ - List Campaign Templates Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + List Campaign Templates Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Limits the number of objects to be returned. The limit can range between 1 and 100 items. If no limit is set, it returns 10 items. (optional) @@ -23336,7 +23336,7 @@ - List Campaign Templates Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + List Campaign Templates Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Limits the number of objects to be returned. The limit can range between 1 and 100 items. If no limit is set, it returns 10 items. (optional) @@ -23350,7 +23350,7 @@ - List Campaign Templates Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + List Campaign Templates Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Limits the number of objects to be returned. The limit can range between 1 and 100 items. If no limit is set, it returns 10 items. (optional) @@ -23364,7 +23364,7 @@ - Update Campaign Template Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Update Campaign Template Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23374,7 +23374,7 @@ - Update Campaign Template Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Update Campaign Template Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23384,7 +23384,7 @@ - Update Campaign Template Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Update Campaign Template Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23395,7 +23395,7 @@ - Update Campaign Template Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Update Campaign Template Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23442,7 +23442,7 @@ Create Validation Rules - Create a validation rule. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Create a validation rule. 🚧 Managing validation rules 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. Thrown when fails to make API call Specify the validation rules parameters. @@ -23454,7 +23454,7 @@ Create Validation Rules - Create a validation rule. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Create a validation rule. 🚧 Managing validation rules 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. Thrown when fails to make API call Specify the validation rules parameters. @@ -23634,7 +23634,7 @@ Update Validation Rule - Update validation rule parameters. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Update validation rule parameters. 🚧 Managing validation rules 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. Thrown when fails to make API call A unique validation rule ID. @@ -23647,7 +23647,7 @@ Update Validation Rule - Update validation rule parameters. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Update validation rule parameters. 🚧 Managing validation rules 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. Thrown when fails to make API call A unique validation rule ID. @@ -23695,7 +23695,7 @@ Create Validation Rules - Create a validation rule. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Create a validation rule. 🚧 Managing validation rules 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. Thrown when fails to make API call Specify the validation rules parameters. @@ -23708,7 +23708,7 @@ Create Validation Rules - Create a validation rule. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Create a validation rule. 🚧 Managing validation rules 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. Thrown when fails to make API call Specify the validation rules parameters. @@ -23901,7 +23901,7 @@ Update Validation Rule - Update validation rule parameters. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Update validation rule parameters. 🚧 Managing validation rules 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. Thrown when fails to make API call A unique validation rule ID. @@ -23915,7 +23915,7 @@ Update Validation Rule - Update validation rule parameters. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Update validation rule parameters. 🚧 Managing validation rules 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. Thrown when fails to make API call A unique validation rule ID. @@ -24038,7 +24038,7 @@ - Create Validation Rules Create a validation rule. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Create Validation Rules Create a validation rule. 🚧 Managing validation rules 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. Thrown when fails to make API call Specify the validation rules parameters. @@ -24047,7 +24047,7 @@ - Create Validation Rules Create a validation rule. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Create Validation Rules Create a validation rule. 🚧 Managing validation rules 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. Thrown when fails to make API call Specify the validation rules parameters. @@ -24056,7 +24056,7 @@ - Create Validation Rules Create a validation rule. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Create Validation Rules Create a validation rule. 🚧 Managing validation rules 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. Thrown when fails to make API call Specify the validation rules parameters. @@ -24066,7 +24066,7 @@ - Create Validation Rules Create a validation rule. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Create Validation Rules Create a validation rule. 🚧 Managing validation rules 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. Thrown when fails to make API call Specify the validation rules parameters. @@ -24352,7 +24352,7 @@ - Update Validation Rule Update validation rule parameters. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Update Validation Rule Update validation rule parameters. 🚧 Managing validation rules 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. Thrown when fails to make API call A unique validation rule ID. @@ -24362,7 +24362,7 @@ - Update Validation Rule Update validation rule parameters. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Update Validation Rule Update validation rule parameters. 🚧 Managing validation rules 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. Thrown when fails to make API call A unique validation rule ID. @@ -24372,7 +24372,7 @@ - Update Validation Rule Update validation rule parameters. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Update Validation Rule Update validation rule parameters. 🚧 Managing validation rules 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. Thrown when fails to make API call A unique validation rule ID. @@ -24383,7 +24383,7 @@ - Update Validation Rule Update validation rule parameters. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Update Validation Rule Update validation rule parameters. 🚧 Managing validation rules 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. Thrown when fails to make API call A unique validation rule ID. @@ -24740,7 +24740,7 @@ Import Vouchers - Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 norms. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. + Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. Thrown when fails to make API call The request body is an array of objects. Each object contains details about a specific voucher. @@ -24752,7 +24752,7 @@ Import Vouchers - Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 norms. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. + Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. Thrown when fails to make API call The request body is an array of objects. Each object contains details about a specific voucher. @@ -24834,7 +24834,7 @@ Sorts the results using one of the filtering options, where the dash - preceding a sorting option means sorting in a descending order. (optional) (optional) (optional) - Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. (optional) + Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. Note that **Try-it!** adds the opening [ and closing ] square brackets on its own, so paste your filter without them, for example expiration_date][conditions][$before. (optional) Index associated with the operation. VouchersListResponseBody @@ -24857,7 +24857,7 @@ Sorts the results using one of the filtering options, where the dash - preceding a sorting option means sorting in a descending order. (optional) (optional) (optional) - Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. (optional) + Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. Note that **Try-it!** adds the opening [ and closing ] square brackets on its own, so paste your filter without them, for example expiration_date][conditions][$before. (optional) Index associated with the operation. ApiResponse of VouchersListResponseBody @@ -25185,7 +25185,7 @@ Import Vouchers - Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 norms. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. + Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. Thrown when fails to make API call The request body is an array of objects. Each object contains details about a specific voucher. @@ -25198,7 +25198,7 @@ Import Vouchers - Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 norms. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. + Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. Thrown when fails to make API call The request body is an array of objects. Each object contains details about a specific voucher. @@ -25285,7 +25285,7 @@ Sorts the results using one of the filtering options, where the dash - preceding a sorting option means sorting in a descending order. (optional) (optional) (optional) - Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. (optional) + Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. Note that **Try-it!** adds the opening [ and closing ] square brackets on its own, so paste your filter without them, for example expiration_date][conditions][$before. (optional) Index associated with the operation. Cancellation Token to cancel the request. Task of VouchersListResponseBody @@ -25309,7 +25309,7 @@ Sorts the results using one of the filtering options, where the dash - preceding a sorting option means sorting in a descending order. (optional) (optional) (optional) - Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. (optional) + Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. Note that **Try-it!** adds the opening [ and closing ] square brackets on its own, so paste your filter without them, for example expiration_date][conditions][$before. (optional) Index associated with the operation. Cancellation Token to cancel the request. Task of ApiResponse (VouchersListResponseBody) @@ -25796,7 +25796,7 @@ - Import Vouchers Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 norms. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. + Import Vouchers Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. Thrown when fails to make API call The request body is an array of objects. Each object contains details about a specific voucher. @@ -25805,7 +25805,7 @@ - Import Vouchers Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 norms. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. + Import Vouchers Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. Thrown when fails to make API call The request body is an array of objects. Each object contains details about a specific voucher. @@ -25814,7 +25814,7 @@ - Import Vouchers Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 norms. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. + Import Vouchers Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. Thrown when fails to make API call The request body is an array of objects. Each object contains details about a specific voucher. @@ -25824,7 +25824,7 @@ - Import Vouchers Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 norms. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. + Import Vouchers Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. Thrown when fails to make API call The request body is an array of objects. Each object contains details about a specific voucher. @@ -25940,7 +25940,7 @@ Sorts the results using one of the filtering options, where the dash - preceding a sorting option means sorting in a descending order. (optional) (optional) (optional) - Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. (optional) + Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. Note that **Try-it!** adds the opening [ and closing ] square brackets on its own, so paste your filter without them, for example expiration_date][conditions][$before. (optional) Index associated with the operation. VouchersListResponseBody @@ -25960,7 +25960,7 @@ Sorts the results using one of the filtering options, where the dash - preceding a sorting option means sorting in a descending order. (optional) (optional) (optional) - Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. (optional) + Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. Note that **Try-it!** adds the opening [ and closing ] square brackets on its own, so paste your filter without them, for example expiration_date][conditions][$before. (optional) Index associated with the operation. ApiResponse of VouchersListResponseBody @@ -25980,7 +25980,7 @@ Sorts the results using one of the filtering options, where the dash - preceding a sorting option means sorting in a descending order. (optional) (optional) (optional) - Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. (optional) + Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. Note that **Try-it!** adds the opening [ and closing ] square brackets on its own, so paste your filter without them, for example expiration_date][conditions][$before. (optional) Index associated with the operation. Cancellation Token to cancel the request. Task of VouchersListResponseBody @@ -26001,7 +26001,7 @@ Sorts the results using one of the filtering options, where the dash - preceding a sorting option means sorting in a descending order. (optional) (optional) (optional) - Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. (optional) + Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. Note that **Try-it!** adds the opening [ and closing ] square brackets on its own, so paste your filter without them, for example expiration_date][conditions][$before. (optional) Index associated with the operation. Cancellation Token to cancel the request. Task of ApiResponse (VouchersListResponseBody) @@ -39754,7 +39754,7 @@ Defines the scenario Voucherify should consider during the qualification process. - `ALL` - Scenario that returns all redeemables available for the customer in one API request. This scenario is used by default when no value is selected. - `CUSTOMER_WALLET` - returns vouchers applicable to the customer's cart based on the vouchers assigned to the customer's profile. - `AUDIENCE_ONLY` - returns all vouchers, promotion tiers, and campaigns available to the customer. Voucherify validates the rules based on the customer profile only. - `PRODUCTS` - returns all promotions available for the products (when a discount is defined to be applied to the item or when the item is required in the validation rule). - `PRODUCTS_DISCOUNT` - returns all promotions available for products when a discount is defined as applicable to specific item(s). - `PROMOTION_STACKS` - returns the applicable promotion stacks. - `PRODUCTS_BY_CUSTOMER` - returns all promotions available for a customer for the products (when a discount is defined to be applied to the item or when the item is required in the validation rule). - `PRODUCTS_DISCOUNT_BY_CUSTOMER` - returns all promotions available for a customer for products when a discount is defined as applicable to specific item(s).. options. session. - A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard; in the _Advanced Rule Builder_ &rarr; _Advanced_ &rarr; _Redemption metadata satisfy_ or _Basic Builder_ &rarr; _Attributes match_ &rarr; _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule).. + A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules) in the the Dashboard.. @@ -39814,9 +39814,9 @@ - A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard; in the _Advanced Rule Builder_ &rarr; _Advanced_ &rarr; _Redemption metadata satisfy_ or _Basic Builder_ &rarr; _Attributes match_ &rarr; _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule). + A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules) in the the Dashboard. - A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard; in the _Advanced Rule Builder_ &rarr; _Advanced_ &rarr; _Redemption metadata satisfy_ or _Basic Builder_ &rarr; _Attributes match_ &rarr; _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule). + A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules) in the the Dashboard. @@ -77527,7 +77527,7 @@ reward. order. - A set of key/value pairs that you can send in the request body to check against vouchers requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard; in the _Advanced Rule Builder_ &rarr; _Advanced_ &rarr; _Redemption metadata satisfy_ or _Basic Builder_ &rarr; _Attributes match_ &rarr; _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule).. + A set of key/value pairs that you can send in the request body to check against vouchers requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules) in the the Dashboard.. @@ -77553,9 +77553,9 @@ - A set of key/value pairs that you can send in the request body to check against vouchers requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard; in the _Advanced Rule Builder_ &rarr; _Advanced_ &rarr; _Redemption metadata satisfy_ or _Basic Builder_ &rarr; _Attributes match_ &rarr; _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule). + A set of key/value pairs that you can send in the request body to check against vouchers requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules) in the the Dashboard. - A set of key/value pairs that you can send in the request body to check against vouchers requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard; in the _Advanced Rule Builder_ &rarr; _Advanced_ &rarr; _Redemption metadata satisfy_ or _Basic Builder_ &rarr; _Attributes match_ &rarr; _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule). + A set of key/value pairs that you can send in the request body to check against vouchers requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules) in the the Dashboard. @@ -117253,7 +117253,7 @@ Unique client identifier, assigned by Voucherify, for OAuth.. Timestamp in seconds in the Unix format indicating when the token expires.. Number of seconds left until the token expires.. - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`.. + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`.. Type of the token. Use the value as the header prefix for authorization.. @@ -117306,9 +117306,9 @@ - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. @@ -117371,7 +117371,7 @@ Unique client identifier, assigned by Voucherify, for OAuth.. Timestamp in seconds in the Unix format indicating when the token expires.. Number of seconds left until the token expires.. - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`.. + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`.. Type of the token. Use the value as the header prefix for authorization.. Determines if the token is active. Nonexistent tokens are also marked as inactive.. @@ -117425,9 +117425,9 @@ - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. @@ -117514,7 +117514,7 @@ Initializes a new instance of the class. Unique ID assigned by Voucherify of an existing order that will be linked to the redemption of this request.. - Unique source ID of an existing order that will be linked to the redemption of this request.. + Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request.. The order status.. A positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the total amount of the order. This is the sum of the order items' amounts.. A positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the total amount of the order. This is the sum of the order items' amounts.. @@ -117536,9 +117536,9 @@ - Unique source ID of an existing order that will be linked to the redemption of this request. + Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request. - Unique source ID of an existing order that will be linked to the redemption of this request. + Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request. @@ -119122,7 +119122,7 @@ Initializes a new instance of the class. Unique ID assigned by Voucherify of an existing order that will be linked to the redemption of this request.. - Unique source ID of an existing order that will be linked to the redemption of this request.. + Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request.. The order status.. A positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the total amount of the order. This is the sum of the order items' amounts.. A positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the total amount of the order. This is the sum of the order items' amounts.. @@ -119148,9 +119148,9 @@ - Unique source ID of an existing order that will be linked to the redemption of this request. + Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request. - Unique source ID of an existing order that will be linked to the redemption of this request. + Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request. @@ -120382,7 +120382,7 @@ Initializes a new instance of the class. Unique ID assigned by Voucherify of an existing order that will be linked to the redemption of this request.. - Unique source ID of an existing order that will be linked to the redemption of this request.. + Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request.. The order status.. A positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the total amount of the order. This is the sum of the order items' amounts.. A positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the total amount of the order. This is the sum of the order items' amounts.. @@ -120407,9 +120407,9 @@ - Unique source ID of an existing order that will be linked to the redemption of this request. + Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request. - Unique source ID of an existing order that will be linked to the redemption of this request. + Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request. @@ -121071,7 +121071,7 @@ Initializes a new instance of the class. - Unique source ID of an existing order that will be linked to the redemption of this request.. + Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request.. The order status.. A positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the total amount of the order. This is the sum of the order items' amounts.. A positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the total amount of the order. This is the sum of the order items' amounts.. @@ -121085,9 +121085,9 @@ - Unique source ID of an existing order that will be linked to the redemption of this request. + Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request. - Unique source ID of an existing order that will be linked to the redemption of this request. + Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request. @@ -139717,7 +139717,7 @@ Defines the scenario Voucherify should consider during the qualification process. - `ALL` - Scenario that returns all redeemables available for the customer in one API request. This scenario is used by default when no value is selected. - `CUSTOMER_WALLET` - returns vouchers applicable to the customer's cart based on the vouchers assigned to the customer's profile. - `AUDIENCE_ONLY` - returns all vouchers, promotion tiers, and campaigns available to the customer. Voucherify validates the rules based on the customer profile only. - `PRODUCTS` - returns all promotions available for the products (when a discount is defined to be applied to the item or when the item is required in the validation rule). - `PRODUCTS_DISCOUNT` - returns all promotions available for products when a discount is defined as applicable to specific item(s). - `PROMOTION_STACKS` - returns the applicable promotion stacks. - `PRODUCTS_BY_CUSTOMER` - returns all promotions available for a customer for the products (when a discount is defined to be applied to the item or when the item is required in the validation rule). - `PRODUCTS_DISCOUNT_BY_CUSTOMER` - returns all promotions available for a customer for products when a discount is defined as applicable to specific item(s).. options. session. - A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard; in the _Advanced Rule Builder_ &rarr; _Advanced_ &rarr; _Redemption metadata satisfy_ or _Basic Builder_ &rarr; _Attributes match_ &rarr; _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule).. + A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules) in the the Dashboard.. @@ -139777,9 +139777,9 @@ - A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard; in the _Advanced Rule Builder_ &rarr; _Advanced_ &rarr; _Redemption metadata satisfy_ or _Basic Builder_ &rarr; _Attributes match_ &rarr; _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule). + A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules) in the the Dashboard. - A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard; in the _Advanced Rule Builder_ &rarr; _Advanced_ &rarr; _Redemption metadata satisfy_ or _Basic Builder_ &rarr; _Attributes match_ &rarr; _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule). + A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules) in the the Dashboard. diff --git a/lib/netstandard2.1/Voucherify.dll b/lib/netstandard2.1/Voucherify.dll index 7db207b1520cac78ce65eb17b13f454a42820c8a..41817d762c615c13db6716b9e12c624e7a10e26b 100644 GIT binary patch delta 594 zcmXxdJ4{n?6vy%Z{}xI?3k3upfGq-w*vl;sABZR|g;o%`JbK-Dro#oLgqFk*6R8@@ z;9#Yp8`6iuv zCeoHg-TSR8W&K5T3o~>T*ejD zp&kvm3O77x#5FXb87;Vu8)(H%wBZ)KP|*$zK6IcHUFgPb+`(PkLl5qw7Z1>fhj@g3 z_z}PWf*8aQLI~qAhApX#)E&8!2af#Ek6h@>@5QgWbE-7uEsWp^M)4G5&@qk)Ok&FN z79xKao$GogFXX7M2qCt!s^4%I+h+}7&yM?zrrznQ%;Bv2XzcUOpV0T+uAh=CEfSBe z#1zZ<@l1R1!D_qFQUtdxE3-K;kEf}&TmY2o(0S_p9Szv?Xhha)b3Ym z{?khQd`cjlP&vtF~1Wqt&`={do}7wg!m`NfUc1LZcp3 z@ZiHjpx_@M6g-GL!CQOrAU(OzOHVy2dMFBl;5VQHpP6BpVZz`3s9~%w#f)0EPW2V5 z_@ZwNiIO!TzKZbL9C>&_sEa}sh*lF~5Q{j(BLVkt9}kd-B$$zm6r>^z>3E1o$Ur8t zU_mx=V8vtPA`kf}z!MbWDT+{x5|rW@%1{m)Do_axc2vOuC!V7kHF$wq)S(_P@d~fe zfJQXI1vi@EK?_>(25o4^TSKTFIR`027VF;0@2VEvIk|DUdvUR7JL*6uy3mat^r8>_ z7{EKjb~N~ZGUz^XJdR0YHRwETInHQ^!NkxhDxnyDW&aVmEr*YZ6{o&f|Jp8yX z*wO|=-e5=z`1~`$%7Aa`^YnYo;|)#C_ybzd8}NrBn=U!xxIO)QcN%>(JL*{fY5IQr uV|v-s6a8` - Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -10935,7 +10935,7 @@ Create Custom Event Schema - Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -10948,7 +10948,7 @@ Create Metadata Schema - Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -10961,7 +10961,7 @@ Create Metadata Schema - Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11076,7 +11076,7 @@ Delete Custom Event Schema - Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -11089,7 +11089,7 @@ Delete Custom Event Schema - Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -11102,7 +11102,7 @@ Delete Metadata Schema - Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11115,7 +11115,7 @@ Delete Metadata Schema - Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11230,7 +11230,7 @@ Get Custom Event Schema - Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -11243,7 +11243,7 @@ Get Custom Event Schema - Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -11256,7 +11256,7 @@ Get Metadata Schema - Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11269,7 +11269,7 @@ Get Metadata Schema - Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11432,7 +11432,7 @@ List Custom Event Schemas - Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -11444,7 +11444,7 @@ List Custom Event Schemas - Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -11456,7 +11456,7 @@ List Metadata Schemas - Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11468,7 +11468,7 @@ List Metadata Schemas - Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11574,7 +11574,7 @@ Copy Campaign Template to a Project - Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11588,7 +11588,7 @@ Copy Campaign Template to a Project - Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11602,7 +11602,7 @@ List Campaign Templates - Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11619,7 +11619,7 @@ List Campaign Templates - Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11690,7 +11690,7 @@ Update Custom Event Schema - Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -11704,7 +11704,7 @@ Update Custom Event Schema - Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -11718,7 +11718,7 @@ Update Metadata Schema - Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11732,7 +11732,7 @@ Update Metadata Schema - Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11917,7 +11917,7 @@ Create Custom Event Schema - Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -11931,7 +11931,7 @@ Create Custom Event Schema - Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -11945,7 +11945,7 @@ Create Metadata Schema - Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -11959,7 +11959,7 @@ Create Metadata Schema - Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -12083,7 +12083,7 @@ Delete Custom Event Schema - Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -12097,7 +12097,7 @@ Delete Custom Event Schema - Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -12111,7 +12111,7 @@ Delete Metadata Schema - Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -12125,7 +12125,7 @@ Delete Metadata Schema - Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -12249,7 +12249,7 @@ Get Custom Event Schema - Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -12263,7 +12263,7 @@ Get Custom Event Schema - Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -12277,7 +12277,7 @@ Get Metadata Schema - Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -12291,7 +12291,7 @@ Get Metadata Schema - Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -12467,7 +12467,7 @@ List Custom Event Schemas - Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -12480,7 +12480,7 @@ List Custom Event Schemas - Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -12493,7 +12493,7 @@ List Metadata Schemas - Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -12506,7 +12506,7 @@ List Metadata Schemas - Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -12621,7 +12621,7 @@ Copy Campaign Template to a Project - Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -12636,7 +12636,7 @@ Copy Campaign Template to a Project - Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -12651,7 +12651,7 @@ List Campaign Templates - Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -12669,7 +12669,7 @@ List Campaign Templates - Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -12745,7 +12745,7 @@ Update Custom Event Schema - Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -12760,7 +12760,7 @@ Update Custom Event Schema - Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -12775,7 +12775,7 @@ Update Metadata Schema - Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -12790,7 +12790,7 @@ Update Metadata Schema - Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13070,7 +13070,7 @@ - Create Custom Event Schema Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Create Custom Event Schema Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13080,7 +13080,7 @@ - Create Custom Event Schema Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Create Custom Event Schema Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13090,7 +13090,7 @@ - Create Custom Event Schema Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Create Custom Event Schema Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13101,7 +13101,7 @@ - Create Custom Event Schema Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Create Custom Event Schema Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13112,7 +13112,7 @@ - Create Metadata Schema Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Create Metadata Schema Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13122,7 +13122,7 @@ - Create Metadata Schema Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Create Metadata Schema Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13132,7 +13132,7 @@ - Create Metadata Schema Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Create Metadata Schema Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13143,7 +13143,7 @@ - Create Metadata Schema Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Create Metadata Schema Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13318,7 +13318,7 @@ - Delete Custom Event Schema Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Delete Custom Event Schema Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13328,7 +13328,7 @@ - Delete Custom Event Schema Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Delete Custom Event Schema Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13338,7 +13338,7 @@ - Delete Custom Event Schema Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Delete Custom Event Schema Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13349,7 +13349,7 @@ - Delete Custom Event Schema Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Delete Custom Event Schema Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13360,7 +13360,7 @@ - Delete Metadata Schema Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Delete Metadata Schema Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13370,7 +13370,7 @@ - Delete Metadata Schema Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Delete Metadata Schema Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13380,7 +13380,7 @@ - Delete Metadata Schema Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Delete Metadata Schema Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13391,7 +13391,7 @@ - Delete Metadata Schema Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Delete Metadata Schema Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13566,7 +13566,7 @@ - Get Custom Event Schema Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Get Custom Event Schema Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13576,7 +13576,7 @@ - Get Custom Event Schema Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Get Custom Event Schema Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13586,7 +13586,7 @@ - Get Custom Event Schema Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Get Custom Event Schema Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13597,7 +13597,7 @@ - Get Custom Event Schema Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Get Custom Event Schema Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13608,7 +13608,7 @@ - Get Metadata Schema Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Get Metadata Schema Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13618,7 +13618,7 @@ - Get Metadata Schema Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Get Metadata Schema Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13628,7 +13628,7 @@ - Get Metadata Schema Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Get Metadata Schema Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13639,7 +13639,7 @@ - Get Metadata Schema Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Get Metadata Schema Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13890,7 +13890,7 @@ - List Custom Event Schemas Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + List Custom Event Schemas Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13899,7 +13899,7 @@ - List Custom Event Schemas Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + List Custom Event Schemas Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13908,7 +13908,7 @@ - List Custom Event Schemas Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + List Custom Event Schemas Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13918,7 +13918,7 @@ - List Custom Event Schemas Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + List Custom Event Schemas Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -13928,7 +13928,7 @@ - List Metadata Schemas Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + List Metadata Schemas Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13937,7 +13937,7 @@ - List Metadata Schemas Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + List Metadata Schemas Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13946,7 +13946,7 @@ - List Metadata Schemas Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + List Metadata Schemas Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -13956,7 +13956,7 @@ - List Metadata Schemas Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + List Metadata Schemas Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -14114,7 +14114,7 @@ - Copy Campaign Template to a Project Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Copy Campaign Template to a Project Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -14125,7 +14125,7 @@ - Copy Campaign Template to a Project Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Copy Campaign Template to a Project Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -14136,7 +14136,7 @@ - Copy Campaign Template to a Project Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Copy Campaign Template to a Project Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -14148,7 +14148,7 @@ - Copy Campaign Template to a Project Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Copy Campaign Template to a Project Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -14160,7 +14160,7 @@ - List Campaign Templates Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + List Campaign Templates Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -14174,7 +14174,7 @@ - List Campaign Templates Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + List Campaign Templates Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -14188,7 +14188,7 @@ - List Campaign Templates Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + List Campaign Templates Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -14203,7 +14203,7 @@ - List Campaign Templates Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + List Campaign Templates Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide the unique identifier of the project. @@ -14306,7 +14306,7 @@ - Update Custom Event Schema Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Update Custom Event Schema Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -14317,7 +14317,7 @@ - Update Custom Event Schema Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Update Custom Event Schema Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -14328,7 +14328,7 @@ - Update Custom Event Schema Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Update Custom Event Schema Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -14340,7 +14340,7 @@ - Update Custom Event Schema Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + Update Custom Event Schema Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). Thrown when fails to make API call Provide the unique identifier of the project. @@ -14352,7 +14352,7 @@ - Update Metadata Schema Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Update Metadata Schema Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -14363,7 +14363,7 @@ - Update Metadata Schema Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Update Metadata Schema Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -14374,7 +14374,7 @@ - Update Metadata Schema Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Update Metadata Schema Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -14386,7 +14386,7 @@ - Update Metadata Schema Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + Update Metadata Schema Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. Thrown when fails to make API call Provide the unique identifier of the project. @@ -14586,7 +14586,7 @@ Get Metadata Schema - Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. + Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. Thrown when fails to make API call There is an infinite number of possibilities for retrieving metadata schemas by the resource type because you can define custom metadata schemas. @@ -14598,7 +14598,7 @@ Get Metadata Schema - Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. + Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. Thrown when fails to make API call There is an infinite number of possibilities for retrieving metadata schemas by the resource type because you can define custom metadata schemas. @@ -14637,7 +14637,7 @@ Get Metadata Schema - Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. + Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. Thrown when fails to make API call There is an infinite number of possibilities for retrieving metadata schemas by the resource type because you can define custom metadata schemas. @@ -14650,7 +14650,7 @@ Get Metadata Schema - Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. + Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. Thrown when fails to make API call There is an infinite number of possibilities for retrieving metadata schemas by the resource type because you can define custom metadata schemas. @@ -14750,7 +14750,7 @@ - Get Metadata Schema Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. + Get Metadata Schema Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. Thrown when fails to make API call There is an infinite number of possibilities for retrieving metadata schemas by the resource type because you can define custom metadata schemas. @@ -14759,7 +14759,7 @@ - Get Metadata Schema Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. + Get Metadata Schema Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. Thrown when fails to make API call There is an infinite number of possibilities for retrieving metadata schemas by the resource type because you can define custom metadata schemas. @@ -14768,7 +14768,7 @@ - Get Metadata Schema Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. + Get Metadata Schema Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. Thrown when fails to make API call There is an infinite number of possibilities for retrieving metadata schemas by the resource type because you can define custom metadata schemas. @@ -14778,7 +14778,7 @@ - Get Metadata Schema Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. + Get Metadata Schema Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. Thrown when fails to make API call There is an infinite number of possibilities for retrieving metadata schemas by the resource type because you can define custom metadata schemas. @@ -14834,7 +14834,7 @@ Thrown when fails to make API call Gives an access token outside of the context of a user. (optional) - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) Index associated with the operation. OAuthTokenGenerateResponseBody @@ -14847,7 +14847,7 @@ Thrown when fails to make API call Gives an access token outside of the context of a user. (optional) - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) Index associated with the operation. ApiResponse of OAuthTokenGenerateResponseBody @@ -14913,7 +14913,7 @@ Thrown when fails to make API call Gives an access token outside of the context of a user. (optional) - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) Index associated with the operation. Cancellation Token to cancel the request. Task of OAuthTokenGenerateResponseBody @@ -14927,7 +14927,7 @@ Thrown when fails to make API call Gives an access token outside of the context of a user. (optional) - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) Index associated with the operation. Cancellation Token to cancel the request. Task of ApiResponse (OAuthTokenGenerateResponseBody) @@ -15056,7 +15056,7 @@ Thrown when fails to make API call Gives an access token outside of the context of a user. (optional) - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) Index associated with the operation. OAuthTokenGenerateResponseBody @@ -15066,7 +15066,7 @@ Thrown when fails to make API call Gives an access token outside of the context of a user. (optional) - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) Index associated with the operation. ApiResponse of OAuthTokenGenerateResponseBody @@ -15076,7 +15076,7 @@ Thrown when fails to make API call Gives an access token outside of the context of a user. (optional) - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) Index associated with the operation. Cancellation Token to cancel the request. Task of OAuthTokenGenerateResponseBody @@ -15087,7 +15087,7 @@ Thrown when fails to make API call Gives an access token outside of the context of a user. (optional) - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) Index associated with the operation. Cancellation Token to cancel the request. Task of ApiResponse (OAuthTokenGenerateResponseBody) @@ -16522,7 +16522,7 @@ Import Products using CSV - Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 norms**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). + Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - 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 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - 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). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). Thrown when fails to make API call File path. (optional) @@ -16534,7 +16534,7 @@ Import Products using CSV - Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 norms**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). + Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - 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 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - 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). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). Thrown when fails to make API call File path. (optional) @@ -16907,7 +16907,7 @@ Import Products using CSV - Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 norms**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). + Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - 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 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - 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). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). Thrown when fails to make API call File path. (optional) @@ -16920,7 +16920,7 @@ Import Products using CSV - Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 norms**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). + Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - 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 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - 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). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). Thrown when fails to make API call File path. (optional) @@ -17446,7 +17446,7 @@ - Import Products using CSV Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 norms**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). + Import Products using CSV Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - 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 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - 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). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). Thrown when fails to make API call File path. (optional) @@ -17455,7 +17455,7 @@ - Import Products using CSV Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 norms**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). + Import Products using CSV Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - 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 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - 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). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). Thrown when fails to make API call File path. (optional) @@ -17464,7 +17464,7 @@ - Import Products using CSV Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 norms**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). + Import Products using CSV Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - 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 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - 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). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). Thrown when fails to make API call File path. (optional) @@ -17474,7 +17474,7 @@ - Import Products using CSV Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 norms**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). + Import Products using CSV Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - 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 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - 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). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). Thrown when fails to make API call File path. (optional) @@ -19944,7 +19944,7 @@ Redeem Stackable Discounts - # How API returns calculated discounts and order amounts in the response In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. + In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. Thrown when fails to make API call @@ -19956,7 +19956,7 @@ Redeem Stackable Discounts - # How API returns calculated discounts and order amounts in the response In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. + In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. Thrown when fails to make API call @@ -20125,7 +20125,7 @@ Redeem Stackable Discounts - # How API returns calculated discounts and order amounts in the response In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. + In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. Thrown when fails to make API call @@ -20138,7 +20138,7 @@ Redeem Stackable Discounts - # How API returns calculated discounts and order amounts in the response In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. + In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. Thrown when fails to make API call @@ -20420,7 +20420,7 @@ - Redeem Stackable Discounts # How API returns calculated discounts and order amounts in the response In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. + Redeem Stackable Discounts In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. Thrown when fails to make API call @@ -20429,7 +20429,7 @@ - Redeem Stackable Discounts # How API returns calculated discounts and order amounts in the response In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. + Redeem Stackable Discounts In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. Thrown when fails to make API call @@ -20438,7 +20438,7 @@ - Redeem Stackable Discounts # How API returns calculated discounts and order amounts in the response In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. + Redeem Stackable Discounts In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. Thrown when fails to make API call @@ -20448,7 +20448,7 @@ - Redeem Stackable Discounts # How API returns calculated discounts and order amounts in the response In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. + Redeem Stackable Discounts In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. Thrown when fails to make API call @@ -22666,7 +22666,7 @@ Add Promotion Tier From Template - Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22679,7 +22679,7 @@ Add Promotion Tier From Template - Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22692,7 +22692,7 @@ Create Campaign From Template - Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22705,7 +22705,7 @@ Create Campaign From Template - Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22718,7 +22718,7 @@ Create Campaign Template - Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide details for a campaign template @@ -22730,7 +22730,7 @@ Create Campaign Template - Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide details for a campaign template @@ -22742,7 +22742,7 @@ Delete Campaign Template - Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22754,7 +22754,7 @@ Delete Campaign Template - Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22766,7 +22766,7 @@ Get Campaign Template - Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22778,7 +22778,7 @@ Get Campaign Template - Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22790,7 +22790,7 @@ List Campaign Templates - Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Limits the number of objects to be returned. The limit can range between 1 and 100 items. If no limit is set, it returns 10 items. (optional) @@ -22806,7 +22806,7 @@ List Campaign Templates - Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Limits the number of objects to be returned. The limit can range between 1 and 100 items. If no limit is set, it returns 10 items. (optional) @@ -22822,7 +22822,7 @@ Update Campaign Template - Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22835,7 +22835,7 @@ Update Campaign Template - Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22853,7 +22853,7 @@ Add Promotion Tier From Template - Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22867,7 +22867,7 @@ Add Promotion Tier From Template - Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22881,7 +22881,7 @@ Create Campaign From Template - Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22895,7 +22895,7 @@ Create Campaign From Template - Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22909,7 +22909,7 @@ Create Campaign Template - Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide details for a campaign template @@ -22922,7 +22922,7 @@ Create Campaign Template - Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide details for a campaign template @@ -22935,7 +22935,7 @@ Delete Campaign Template - Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22948,7 +22948,7 @@ Delete Campaign Template - Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22961,7 +22961,7 @@ Get Campaign Template - Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22974,7 +22974,7 @@ Get Campaign Template - Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -22987,7 +22987,7 @@ List Campaign Templates - Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Limits the number of objects to be returned. The limit can range between 1 and 100 items. If no limit is set, it returns 10 items. (optional) @@ -23004,7 +23004,7 @@ List Campaign Templates - Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Limits the number of objects to be returned. The limit can range between 1 and 100 items. If no limit is set, it returns 10 items. (optional) @@ -23021,7 +23021,7 @@ Update Campaign Template - Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23035,7 +23035,7 @@ Update Campaign Template - Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23112,7 +23112,7 @@ - Add Promotion Tier From Template Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Add Promotion Tier From Template Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23122,7 +23122,7 @@ - Add Promotion Tier From Template Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Add Promotion Tier From Template Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23132,7 +23132,7 @@ - Add Promotion Tier From Template Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Add Promotion Tier From Template Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23143,7 +23143,7 @@ - Add Promotion Tier From Template Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Add Promotion Tier From Template Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23154,7 +23154,7 @@ - Create Campaign From Template Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Create Campaign From Template Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23164,7 +23164,7 @@ - Create Campaign From Template Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Create Campaign From Template Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23174,7 +23174,7 @@ - Create Campaign From Template Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Create Campaign From Template Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23185,7 +23185,7 @@ - Create Campaign From Template Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Create Campaign From Template Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23196,7 +23196,7 @@ - Create Campaign Template Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Create Campaign Template Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide details for a campaign template @@ -23205,7 +23205,7 @@ - Create Campaign Template Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Create Campaign Template Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide details for a campaign template @@ -23214,7 +23214,7 @@ - Create Campaign Template Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Create Campaign Template Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide details for a campaign template @@ -23224,7 +23224,7 @@ - Create Campaign Template Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Create Campaign Template Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Provide details for a campaign template @@ -23234,7 +23234,7 @@ - Delete Campaign Template Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Delete Campaign Template Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23243,7 +23243,7 @@ - Delete Campaign Template Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Delete Campaign Template Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23252,7 +23252,7 @@ - Delete Campaign Template Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Delete Campaign Template Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23262,7 +23262,7 @@ - Delete Campaign Template Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Delete Campaign Template Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23272,7 +23272,7 @@ - Get Campaign Template Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Get Campaign Template Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23281,7 +23281,7 @@ - Get Campaign Template Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Get Campaign Template Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23290,7 +23290,7 @@ - Get Campaign Template Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Get Campaign Template Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23300,7 +23300,7 @@ - Get Campaign Template Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Get Campaign Template Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23310,7 +23310,7 @@ - List Campaign Templates Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + List Campaign Templates Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Limits the number of objects to be returned. The limit can range between 1 and 100 items. If no limit is set, it returns 10 items. (optional) @@ -23323,7 +23323,7 @@ - List Campaign Templates Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + List Campaign Templates Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Limits the number of objects to be returned. The limit can range between 1 and 100 items. If no limit is set, it returns 10 items. (optional) @@ -23336,7 +23336,7 @@ - List Campaign Templates Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + List Campaign Templates Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Limits the number of objects to be returned. The limit can range between 1 and 100 items. If no limit is set, it returns 10 items. (optional) @@ -23350,7 +23350,7 @@ - List Campaign Templates Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + List Campaign Templates Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Limits the number of objects to be returned. The limit can range between 1 and 100 items. If no limit is set, it returns 10 items. (optional) @@ -23364,7 +23364,7 @@ - Update Campaign Template Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Update Campaign Template Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23374,7 +23374,7 @@ - Update Campaign Template Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Update Campaign Template Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23384,7 +23384,7 @@ - Update Campaign Template Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Update Campaign Template Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23395,7 +23395,7 @@ - Update Campaign Template Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + Update Campaign Template Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. Thrown when fails to make API call Pass the campaign template ID that was assigned by Voucherify. @@ -23442,7 +23442,7 @@ Create Validation Rules - Create a validation rule. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Create a validation rule. 🚧 Managing validation rules 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. Thrown when fails to make API call Specify the validation rules parameters. @@ -23454,7 +23454,7 @@ Create Validation Rules - Create a validation rule. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Create a validation rule. 🚧 Managing validation rules 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. Thrown when fails to make API call Specify the validation rules parameters. @@ -23634,7 +23634,7 @@ Update Validation Rule - Update validation rule parameters. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Update validation rule parameters. 🚧 Managing validation rules 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. Thrown when fails to make API call A unique validation rule ID. @@ -23647,7 +23647,7 @@ Update Validation Rule - Update validation rule parameters. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Update validation rule parameters. 🚧 Managing validation rules 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. Thrown when fails to make API call A unique validation rule ID. @@ -23695,7 +23695,7 @@ Create Validation Rules - Create a validation rule. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Create a validation rule. 🚧 Managing validation rules 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. Thrown when fails to make API call Specify the validation rules parameters. @@ -23708,7 +23708,7 @@ Create Validation Rules - Create a validation rule. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Create a validation rule. 🚧 Managing validation rules 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. Thrown when fails to make API call Specify the validation rules parameters. @@ -23901,7 +23901,7 @@ Update Validation Rule - Update validation rule parameters. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Update validation rule parameters. 🚧 Managing validation rules 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. Thrown when fails to make API call A unique validation rule ID. @@ -23915,7 +23915,7 @@ Update Validation Rule - Update validation rule parameters. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Update validation rule parameters. 🚧 Managing validation rules 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. Thrown when fails to make API call A unique validation rule ID. @@ -24038,7 +24038,7 @@ - Create Validation Rules Create a validation rule. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Create Validation Rules Create a validation rule. 🚧 Managing validation rules 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. Thrown when fails to make API call Specify the validation rules parameters. @@ -24047,7 +24047,7 @@ - Create Validation Rules Create a validation rule. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Create Validation Rules Create a validation rule. 🚧 Managing validation rules 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. Thrown when fails to make API call Specify the validation rules parameters. @@ -24056,7 +24056,7 @@ - Create Validation Rules Create a validation rule. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Create Validation Rules Create a validation rule. 🚧 Managing validation rules 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. Thrown when fails to make API call Specify the validation rules parameters. @@ -24066,7 +24066,7 @@ - Create Validation Rules Create a validation rule. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Create Validation Rules Create a validation rule. 🚧 Managing validation rules 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. Thrown when fails to make API call Specify the validation rules parameters. @@ -24352,7 +24352,7 @@ - Update Validation Rule Update validation rule parameters. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Update Validation Rule Update validation rule parameters. 🚧 Managing validation rules 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. Thrown when fails to make API call A unique validation rule ID. @@ -24362,7 +24362,7 @@ - Update Validation Rule Update validation rule parameters. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Update Validation Rule Update validation rule parameters. 🚧 Managing validation rules 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. Thrown when fails to make API call A unique validation rule ID. @@ -24372,7 +24372,7 @@ - Update Validation Rule Update validation rule parameters. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Update Validation Rule Update validation rule parameters. 🚧 Managing validation rules 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. Thrown when fails to make API call A unique validation rule ID. @@ -24383,7 +24383,7 @@ - Update Validation Rule Update validation rule parameters. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + Update Validation Rule Update validation rule parameters. 🚧 Managing validation rules 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. Thrown when fails to make API call A unique validation rule ID. @@ -24740,7 +24740,7 @@ Import Vouchers - Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 norms. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. + Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. Thrown when fails to make API call The request body is an array of objects. Each object contains details about a specific voucher. @@ -24752,7 +24752,7 @@ Import Vouchers - Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 norms. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. + Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. Thrown when fails to make API call The request body is an array of objects. Each object contains details about a specific voucher. @@ -24834,7 +24834,7 @@ Sorts the results using one of the filtering options, where the dash - preceding a sorting option means sorting in a descending order. (optional) (optional) (optional) - Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. (optional) + Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. Note that **Try-it!** adds the opening [ and closing ] square brackets on its own, so paste your filter without them, for example expiration_date][conditions][$before. (optional) Index associated with the operation. VouchersListResponseBody @@ -24857,7 +24857,7 @@ Sorts the results using one of the filtering options, where the dash - preceding a sorting option means sorting in a descending order. (optional) (optional) (optional) - Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. (optional) + Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. Note that **Try-it!** adds the opening [ and closing ] square brackets on its own, so paste your filter without them, for example expiration_date][conditions][$before. (optional) Index associated with the operation. ApiResponse of VouchersListResponseBody @@ -25185,7 +25185,7 @@ Import Vouchers - Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 norms. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. + Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. Thrown when fails to make API call The request body is an array of objects. Each object contains details about a specific voucher. @@ -25198,7 +25198,7 @@ Import Vouchers - Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 norms. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. + Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. Thrown when fails to make API call The request body is an array of objects. Each object contains details about a specific voucher. @@ -25285,7 +25285,7 @@ Sorts the results using one of the filtering options, where the dash - preceding a sorting option means sorting in a descending order. (optional) (optional) (optional) - Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. (optional) + Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. Note that **Try-it!** adds the opening [ and closing ] square brackets on its own, so paste your filter without them, for example expiration_date][conditions][$before. (optional) Index associated with the operation. Cancellation Token to cancel the request. Task of VouchersListResponseBody @@ -25309,7 +25309,7 @@ Sorts the results using one of the filtering options, where the dash - preceding a sorting option means sorting in a descending order. (optional) (optional) (optional) - Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. (optional) + Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. Note that **Try-it!** adds the opening [ and closing ] square brackets on its own, so paste your filter without them, for example expiration_date][conditions][$before. (optional) Index associated with the operation. Cancellation Token to cancel the request. Task of ApiResponse (VouchersListResponseBody) @@ -25796,7 +25796,7 @@ - Import Vouchers Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 norms. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. + Import Vouchers Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. Thrown when fails to make API call The request body is an array of objects. Each object contains details about a specific voucher. @@ -25805,7 +25805,7 @@ - Import Vouchers Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 norms. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. + Import Vouchers Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. Thrown when fails to make API call The request body is an array of objects. Each object contains details about a specific voucher. @@ -25814,7 +25814,7 @@ - Import Vouchers Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 norms. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. + Import Vouchers Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. Thrown when fails to make API call The request body is an array of objects. Each object contains details about a specific voucher. @@ -25824,7 +25824,7 @@ - Import Vouchers Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 norms. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. + Import Vouchers Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. Thrown when fails to make API call The request body is an array of objects. Each object contains details about a specific voucher. @@ -25940,7 +25940,7 @@ Sorts the results using one of the filtering options, where the dash - preceding a sorting option means sorting in a descending order. (optional) (optional) (optional) - Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. (optional) + Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. Note that **Try-it!** adds the opening [ and closing ] square brackets on its own, so paste your filter without them, for example expiration_date][conditions][$before. (optional) Index associated with the operation. VouchersListResponseBody @@ -25960,7 +25960,7 @@ Sorts the results using one of the filtering options, where the dash - preceding a sorting option means sorting in a descending order. (optional) (optional) (optional) - Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. (optional) + Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. Note that **Try-it!** adds the opening [ and closing ] square brackets on its own, so paste your filter without them, for example expiration_date][conditions][$before. (optional) Index associated with the operation. ApiResponse of VouchersListResponseBody @@ -25980,7 +25980,7 @@ Sorts the results using one of the filtering options, where the dash - preceding a sorting option means sorting in a descending order. (optional) (optional) (optional) - Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. (optional) + Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. Note that **Try-it!** adds the opening [ and closing ] square brackets on its own, so paste your filter without them, for example expiration_date][conditions][$before. (optional) Index associated with the operation. Cancellation Token to cancel the request. Task of VouchersListResponseBody @@ -26001,7 +26001,7 @@ Sorts the results using one of the filtering options, where the dash - preceding a sorting option means sorting in a descending order. (optional) (optional) (optional) - Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. (optional) + Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. Note that **Try-it!** adds the opening [ and closing ] square brackets on its own, so paste your filter without them, for example expiration_date][conditions][$before. (optional) Index associated with the operation. Cancellation Token to cancel the request. Task of ApiResponse (VouchersListResponseBody) @@ -39754,7 +39754,7 @@ Defines the scenario Voucherify should consider during the qualification process. - `ALL` - Scenario that returns all redeemables available for the customer in one API request. This scenario is used by default when no value is selected. - `CUSTOMER_WALLET` - returns vouchers applicable to the customer's cart based on the vouchers assigned to the customer's profile. - `AUDIENCE_ONLY` - returns all vouchers, promotion tiers, and campaigns available to the customer. Voucherify validates the rules based on the customer profile only. - `PRODUCTS` - returns all promotions available for the products (when a discount is defined to be applied to the item or when the item is required in the validation rule). - `PRODUCTS_DISCOUNT` - returns all promotions available for products when a discount is defined as applicable to specific item(s). - `PROMOTION_STACKS` - returns the applicable promotion stacks. - `PRODUCTS_BY_CUSTOMER` - returns all promotions available for a customer for the products (when a discount is defined to be applied to the item or when the item is required in the validation rule). - `PRODUCTS_DISCOUNT_BY_CUSTOMER` - returns all promotions available for a customer for products when a discount is defined as applicable to specific item(s).. options. session. - A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard; in the _Advanced Rule Builder_ &rarr; _Advanced_ &rarr; _Redemption metadata satisfy_ or _Basic Builder_ &rarr; _Attributes match_ &rarr; _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule).. + A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules) in the the Dashboard.. @@ -39814,9 +39814,9 @@ - A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard; in the _Advanced Rule Builder_ &rarr; _Advanced_ &rarr; _Redemption metadata satisfy_ or _Basic Builder_ &rarr; _Attributes match_ &rarr; _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule). + A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules) in the the Dashboard. - A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard; in the _Advanced Rule Builder_ &rarr; _Advanced_ &rarr; _Redemption metadata satisfy_ or _Basic Builder_ &rarr; _Attributes match_ &rarr; _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule). + A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules) in the the Dashboard. @@ -77527,7 +77527,7 @@ reward. order. - A set of key/value pairs that you can send in the request body to check against vouchers requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard; in the _Advanced Rule Builder_ &rarr; _Advanced_ &rarr; _Redemption metadata satisfy_ or _Basic Builder_ &rarr; _Attributes match_ &rarr; _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule).. + A set of key/value pairs that you can send in the request body to check against vouchers requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules) in the the Dashboard.. @@ -77553,9 +77553,9 @@ - A set of key/value pairs that you can send in the request body to check against vouchers requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard; in the _Advanced Rule Builder_ &rarr; _Advanced_ &rarr; _Redemption metadata satisfy_ or _Basic Builder_ &rarr; _Attributes match_ &rarr; _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule). + A set of key/value pairs that you can send in the request body to check against vouchers requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules) in the the Dashboard. - A set of key/value pairs that you can send in the request body to check against vouchers requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard; in the _Advanced Rule Builder_ &rarr; _Advanced_ &rarr; _Redemption metadata satisfy_ or _Basic Builder_ &rarr; _Attributes match_ &rarr; _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule). + A set of key/value pairs that you can send in the request body to check against vouchers requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules) in the the Dashboard. @@ -117253,7 +117253,7 @@ Unique client identifier, assigned by Voucherify, for OAuth.. Timestamp in seconds in the Unix format indicating when the token expires.. Number of seconds left until the token expires.. - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`.. + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`.. Type of the token. Use the value as the header prefix for authorization.. @@ -117306,9 +117306,9 @@ - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. @@ -117371,7 +117371,7 @@ Unique client identifier, assigned by Voucherify, for OAuth.. Timestamp in seconds in the Unix format indicating when the token expires.. Number of seconds left until the token expires.. - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`.. + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`.. Type of the token. Use the value as the header prefix for authorization.. Determines if the token is active. Nonexistent tokens are also marked as inactive.. @@ -117425,9 +117425,9 @@ - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. - Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. + Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. @@ -117514,7 +117514,7 @@ Initializes a new instance of the class. Unique ID assigned by Voucherify of an existing order that will be linked to the redemption of this request.. - Unique source ID of an existing order that will be linked to the redemption of this request.. + Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request.. The order status.. A positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the total amount of the order. This is the sum of the order items' amounts.. A positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the total amount of the order. This is the sum of the order items' amounts.. @@ -117536,9 +117536,9 @@ - Unique source ID of an existing order that will be linked to the redemption of this request. + Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request. - Unique source ID of an existing order that will be linked to the redemption of this request. + Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request. @@ -119122,7 +119122,7 @@ Initializes a new instance of the class. Unique ID assigned by Voucherify of an existing order that will be linked to the redemption of this request.. - Unique source ID of an existing order that will be linked to the redemption of this request.. + Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request.. The order status.. A positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the total amount of the order. This is the sum of the order items' amounts.. A positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the total amount of the order. This is the sum of the order items' amounts.. @@ -119148,9 +119148,9 @@ - Unique source ID of an existing order that will be linked to the redemption of this request. + Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request. - Unique source ID of an existing order that will be linked to the redemption of this request. + Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request. @@ -120382,7 +120382,7 @@ Initializes a new instance of the class. Unique ID assigned by Voucherify of an existing order that will be linked to the redemption of this request.. - Unique source ID of an existing order that will be linked to the redemption of this request.. + Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request.. The order status.. A positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the total amount of the order. This is the sum of the order items' amounts.. A positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the total amount of the order. This is the sum of the order items' amounts.. @@ -120407,9 +120407,9 @@ - Unique source ID of an existing order that will be linked to the redemption of this request. + Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request. - Unique source ID of an existing order that will be linked to the redemption of this request. + Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request. @@ -121071,7 +121071,7 @@ Initializes a new instance of the class. - Unique source ID of an existing order that will be linked to the redemption of this request.. + Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request.. The order status.. A positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the total amount of the order. This is the sum of the order items' amounts.. A positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the total amount of the order. This is the sum of the order items' amounts.. @@ -121085,9 +121085,9 @@ - Unique source ID of an existing order that will be linked to the redemption of this request. + Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request. - Unique source ID of an existing order that will be linked to the redemption of this request. + Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request. @@ -139717,7 +139717,7 @@ Defines the scenario Voucherify should consider during the qualification process. - `ALL` - Scenario that returns all redeemables available for the customer in one API request. This scenario is used by default when no value is selected. - `CUSTOMER_WALLET` - returns vouchers applicable to the customer's cart based on the vouchers assigned to the customer's profile. - `AUDIENCE_ONLY` - returns all vouchers, promotion tiers, and campaigns available to the customer. Voucherify validates the rules based on the customer profile only. - `PRODUCTS` - returns all promotions available for the products (when a discount is defined to be applied to the item or when the item is required in the validation rule). - `PRODUCTS_DISCOUNT` - returns all promotions available for products when a discount is defined as applicable to specific item(s). - `PROMOTION_STACKS` - returns the applicable promotion stacks. - `PRODUCTS_BY_CUSTOMER` - returns all promotions available for a customer for the products (when a discount is defined to be applied to the item or when the item is required in the validation rule). - `PRODUCTS_DISCOUNT_BY_CUSTOMER` - returns all promotions available for a customer for products when a discount is defined as applicable to specific item(s).. options. session. - A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard; in the _Advanced Rule Builder_ &rarr; _Advanced_ &rarr; _Redemption metadata satisfy_ or _Basic Builder_ &rarr; _Attributes match_ &rarr; _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule).. + A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules) in the the Dashboard.. @@ -139777,9 +139777,9 @@ - A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard; in the _Advanced Rule Builder_ &rarr; _Advanced_ &rarr; _Redemption metadata satisfy_ or _Basic Builder_ &rarr; _Attributes match_ &rarr; _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule). + A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules) in the the Dashboard. - A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard; in the _Advanced Rule Builder_ &rarr; _Advanced_ &rarr; _Redemption metadata satisfy_ or _Basic Builder_ &rarr; _Attributes match_ &rarr; _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule). + A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules) in the the Dashboard. diff --git a/readme.md b/readme.md index 1d53edca..de558cd4 100644 --- a/readme.md +++ b/readme.md @@ -269,7 +269,8 @@ Authorization schemes defined for the API. - `templates`: Gives access to all endpoints and methods starting with `/v1/templates`. ## 📅 Changelog -- **2026-02-27** - `9.0.1` + +- **2026-03-05** - `9.0.1` - Added debug mode to measure request timings - **2025-12-14** - `9.0.0` - All POST requests now require a payload. As a result, the order of parameters in API method calls may have changed. If you encounter a build error, please check the documentation for the method you are calling. @@ -1913,3 +1914,4 @@ Class | Method | HTTP request | Description - [Model.VouchersUpdateResponseBodyLoyaltyCard](docs/VouchersUpdateResponseBodyLoyaltyCard.md) - [Model.VouchersUpdateResponseBodyPublish](docs/VouchersUpdateResponseBodyPublish.md) - [Model.VouchersUpdateResponseBodyRedemption](docs/VouchersUpdateResponseBodyRedemption.md) + diff --git a/src/Voucherify/Api/ManagementApi.cs b/src/Voucherify/Api/ManagementApi.cs index 32924764..9ebbe660 100644 --- a/src/Voucherify/Api/ManagementApi.cs +++ b/src/Voucherify/Api/ManagementApi.cs @@ -82,7 +82,7 @@ public interface IManagementApiSync : IApiAccessor /// Create Custom Event Schema /// /// - /// Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + /// Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -95,7 +95,7 @@ public interface IManagementApiSync : IApiAccessor /// Create Custom Event Schema /// /// - /// Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + /// Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -107,7 +107,7 @@ public interface IManagementApiSync : IApiAccessor /// Create Metadata Schema /// /// - /// Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + /// Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -120,7 +120,7 @@ public interface IManagementApiSync : IApiAccessor /// Create Metadata Schema /// /// - /// Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + /// Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -230,7 +230,7 @@ public interface IManagementApiSync : IApiAccessor /// Delete Custom Event Schema /// /// - /// Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + /// Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -243,7 +243,7 @@ public interface IManagementApiSync : IApiAccessor /// Delete Custom Event Schema /// /// - /// Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + /// Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -255,7 +255,7 @@ public interface IManagementApiSync : IApiAccessor /// Delete Metadata Schema /// /// - /// Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + /// Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -268,7 +268,7 @@ public interface IManagementApiSync : IApiAccessor /// Delete Metadata Schema /// /// - /// Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + /// Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -378,7 +378,7 @@ public interface IManagementApiSync : IApiAccessor /// Get Custom Event Schema /// /// - /// Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + /// Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -391,7 +391,7 @@ public interface IManagementApiSync : IApiAccessor /// Get Custom Event Schema /// /// - /// Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + /// Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -403,7 +403,7 @@ public interface IManagementApiSync : IApiAccessor /// Get Metadata Schema /// /// - /// Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + /// Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -416,7 +416,7 @@ public interface IManagementApiSync : IApiAccessor /// Get Metadata Schema /// /// - /// Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + /// Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -572,7 +572,7 @@ public interface IManagementApiSync : IApiAccessor /// List Custom Event Schemas /// /// - /// Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + /// Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -584,7 +584,7 @@ public interface IManagementApiSync : IApiAccessor /// List Custom Event Schemas /// /// - /// Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + /// Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -595,7 +595,7 @@ public interface IManagementApiSync : IApiAccessor /// List Metadata Schemas /// /// - /// Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + /// Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -607,7 +607,7 @@ public interface IManagementApiSync : IApiAccessor /// List Metadata Schemas /// /// - /// Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + /// Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -708,7 +708,7 @@ public interface IManagementApiSync : IApiAccessor /// Copy Campaign Template to a Project /// /// - /// Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -722,7 +722,7 @@ public interface IManagementApiSync : IApiAccessor /// Copy Campaign Template to a Project /// /// - /// Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -735,7 +735,7 @@ public interface IManagementApiSync : IApiAccessor /// List Campaign Templates /// /// - /// Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -752,7 +752,7 @@ public interface IManagementApiSync : IApiAccessor /// List Campaign Templates /// /// - /// Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -820,7 +820,7 @@ public interface IManagementApiSync : IApiAccessor /// Update Custom Event Schema /// /// - /// Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + /// Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -834,7 +834,7 @@ public interface IManagementApiSync : IApiAccessor /// Update Custom Event Schema /// /// - /// Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + /// Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -847,7 +847,7 @@ public interface IManagementApiSync : IApiAccessor /// Update Metadata Schema /// /// - /// Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + /// Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -861,7 +861,7 @@ public interface IManagementApiSync : IApiAccessor /// Update Metadata Schema /// /// - /// Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + /// Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -1043,7 +1043,7 @@ public interface IManagementApiAsync : IApiAccessor /// Create Custom Event Schema /// /// - /// Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + /// Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -1057,7 +1057,7 @@ public interface IManagementApiAsync : IApiAccessor /// Create Custom Event Schema /// /// - /// Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + /// Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -1070,7 +1070,7 @@ public interface IManagementApiAsync : IApiAccessor /// Create Metadata Schema /// /// - /// Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + /// Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -1084,7 +1084,7 @@ public interface IManagementApiAsync : IApiAccessor /// Create Metadata Schema /// /// - /// Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + /// Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -1203,7 +1203,7 @@ public interface IManagementApiAsync : IApiAccessor /// Delete Custom Event Schema /// /// - /// Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + /// Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -1217,7 +1217,7 @@ public interface IManagementApiAsync : IApiAccessor /// Delete Custom Event Schema /// /// - /// Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + /// Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -1230,7 +1230,7 @@ public interface IManagementApiAsync : IApiAccessor /// Delete Metadata Schema /// /// - /// Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + /// Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -1244,7 +1244,7 @@ public interface IManagementApiAsync : IApiAccessor /// Delete Metadata Schema /// /// - /// Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + /// Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -1363,7 +1363,7 @@ public interface IManagementApiAsync : IApiAccessor /// Get Custom Event Schema /// /// - /// Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + /// Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -1377,7 +1377,7 @@ public interface IManagementApiAsync : IApiAccessor /// Get Custom Event Schema /// /// - /// Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + /// Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -1390,7 +1390,7 @@ public interface IManagementApiAsync : IApiAccessor /// Get Metadata Schema /// /// - /// Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + /// Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -1404,7 +1404,7 @@ public interface IManagementApiAsync : IApiAccessor /// Get Metadata Schema /// /// - /// Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + /// Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -1573,7 +1573,7 @@ public interface IManagementApiAsync : IApiAccessor /// List Custom Event Schemas /// /// - /// Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + /// Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -1586,7 +1586,7 @@ public interface IManagementApiAsync : IApiAccessor /// List Custom Event Schemas /// /// - /// Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + /// Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -1598,7 +1598,7 @@ public interface IManagementApiAsync : IApiAccessor /// List Metadata Schemas /// /// - /// Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + /// Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -1611,7 +1611,7 @@ public interface IManagementApiAsync : IApiAccessor /// List Metadata Schemas /// /// - /// Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + /// Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -1721,7 +1721,7 @@ public interface IManagementApiAsync : IApiAccessor /// Copy Campaign Template to a Project /// /// - /// Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -1736,7 +1736,7 @@ public interface IManagementApiAsync : IApiAccessor /// Copy Campaign Template to a Project /// /// - /// Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -1750,7 +1750,7 @@ public interface IManagementApiAsync : IApiAccessor /// List Campaign Templates /// /// - /// Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -1768,7 +1768,7 @@ public interface IManagementApiAsync : IApiAccessor /// List Campaign Templates /// /// - /// Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -1841,7 +1841,7 @@ public interface IManagementApiAsync : IApiAccessor /// Update Custom Event Schema /// /// - /// Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + /// Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -1856,7 +1856,7 @@ public interface IManagementApiAsync : IApiAccessor /// Update Custom Event Schema /// /// - /// Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + /// Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -1870,7 +1870,7 @@ public interface IManagementApiAsync : IApiAccessor /// Update Metadata Schema /// /// - /// Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + /// Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -1885,7 +1885,7 @@ public interface IManagementApiAsync : IApiAccessor /// Update Metadata Schema /// /// - /// Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + /// Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -2500,7 +2500,7 @@ public Voucherify.Client.ApiResponse - /// Create Custom Event Schema Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + /// Create Custom Event Schema Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -2514,7 +2514,7 @@ public ManagementProjectsCustomEventSchemasCreateResponseBody CreateCustomEventS } /// - /// Create Custom Event Schema Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + /// Create Custom Event Schema Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -2591,7 +2591,7 @@ public Voucherify.Client.ApiResponse - /// Create Custom Event Schema Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + /// Create Custom Event Schema Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -2606,7 +2606,7 @@ public Voucherify.Client.ApiResponse - /// Create Custom Event Schema Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + /// Create Custom Event Schema Creates a custom event schema. The properties object is required, but it can be empty, however. This object is for optional custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -2685,7 +2685,7 @@ public Voucherify.Client.ApiResponse - /// Create Metadata Schema Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + /// Create Metadata Schema Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -2699,7 +2699,7 @@ public ManagementProjectsMetadataSchemasCreateResponseBody CreateMetadataSchema( } /// - /// Create Metadata Schema Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + /// Create Metadata Schema Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -2776,7 +2776,7 @@ public Voucherify.Client.ApiResponse - /// Create Metadata Schema Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + /// Create Metadata Schema Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -2791,7 +2791,7 @@ public Voucherify.Client.ApiResponse - /// Create Metadata Schema Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + /// Create Metadata Schema Creates a new metadata (custom attribute) schema for a given resource. The schema consists of a set of key-value pairs to customize Voucherify resources. You 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: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward Use 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -3586,7 +3586,7 @@ public Voucherify.Client.ApiResponse DeleteBrandWithHttpInfo(string proj } /// - /// Delete Custom Event Schema Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + /// Delete Custom Event Schema Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -3599,7 +3599,7 @@ public void DeleteCustomEventSchema(string projectId, string customEventSchemaId } /// - /// Delete Custom Event Schema Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + /// Delete Custom Event Schema Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -3674,7 +3674,7 @@ public Voucherify.Client.ApiResponse DeleteCustomEventSchemaWithHttpInfo } /// - /// Delete Custom Event Schema Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + /// Delete Custom Event Schema Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -3688,7 +3688,7 @@ public Voucherify.Client.ApiResponse DeleteCustomEventSchemaWithHttpInfo } /// - /// Delete Custom Event Schema Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + /// Delete Custom Event Schema Deletes permanently the custom event schema with its custom properties (metadata). 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -3765,7 +3765,7 @@ public Voucherify.Client.ApiResponse DeleteCustomEventSchemaWithHttpInfo } /// - /// Delete Metadata Schema Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + /// Delete Metadata Schema Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -3778,7 +3778,7 @@ public void DeleteMetadataSchema(string projectId, string metadataSchemaId, int } /// - /// Delete Metadata Schema Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + /// Delete Metadata Schema Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -3853,7 +3853,7 @@ public Voucherify.Client.ApiResponse DeleteMetadataSchemaWithHttpInfo(st } /// - /// Delete Metadata Schema Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + /// Delete Metadata Schema Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -3867,7 +3867,7 @@ public Voucherify.Client.ApiResponse DeleteMetadataSchemaWithHttpInfo(st } /// - /// Delete Metadata Schema Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + /// Delete Metadata Schema Deletes permanently the metadata schema. In standard metadata schemas, this endpoint removes permanently all definitions. The standard metadata schemas are: - Campaign - Voucher - Publication - Redemption - Product - Customer - Order - Order line item - Loyalty Tier - Promotion Tier - Earning rule - Reward If 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. If you want to create a new standard metadata schema, use the [Create Metadata Schema](/api-reference/management/create-metadata-schema) endpoint. 🚧 Metadata Purging 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. If you want to purge metadata from the entities: 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. 2. In Voucherify Project Settings > Metadata Schema tab, go to the relevant metadata schema. 3. In Removed definitions, click the bin button next to the definitions whose metadata you want to purge from entities. Note: - This is an asynchronous action. You will be notified when it has been completed. - You cannot purge metadata for the Redemption and Publication schemas. 4. Use the Delete Metadata Schema request to delete the metadata schema from Voucherify. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -4646,7 +4646,7 @@ public Voucherify.Client.ApiResponse } /// - /// Get Custom Event Schema Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + /// Get Custom Event Schema Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -4660,7 +4660,7 @@ public ManagementProjectsCustomEventSchemasGetResponseBody GetCustomEventSchema( } /// - /// Get Custom Event Schema Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + /// Get Custom Event Schema Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -4736,7 +4736,7 @@ public Voucherify.Client.ApiResponse - /// Get Custom Event Schema Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + /// Get Custom Event Schema Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -4751,7 +4751,7 @@ public Voucherify.Client.ApiResponse - /// Get Custom Event Schema Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + /// Get Custom Event Schema Retrieves a custom event schema. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -4829,7 +4829,7 @@ public Voucherify.Client.ApiResponse - /// Get Metadata Schema Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + /// Get Metadata Schema Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -4843,7 +4843,7 @@ public ManagementProjectsMetadataSchemasGetResponseBody GetMetadataSchema1(strin } /// - /// Get Metadata Schema Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + /// Get Metadata Schema Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -4919,7 +4919,7 @@ public Voucherify.Client.ApiResponse - /// Get Metadata Schema Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + /// Get Metadata Schema Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -4934,7 +4934,7 @@ public Voucherify.Client.ApiResponse - /// Get Metadata Schema Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + /// Get Metadata Schema Retrieves a metadata schema. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -6054,7 +6054,7 @@ public Voucherify.Client.ApiResponse } /// - /// List Custom Event Schemas Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + /// List Custom Event Schemas Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -6067,7 +6067,7 @@ public ManagementProjectsCustomEventSchemasListResponseBody ListCustomEventSchem } /// - /// List Custom Event Schemas Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + /// List Custom Event Schemas Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -6135,7 +6135,7 @@ public Voucherify.Client.ApiResponse - /// List Custom Event Schemas Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + /// List Custom Event Schemas Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -6149,7 +6149,7 @@ public Voucherify.Client.ApiResponse - /// List Custom Event Schemas Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + /// List Custom Event Schemas Lists all custom event schemas available in the project. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -6219,7 +6219,7 @@ public Voucherify.Client.ApiResponse - /// List Metadata Schemas Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + /// List Metadata Schemas Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -6232,7 +6232,7 @@ public ManagementProjectsMetadataSchemasListResponseBody ListMetadataSchemas1(st } /// - /// List Metadata Schemas Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + /// List Metadata Schemas Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -6300,7 +6300,7 @@ public Voucherify.Client.ApiResponse - /// List Metadata Schemas Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + /// List Metadata Schemas Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -6314,7 +6314,7 @@ public Voucherify.Client.ApiResponse - /// List Metadata Schemas Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + /// List Metadata Schemas Lists all metadata schemas available in the project. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -7026,7 +7026,7 @@ public Voucherify.Client.ApiResponse } /// - /// Copy Campaign Template to a Project Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Copy Campaign Template to a Project Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -7041,7 +7041,7 @@ public ManagementProjectsTemplatesCampaignsCopyCreateResponseBody ManagementCopy } /// - /// Copy Campaign Template to a Project Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Copy Campaign Template to a Project Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -7126,7 +7126,7 @@ public Voucherify.Client.ApiResponse - /// Copy Campaign Template to a Project Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Copy Campaign Template to a Project Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -7142,7 +7142,7 @@ public Voucherify.Client.ApiResponse - /// Copy Campaign Template to a Project Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Copy Campaign Template to a Project Copies a campaign template to another project. The 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. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -7229,7 +7229,7 @@ public Voucherify.Client.ApiResponse - /// List Campaign Templates Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// List Campaign Templates Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -7247,7 +7247,7 @@ public Voucherify.Client.ApiResponse - /// List Campaign Templates Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// List Campaign Templates Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -7355,7 +7355,7 @@ public Voucherify.Client.ApiResponse - /// List Campaign Templates Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// List Campaign Templates Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -7374,7 +7374,7 @@ public Voucherify.Client.ApiResponse - /// List Campaign Templates Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// List Campaign Templates Lists all campaign templates available in the project. 👍 List Campaign Templates This endpoint works in the same way as the [List Campaign Templates endpoint](/api-reference/templates/list-campaign-templates). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -7866,7 +7866,7 @@ public Voucherify.Client.ApiResponse - /// Update Custom Event Schema Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + /// Update Custom Event Schema Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -7881,7 +7881,7 @@ public ManagementProjectsCustomEventSchemasUpdateResponseBody UpdateCustomEventS } /// - /// Update Custom Event Schema Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + /// Update Custom Event Schema Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -7966,7 +7966,7 @@ public Voucherify.Client.ApiResponse - /// Update Custom Event Schema Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + /// Update Custom Event Schema Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -7982,7 +7982,7 @@ public Voucherify.Client.ApiResponse - /// Update Custom Event Schema Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](https://support.voucherify.io/article/111-custom-events) article to learn how custom events work in Voucherify. 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). + /// Update Custom Event Schema Updates a custom event schema. With this request, you can: - Add a nonexistent property to a custom event schema. - Update an existing property. In the request, you can provide only those properties you want to add or update. Definitions omitted in the request remain unchanged. 👍 Additional Notes - You can change the type of an existing property, e.g. from string to number. - 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. 📘 Custom Event Documentation Read [Custom Events](/prepare/custom-events) article to learn how custom events work in Voucherify. 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). /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -8069,7 +8069,7 @@ public Voucherify.Client.ApiResponse - /// Update Metadata Schema Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + /// Update Metadata Schema Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -8084,7 +8084,7 @@ public ManagementProjectsMetadataSchemasUpdateResponseBody UpdateMetadataSchema( } /// - /// Update Metadata Schema Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + /// Update Metadata Schema Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -8169,7 +8169,7 @@ public Voucherify.Client.ApiResponse - /// Update Metadata Schema Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + /// Update Metadata Schema Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. @@ -8185,7 +8185,7 @@ public Voucherify.Client.ApiResponse - /// Update Metadata Schema Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](https://support.voucherify.io/article/99-schema-validation-metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. + /// Update Metadata Schema Updates a metadata schema. With this request, you can: - Add a nonexistent attribute definition to the metadata schema. - Update an existing attribute definition by overwriting its current values. In the request, you can provide only those definitions you want to add or update. Definitions omitted in the request remain unchanged. However, 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. 👍 Additional Notes - You cannot change the type of an existing schema, e.g. from string to number. - 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. 📘 Metadata Documentation Read [the Getting Started with Metadata](/prepare/metadata) and [Metadata Mapping](/guides/metadata-mapping) articles to learn how metadata work in Voucherify. /// /// Thrown when fails to make API call /// Provide the unique identifier of the project. diff --git a/src/Voucherify/Api/MetadataSchemasApi.cs b/src/Voucherify/Api/MetadataSchemasApi.cs index 75fd4a48..dab90cb3 100644 --- a/src/Voucherify/Api/MetadataSchemasApi.cs +++ b/src/Voucherify/Api/MetadataSchemasApi.cs @@ -32,7 +32,7 @@ public interface IMetadataSchemasApiSync : IApiAccessor /// Get Metadata Schema /// /// - /// Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. + /// Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. /// /// Thrown when fails to make API call /// There is an infinite number of possibilities for retrieving metadata schemas by the resource type because you can define custom metadata schemas. @@ -44,7 +44,7 @@ public interface IMetadataSchemasApiSync : IApiAccessor /// Get Metadata Schema /// /// - /// Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. + /// Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. /// /// Thrown when fails to make API call /// There is an infinite number of possibilities for retrieving metadata schemas by the resource type because you can define custom metadata schemas. @@ -85,7 +85,7 @@ public interface IMetadataSchemasApiAsync : IApiAccessor /// Get Metadata Schema /// /// - /// Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. + /// Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. /// /// Thrown when fails to make API call /// There is an infinite number of possibilities for retrieving metadata schemas by the resource type because you can define custom metadata schemas. @@ -98,7 +98,7 @@ public interface IMetadataSchemasApiAsync : IApiAccessor /// Get Metadata Schema /// /// - /// Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. + /// Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. /// /// Thrown when fails to make API call /// There is an infinite number of possibilities for retrieving metadata schemas by the resource type because you can define custom metadata schemas. @@ -250,7 +250,7 @@ public Voucherify.Client.ExceptionFactory ExceptionFactory } /// - /// Get Metadata Schema Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. + /// Get Metadata Schema Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. /// /// Thrown when fails to make API call /// There is an infinite number of possibilities for retrieving metadata schemas by the resource type because you can define custom metadata schemas. @@ -263,7 +263,7 @@ public MetadataSchemasGetResponseBody GetMetadataSchema(string resource, int ope } /// - /// Get Metadata Schema Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. + /// Get Metadata Schema Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. /// /// Thrown when fails to make API call /// There is an infinite number of possibilities for retrieving metadata schemas by the resource type because you can define custom metadata schemas. @@ -347,7 +347,7 @@ public Voucherify.Client.ApiResponse GetMetadata } /// - /// Get Metadata Schema Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. + /// Get Metadata Schema Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. /// /// Thrown when fails to make API call /// There is an infinite number of possibilities for retrieving metadata schemas by the resource type because you can define custom metadata schemas. @@ -361,7 +361,7 @@ public Voucherify.Client.ApiResponse GetMetadata } /// - /// Get Metadata Schema Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. + /// Get Metadata Schema Retrieves a metadata schema per resource type. # Resource types ## Standard You can retrieve metadata schemas for the standard metadata schema definitions listed below. Add one of these types as the resource path parameter. - campaign - customer - earning_rule - loyalty_tier - order - order_item - product - promotion_tier - publication - redemption - reward - voucher ## Custom If you have defined a [custom metadata schema](/prepare/metadata#add-metadata), provide its name in the resource field to retrieve its details. 📘 Management API 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. /// /// Thrown when fails to make API call /// There is an infinite number of possibilities for retrieving metadata schemas by the resource type because you can define custom metadata schemas. diff --git a/src/Voucherify/Api/OAuthApi.cs b/src/Voucherify/Api/OAuthApi.cs index 1a8e346e..b8efd896 100644 --- a/src/Voucherify/Api/OAuthApi.cs +++ b/src/Voucherify/Api/OAuthApi.cs @@ -36,7 +36,7 @@ public interface IOAuthApiSync : IApiAccessor /// /// Thrown when fails to make API call /// Gives an access token outside of the context of a user. (optional) - /// Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) + /// Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) /// Index associated with the operation. /// OAuthTokenGenerateResponseBody OAuthTokenGenerateResponseBody GenerateOauthToken(string grantType = default(string), string scope = default(string), int operationIndex = 0); @@ -49,7 +49,7 @@ public interface IOAuthApiSync : IApiAccessor /// /// Thrown when fails to make API call /// Gives an access token outside of the context of a user. (optional) - /// Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) + /// Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) /// Index associated with the operation. /// ApiResponse of OAuthTokenGenerateResponseBody ApiResponse GenerateOauthTokenWithHttpInfo(string grantType = default(string), string scope = default(string), int operationIndex = 0); @@ -116,7 +116,7 @@ public interface IOAuthApiAsync : IApiAccessor /// /// Thrown when fails to make API call /// Gives an access token outside of the context of a user. (optional) - /// Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) + /// Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) /// Index associated with the operation. /// Cancellation Token to cancel the request. /// Task of OAuthTokenGenerateResponseBody @@ -130,7 +130,7 @@ public interface IOAuthApiAsync : IApiAccessor /// /// Thrown when fails to make API call /// Gives an access token outside of the context of a user. (optional) - /// Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) + /// Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) /// Index associated with the operation. /// Cancellation Token to cancel the request. /// Task of ApiResponse (OAuthTokenGenerateResponseBody) @@ -310,7 +310,7 @@ public Voucherify.Client.ExceptionFactory ExceptionFactory /// /// Thrown when fails to make API call /// Gives an access token outside of the context of a user. (optional) - /// Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) + /// Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) /// Index associated with the operation. /// OAuthTokenGenerateResponseBody public OAuthTokenGenerateResponseBody GenerateOauthToken(string grantType = default(string), string scope = default(string), int operationIndex = 0) @@ -324,7 +324,7 @@ public Voucherify.Client.ExceptionFactory ExceptionFactory /// /// Thrown when fails to make API call /// Gives an access token outside of the context of a user. (optional) - /// Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) + /// Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) /// Index associated with the operation. /// ApiResponse of OAuthTokenGenerateResponseBody public Voucherify.Client.ApiResponse GenerateOauthTokenWithHttpInfo(string grantType = default(string), string scope = default(string), int operationIndex = 0) @@ -395,7 +395,7 @@ public Voucherify.Client.ExceptionFactory ExceptionFactory /// /// Thrown when fails to make API call /// Gives an access token outside of the context of a user. (optional) - /// Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) + /// Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) /// Index associated with the operation. /// Cancellation Token to cancel the request. /// Task of OAuthTokenGenerateResponseBody @@ -410,7 +410,7 @@ public Voucherify.Client.ExceptionFactory ExceptionFactory /// /// Thrown when fails to make API call /// Gives an access token outside of the context of a user. (optional) - /// Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) + /// Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. The values are space-delimited; do **not** use commas to separate the values. Allowed values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. (optional) /// Index associated with the operation. /// Cancellation Token to cancel the request. /// Task of ApiResponse (OAuthTokenGenerateResponseBody) diff --git a/src/Voucherify/Api/ProductsApi.cs b/src/Voucherify/Api/ProductsApi.cs index 3b0698d4..d350a140 100644 --- a/src/Voucherify/Api/ProductsApi.cs +++ b/src/Voucherify/Api/ProductsApi.cs @@ -178,7 +178,7 @@ public interface IProductsApiSync : IApiAccessor /// Import Products using CSV /// /// - /// Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 norms**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). + /// Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - 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 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - 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). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). /// /// Thrown when fails to make API call /// File path. (optional) @@ -190,7 +190,7 @@ public interface IProductsApiSync : IApiAccessor /// Import Products using CSV /// /// - /// Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 norms**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). + /// Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - 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 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - 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). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). /// /// Thrown when fails to make API call /// File path. (optional) @@ -553,7 +553,7 @@ public interface IProductsApiAsync : IApiAccessor /// Import Products using CSV /// /// - /// Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 norms**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). + /// Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - 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 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - 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). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). /// /// Thrown when fails to make API call /// File path. (optional) @@ -566,7 +566,7 @@ public interface IProductsApiAsync : IApiAccessor /// Import Products using CSV /// /// - /// Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 norms**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). + /// Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - 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 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - 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). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). /// /// Thrown when fails to make API call /// File path. (optional) @@ -2132,7 +2132,7 @@ public Voucherify.Client.ApiResponse GetSkuWithHttpInfo(str } /// - /// Import Products using CSV Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 norms**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). + /// Import Products using CSV Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - 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 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - 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). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). /// /// Thrown when fails to make API call /// File path. (optional) @@ -2145,7 +2145,7 @@ public Voucherify.Client.ApiResponse GetSkuWithHttpInfo(str } /// - /// Import Products using CSV Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 norms**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). + /// Import Products using CSV Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - 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 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - 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). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). /// /// Thrown when fails to make API call /// File path. (optional) @@ -2227,7 +2227,7 @@ public Voucherify.Client.ApiResponse GetSkuWithHttpInfo(str } /// - /// Import Products using CSV Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 norms**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). + /// Import Products using CSV Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - 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 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - 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). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). /// /// Thrown when fails to make API call /// File path. (optional) @@ -2241,7 +2241,7 @@ public Voucherify.Client.ApiResponse GetSkuWithHttpInfo(str } /// - /// Import Products using CSV Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - Note that dates and date-time attributes need to be provided in compliance with the **ISO 8601 norms**. For example, 2022-03-11T09:00:00.000Z or 2022-03-11 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - To provide the proper data type, you need to add all custom attributes to the metadata schema **before importing the file**. Read more [here](https://support.voucherify.io/article/99-schema-validation-metadata#add-metadata). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). + /// Import Products using CSV Import products into the repository using a CSV file. The CSV file has to include headers in the first line. 📘 Standard product fields mapping - 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). - Supported CSV file headers: name,source_id,price,attributes,image_url,Metadata_property_name - **Name** is a **required** field. The remaining fields in the CSV template are optional. - 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. - 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 - YYYY-MM-DD - YYYY-MM-DDTHH - YYYY-MM-DDTHH:mm - YYYY-MM-DDTHH:mm:ss - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ssZ - YYYY-MM-DDTHH:mm:ss.SSSZ - 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. - 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). - **Product attributes** (not custom attributes) need to be separated by a comma and enclosed in double quotes, i.e attribute1,attribute2. - Headers with metadata names **cant contain white-space characters**. - If you import metadata defined in the schema as **arrays (multiple)**, you need to separate each value using a comma, for example: - array of strings: subscribed,premium - array of numbers: 123,234. - array of dates: 2000-01-01,2000-01-02 This API request starts a process that affects Voucherify data in bulk. In 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. The 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). /// /// Thrown when fails to make API call /// File path. (optional) diff --git a/src/Voucherify/Api/RedemptionsApi.cs b/src/Voucherify/Api/RedemptionsApi.cs index d580d8ba..9a5da53c 100644 --- a/src/Voucherify/Api/RedemptionsApi.cs +++ b/src/Voucherify/Api/RedemptionsApi.cs @@ -115,7 +115,7 @@ public interface IRedemptionsApiSync : IApiAccessor /// Redeem Stackable Discounts /// /// - /// # How API returns calculated discounts and order amounts in the response In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. + /// In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. /// /// Thrown when fails to make API call /// @@ -127,7 +127,7 @@ public interface IRedemptionsApiSync : IApiAccessor /// Redeem Stackable Discounts /// /// - /// # How API returns calculated discounts and order amounts in the response In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. + /// In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. /// /// Thrown when fails to make API call /// @@ -294,7 +294,7 @@ public interface IRedemptionsApiAsync : IApiAccessor /// Redeem Stackable Discounts /// /// - /// # How API returns calculated discounts and order amounts in the response In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. + /// In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. /// /// Thrown when fails to make API call /// @@ -307,7 +307,7 @@ public interface IRedemptionsApiAsync : IApiAccessor /// Redeem Stackable Discounts /// /// - /// # How API returns calculated discounts and order amounts in the response In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. + /// In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. /// /// Thrown when fails to make API call /// @@ -1267,7 +1267,7 @@ public Voucherify.Client.ApiResponse GetVouch } /// - /// Redeem Stackable Discounts # How API returns calculated discounts and order amounts in the response In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. + /// Redeem Stackable Discounts In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. /// /// Thrown when fails to make API call /// @@ -1280,7 +1280,7 @@ public RedemptionsRedeemResponseBody RedeemStackedDiscounts(RedemptionsRedeemReq } /// - /// Redeem Stackable Discounts # How API returns calculated discounts and order amounts in the response In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. + /// Redeem Stackable Discounts In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. /// /// Thrown when fails to make API call /// @@ -1365,7 +1365,7 @@ public Voucherify.Client.ApiResponse RedeemStacke } /// - /// Redeem Stackable Discounts # How API returns calculated discounts and order amounts in the response In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. + /// Redeem Stackable Discounts In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. /// /// Thrown when fails to make API call /// @@ -1379,7 +1379,7 @@ public Voucherify.Client.ApiResponse RedeemStacke } /// - /// Redeem Stackable Discounts # How API returns calculated discounts and order amounts in the response In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. + /// Redeem Stackable Discounts In the table below, you can see the logic the API follows to calculate discounts and amounts: API keys with a Merchant role cant use this endpoint. 📘 Rollbacks 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). 📘 Also available on client-side 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. /// /// Thrown when fails to make API call /// diff --git a/src/Voucherify/Api/TemplatesApi.cs b/src/Voucherify/Api/TemplatesApi.cs index 7e47120f..c74ff717 100644 --- a/src/Voucherify/Api/TemplatesApi.cs +++ b/src/Voucherify/Api/TemplatesApi.cs @@ -32,7 +32,7 @@ public interface ITemplatesApiSync : IApiAccessor /// Add Promotion Tier From Template /// /// - /// Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Pass the campaign template ID that was assigned by Voucherify. @@ -45,7 +45,7 @@ public interface ITemplatesApiSync : IApiAccessor /// Add Promotion Tier From Template /// /// - /// Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Pass the campaign template ID that was assigned by Voucherify. @@ -57,7 +57,7 @@ public interface ITemplatesApiSync : IApiAccessor /// Create Campaign From Template /// /// - /// Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Pass the campaign template ID that was assigned by Voucherify. @@ -70,7 +70,7 @@ public interface ITemplatesApiSync : IApiAccessor /// Create Campaign From Template /// /// - /// Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Pass the campaign template ID that was assigned by Voucherify. @@ -82,7 +82,7 @@ public interface ITemplatesApiSync : IApiAccessor /// Create Campaign Template /// /// - /// Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Provide details for a campaign template @@ -94,7 +94,7 @@ public interface ITemplatesApiSync : IApiAccessor /// Create Campaign Template /// /// - /// Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Provide details for a campaign template @@ -105,7 +105,7 @@ public interface ITemplatesApiSync : IApiAccessor /// Delete Campaign Template /// /// - /// Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Pass the campaign template ID that was assigned by Voucherify. @@ -117,7 +117,7 @@ public interface ITemplatesApiSync : IApiAccessor /// Delete Campaign Template /// /// - /// Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Pass the campaign template ID that was assigned by Voucherify. @@ -128,7 +128,7 @@ public interface ITemplatesApiSync : IApiAccessor /// Get Campaign Template /// /// - /// Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Pass the campaign template ID that was assigned by Voucherify. @@ -140,7 +140,7 @@ public interface ITemplatesApiSync : IApiAccessor /// Get Campaign Template /// /// - /// Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Pass the campaign template ID that was assigned by Voucherify. @@ -151,7 +151,7 @@ public interface ITemplatesApiSync : IApiAccessor /// List Campaign Templates /// /// - /// Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Limits the number of objects to be returned. The limit can range between 1 and 100 items. If no limit is set, it returns 10 items. (optional) @@ -167,7 +167,7 @@ public interface ITemplatesApiSync : IApiAccessor /// List Campaign Templates /// /// - /// Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Limits the number of objects to be returned. The limit can range between 1 and 100 items. If no limit is set, it returns 10 items. (optional) @@ -182,7 +182,7 @@ public interface ITemplatesApiSync : IApiAccessor /// Update Campaign Template /// /// - /// Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Pass the campaign template ID that was assigned by Voucherify. @@ -195,7 +195,7 @@ public interface ITemplatesApiSync : IApiAccessor /// Update Campaign Template /// /// - /// Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Pass the campaign template ID that was assigned by Voucherify. @@ -216,7 +216,7 @@ public interface ITemplatesApiAsync : IApiAccessor /// Add Promotion Tier From Template /// /// - /// Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Pass the campaign template ID that was assigned by Voucherify. @@ -230,7 +230,7 @@ public interface ITemplatesApiAsync : IApiAccessor /// Add Promotion Tier From Template /// /// - /// Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Pass the campaign template ID that was assigned by Voucherify. @@ -243,7 +243,7 @@ public interface ITemplatesApiAsync : IApiAccessor /// Create Campaign From Template /// /// - /// Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Pass the campaign template ID that was assigned by Voucherify. @@ -257,7 +257,7 @@ public interface ITemplatesApiAsync : IApiAccessor /// Create Campaign From Template /// /// - /// Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Pass the campaign template ID that was assigned by Voucherify. @@ -270,7 +270,7 @@ public interface ITemplatesApiAsync : IApiAccessor /// Create Campaign Template /// /// - /// Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Provide details for a campaign template @@ -283,7 +283,7 @@ public interface ITemplatesApiAsync : IApiAccessor /// Create Campaign Template /// /// - /// Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Provide details for a campaign template @@ -295,7 +295,7 @@ public interface ITemplatesApiAsync : IApiAccessor /// Delete Campaign Template /// /// - /// Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Pass the campaign template ID that was assigned by Voucherify. @@ -308,7 +308,7 @@ public interface ITemplatesApiAsync : IApiAccessor /// Delete Campaign Template /// /// - /// Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Pass the campaign template ID that was assigned by Voucherify. @@ -320,7 +320,7 @@ public interface ITemplatesApiAsync : IApiAccessor /// Get Campaign Template /// /// - /// Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Pass the campaign template ID that was assigned by Voucherify. @@ -333,7 +333,7 @@ public interface ITemplatesApiAsync : IApiAccessor /// Get Campaign Template /// /// - /// Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Pass the campaign template ID that was assigned by Voucherify. @@ -345,7 +345,7 @@ public interface ITemplatesApiAsync : IApiAccessor /// List Campaign Templates /// /// - /// Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Limits the number of objects to be returned. The limit can range between 1 and 100 items. If no limit is set, it returns 10 items. (optional) @@ -362,7 +362,7 @@ public interface ITemplatesApiAsync : IApiAccessor /// List Campaign Templates /// /// - /// Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Limits the number of objects to be returned. The limit can range between 1 and 100 items. If no limit is set, it returns 10 items. (optional) @@ -378,7 +378,7 @@ public interface ITemplatesApiAsync : IApiAccessor /// Update Campaign Template /// /// - /// Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Pass the campaign template ID that was assigned by Voucherify. @@ -392,7 +392,7 @@ public interface ITemplatesApiAsync : IApiAccessor /// Update Campaign Template /// /// - /// Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Pass the campaign template ID that was assigned by Voucherify. @@ -522,7 +522,7 @@ public Voucherify.Client.ExceptionFactory ExceptionFactory } /// - /// Add Promotion Tier From Template Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Add Promotion Tier From Template Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Pass the campaign template ID that was assigned by Voucherify. @@ -536,7 +536,7 @@ public TemplatesCampaignsTierSetupCreateResponseBody AddTierFromTemplate(string } /// - /// Add Promotion Tier From Template Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Add Promotion Tier From Template Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Pass the campaign template ID that was assigned by Voucherify. @@ -629,7 +629,7 @@ public Voucherify.Client.ApiResponse - /// Add Promotion Tier From Template Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Add Promotion Tier From Template Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Pass the campaign template ID that was assigned by Voucherify. @@ -644,7 +644,7 @@ public Voucherify.Client.ApiResponse - /// Add Promotion Tier From Template Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Add Promotion Tier From Template Creates a promotion tier out of a discount campaign template and adds it to an existing promotion campaign. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rule-assignment). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Pass the campaign template ID that was assigned by Voucherify. @@ -739,7 +739,7 @@ public Voucherify.Client.ApiResponse - /// Create Campaign From Template Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Create Campaign From Template Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Pass the campaign template ID that was assigned by Voucherify. @@ -753,7 +753,7 @@ public TemplatesCampaignsCampaignSetupCreateResponseBody CreateCampaignFromTempl } /// - /// Create Campaign From Template Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Create Campaign From Template Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Pass the campaign template ID that was assigned by Voucherify. @@ -846,7 +846,7 @@ public Voucherify.Client.ApiResponse - /// Create Campaign From Template Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Create Campaign From Template Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Pass the campaign template ID that was assigned by Voucherify. @@ -861,7 +861,7 @@ public Voucherify.Client.ApiResponse - /// Create Campaign From Template Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Create Campaign From Template Creates a campaign out of a campaign template. To 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. You 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: - [Update the validation rule](/api-reference/validation-rules/update-validation-rule), - [Unassign the validation rule](/api-reference/validation-rules/delete-validation-rule-assignment), - [Assign an existing validation rule](/api-reference/validation-rules/create-validation-rules-assignments). 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template) - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template) 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Pass the campaign template ID that was assigned by Voucherify. @@ -956,7 +956,7 @@ public Voucherify.Client.ApiResponse - /// Create Campaign Template Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Create Campaign Template Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Provide details for a campaign template @@ -969,7 +969,7 @@ public TemplatesCampaignsCreateTemplateResponseBody CreateCampaignTemplate(Templ } /// - /// Create Campaign Template Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Create Campaign Template Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Provide details for a campaign template @@ -1054,7 +1054,7 @@ public Voucherify.Client.ApiResponse - /// Create Campaign Template Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Create Campaign Template Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Provide details for a campaign template @@ -1068,7 +1068,7 @@ public Voucherify.Client.ApiResponse - /// Create Campaign Template Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Create Campaign Template Creates a template for a discount or gift campaign, or a promotion tier. A template stores campaign configuration **without** the following details: - Campaign name - Category - Code count The following elements are not supported by campaign templates: - Redeeming API keys - Redeeming users - Customer loyalty tier - Static segments 👍 Promotion Tiers and Campaign Templates 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: - [Discount campaign](/api-reference/templates/create-campaign-from-template), - [Promotion tier](/api-reference/templates/add-promotion-tier-from-template). 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Provide details for a campaign template @@ -1155,7 +1155,7 @@ public Voucherify.Client.ApiResponse - /// Delete Campaign Template Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Delete Campaign Template Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Pass the campaign template ID that was assigned by Voucherify. @@ -1167,7 +1167,7 @@ public void DeleteCampaignTemplate(string campaignTemplateId, int operationIndex } /// - /// Delete Campaign Template Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Delete Campaign Template Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Pass the campaign template ID that was assigned by Voucherify. @@ -1250,7 +1250,7 @@ public Voucherify.Client.ApiResponse DeleteCampaignTemplateWithHttpInfo( } /// - /// Delete Campaign Template Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Delete Campaign Template Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Pass the campaign template ID that was assigned by Voucherify. @@ -1263,7 +1263,7 @@ public Voucherify.Client.ApiResponse DeleteCampaignTemplateWithHttpInfo( } /// - /// Delete Campaign Template Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Delete Campaign Template Deletes the campaign template permanently. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Pass the campaign template ID that was assigned by Voucherify. @@ -1348,7 +1348,7 @@ public Voucherify.Client.ApiResponse DeleteCampaignTemplateWithHttpInfo( } /// - /// Get Campaign Template Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Get Campaign Template Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Pass the campaign template ID that was assigned by Voucherify. @@ -1361,7 +1361,7 @@ public TemplatesCampaignsGetResponseBody GetCampaignTemplate(string campaignTemp } /// - /// Get Campaign Template Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Get Campaign Template Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Pass the campaign template ID that was assigned by Voucherify. @@ -1445,7 +1445,7 @@ public Voucherify.Client.ApiResponse GetCampa } /// - /// Get Campaign Template Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Get Campaign Template Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Pass the campaign template ID that was assigned by Voucherify. @@ -1459,7 +1459,7 @@ public Voucherify.Client.ApiResponse GetCampa } /// - /// Get Campaign Template Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Get Campaign Template Retrieves a campaign template available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Pass the campaign template ID that was assigned by Voucherify. @@ -1545,7 +1545,7 @@ public Voucherify.Client.ApiResponse GetCampa } /// - /// List Campaign Templates Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// List Campaign Templates Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Limits the number of objects to be returned. The limit can range between 1 and 100 items. If no limit is set, it returns 10 items. (optional) @@ -1562,7 +1562,7 @@ public Voucherify.Client.ApiResponse GetCampa } /// - /// List Campaign Templates Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// List Campaign Templates Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Limits the number of objects to be returned. The limit can range between 1 and 100 items. If no limit is set, it returns 10 items. (optional) @@ -1678,7 +1678,7 @@ public Voucherify.Client.ApiResponse GetCampa } /// - /// List Campaign Templates Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// List Campaign Templates Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Limits the number of objects to be returned. The limit can range between 1 and 100 items. If no limit is set, it returns 10 items. (optional) @@ -1696,7 +1696,7 @@ public Voucherify.Client.ApiResponse GetCampa } /// - /// List Campaign Templates Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// List Campaign Templates Lists all campaign templates available in the project. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Limits the number of objects to be returned. The limit can range between 1 and 100 items. If no limit is set, it returns 10 items. (optional) @@ -1814,7 +1814,7 @@ public Voucherify.Client.ApiResponse GetCampa } /// - /// Update Campaign Template Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Update Campaign Template Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Pass the campaign template ID that was assigned by Voucherify. @@ -1828,7 +1828,7 @@ public TemplatesCampaignsUpdateResponseBody UpdateCampaignTemplate(string campai } /// - /// Update Campaign Template Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Update Campaign Template Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Pass the campaign template ID that was assigned by Voucherify. @@ -1921,7 +1921,7 @@ public Voucherify.Client.ApiResponse Updat } /// - /// Update Campaign Template Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Update Campaign Template Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Pass the campaign template ID that was assigned by Voucherify. @@ -1936,7 +1936,7 @@ public Voucherify.Client.ApiResponse Updat } /// - /// Update Campaign Template Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](https://support.voucherify.io/article/620-campaign-templates) to learn more about this feature. + /// Update Campaign Template Updates the name or description of the campaign template. 📘 Campaign Templates – Documentation Read the [Campaign Templates documentation](/build/campaign-templates) to learn more about this feature. /// /// Thrown when fails to make API call /// Pass the campaign template ID that was assigned by Voucherify. diff --git a/src/Voucherify/Api/ValidationRulesApi.cs b/src/Voucherify/Api/ValidationRulesApi.cs index cec089fe..3c44cb35 100644 --- a/src/Voucherify/Api/ValidationRulesApi.cs +++ b/src/Voucherify/Api/ValidationRulesApi.cs @@ -59,7 +59,7 @@ public interface IValidationRulesApiSync : IApiAccessor /// Create Validation Rules /// /// - /// Create a validation rule. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + /// Create a validation rule. 🚧 Managing validation rules 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. /// /// Thrown when fails to make API call /// Specify the validation rules parameters. @@ -71,7 +71,7 @@ public interface IValidationRulesApiSync : IApiAccessor /// Create Validation Rules /// /// - /// Create a validation rule. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + /// Create a validation rule. 🚧 Managing validation rules 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. /// /// Thrown when fails to make API call /// Specify the validation rules parameters. @@ -244,7 +244,7 @@ public interface IValidationRulesApiSync : IApiAccessor /// Update Validation Rule /// /// - /// Update validation rule parameters. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + /// Update validation rule parameters. 🚧 Managing validation rules 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. /// /// Thrown when fails to make API call /// A unique validation rule ID. @@ -257,7 +257,7 @@ public interface IValidationRulesApiSync : IApiAccessor /// Update Validation Rule /// /// - /// Update validation rule parameters. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + /// Update validation rule parameters. 🚧 Managing validation rules 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. /// /// Thrown when fails to make API call /// A unique validation rule ID. @@ -307,7 +307,7 @@ public interface IValidationRulesApiAsync : IApiAccessor /// Create Validation Rules /// /// - /// Create a validation rule. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + /// Create a validation rule. 🚧 Managing validation rules 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. /// /// Thrown when fails to make API call /// Specify the validation rules parameters. @@ -320,7 +320,7 @@ public interface IValidationRulesApiAsync : IApiAccessor /// Create Validation Rules /// /// - /// Create a validation rule. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + /// Create a validation rule. 🚧 Managing validation rules 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. /// /// Thrown when fails to make API call /// Specify the validation rules parameters. @@ -506,7 +506,7 @@ public interface IValidationRulesApiAsync : IApiAccessor /// Update Validation Rule /// /// - /// Update validation rule parameters. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + /// Update validation rule parameters. 🚧 Managing validation rules 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. /// /// Thrown when fails to make API call /// A unique validation rule ID. @@ -520,7 +520,7 @@ public interface IValidationRulesApiAsync : IApiAccessor /// Update Validation Rule /// /// - /// Update validation rule parameters. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + /// Update validation rule parameters. 🚧 Managing validation rules 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. /// /// Thrown when fails to make API call /// A unique validation rule ID. @@ -879,7 +879,7 @@ public Voucherify.Client.ExceptionFactory ExceptionFactory } /// - /// Create Validation Rules Create a validation rule. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + /// Create Validation Rules Create a validation rule. 🚧 Managing validation rules 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. /// /// Thrown when fails to make API call /// Specify the validation rules parameters. @@ -892,7 +892,7 @@ public ValidationRulesCreateResponseBody CreateValidationRules(ValidationRulesCr } /// - /// Create Validation Rules Create a validation rule. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + /// Create Validation Rules Create a validation rule. 🚧 Managing validation rules 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. /// /// Thrown when fails to make API call /// Specify the validation rules parameters. @@ -977,7 +977,7 @@ public Voucherify.Client.ApiResponse CreateVa } /// - /// Create Validation Rules Create a validation rule. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + /// Create Validation Rules Create a validation rule. 🚧 Managing validation rules 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. /// /// Thrown when fails to make API call /// Specify the validation rules parameters. @@ -991,7 +991,7 @@ public Voucherify.Client.ApiResponse CreateVa } /// - /// Create Validation Rules Create a validation rule. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + /// Create Validation Rules Create a validation rule. 🚧 Managing validation rules 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. /// /// Thrown when fails to make API call /// Specify the validation rules parameters. @@ -2390,7 +2390,7 @@ public Voucherify.Client.ApiResponse GetValidati } /// - /// Update Validation Rule Update validation rule parameters. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + /// Update Validation Rule Update validation rule parameters. 🚧 Managing validation rules 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. /// /// Thrown when fails to make API call /// A unique validation rule ID. @@ -2404,7 +2404,7 @@ public ValidationRulesUpdateResponseBody UpdateValidationRule(string validationR } /// - /// Update Validation Rule Update validation rule parameters. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + /// Update Validation Rule Update validation rule parameters. 🚧 Managing validation rules 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. /// /// Thrown when fails to make API call /// A unique validation rule ID. @@ -2497,7 +2497,7 @@ public Voucherify.Client.ApiResponse UpdateVa } /// - /// Update Validation Rule Update validation rule parameters. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + /// Update Validation Rule Update validation rule parameters. 🚧 Managing validation rules 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. /// /// Thrown when fails to make API call /// A unique validation rule ID. @@ -2512,7 +2512,7 @@ public Voucherify.Client.ApiResponse UpdateVa } /// - /// Update Validation Rule Update validation rule parameters. 🚧 Managing validation rules It is recommended to [create or update validation rules](https://support.voucherify.io/article/148-how-to-build-a-rule) 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. + /// Update Validation Rule Update validation rule parameters. 🚧 Managing validation rules 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. /// /// Thrown when fails to make API call /// A unique validation rule ID. diff --git a/src/Voucherify/Api/VouchersApi.cs b/src/Voucherify/Api/VouchersApi.cs index 541cb06c..7c421ffc 100644 --- a/src/Voucherify/Api/VouchersApi.cs +++ b/src/Voucherify/Api/VouchersApi.cs @@ -199,7 +199,7 @@ public interface IVouchersApiSync : IApiAccessor /// Import Vouchers /// /// - /// Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 norms. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. + /// Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. /// /// Thrown when fails to make API call /// The request body is an array of objects. Each object contains details about a specific voucher. @@ -211,7 +211,7 @@ public interface IVouchersApiSync : IApiAccessor /// Import Vouchers /// /// - /// Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 norms. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. + /// Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. /// /// Thrown when fails to make API call /// The request body is an array of objects. Each object contains details about a specific voucher. @@ -290,7 +290,7 @@ public interface IVouchersApiSync : IApiAccessor /// Sorts the results using one of the filtering options, where the dash - preceding a sorting option means sorting in a descending order. (optional) /// (optional) /// (optional) - /// Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. (optional) + /// Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. Note that **Try-it!** adds the opening [ and closing ] square brackets on its own, so paste your filter without them, for example expiration_date][conditions][$before. (optional) /// Index associated with the operation. /// VouchersListResponseBody VouchersListResponseBody ListVouchers(int? limit = default(int?), int? page = default(int?), string category = default(string), string campaignId = default(string), string customer = default(string), string campaign = default(string), ParameterCreatedBeforeAfter createdAt = default(ParameterCreatedBeforeAfter), ParameterUpdatedBeforeAfter updatedAt = default(ParameterUpdatedBeforeAfter), ParameterOrderVouchers? order = default(ParameterOrderVouchers?), string code = default(string), List ids = default(List), Object filters = default(Object), int operationIndex = 0); @@ -313,7 +313,7 @@ public interface IVouchersApiSync : IApiAccessor /// Sorts the results using one of the filtering options, where the dash - preceding a sorting option means sorting in a descending order. (optional) /// (optional) /// (optional) - /// Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. (optional) + /// Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. Note that **Try-it!** adds the opening [ and closing ] square brackets on its own, so paste your filter without them, for example expiration_date][conditions][$before. (optional) /// Index associated with the operation. /// ApiResponse of VouchersListResponseBody ApiResponse ListVouchersWithHttpInfo(int? limit = default(int?), int? page = default(int?), string category = default(string), string campaignId = default(string), string customer = default(string), string campaign = default(string), ParameterCreatedBeforeAfter createdAt = default(ParameterCreatedBeforeAfter), ParameterUpdatedBeforeAfter updatedAt = default(ParameterUpdatedBeforeAfter), ParameterOrderVouchers? order = default(ParameterOrderVouchers?), string code = default(string), List ids = default(List), Object filters = default(Object), int operationIndex = 0); @@ -632,7 +632,7 @@ public interface IVouchersApiAsync : IApiAccessor /// Import Vouchers /// /// - /// Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 norms. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. + /// Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. /// /// Thrown when fails to make API call /// The request body is an array of objects. Each object contains details about a specific voucher. @@ -645,7 +645,7 @@ public interface IVouchersApiAsync : IApiAccessor /// Import Vouchers /// /// - /// Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 norms. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. + /// Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. /// /// Thrown when fails to make API call /// The request body is an array of objects. Each object contains details about a specific voucher. @@ -729,7 +729,7 @@ public interface IVouchersApiAsync : IApiAccessor /// Sorts the results using one of the filtering options, where the dash - preceding a sorting option means sorting in a descending order. (optional) /// (optional) /// (optional) - /// Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. (optional) + /// Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. Note that **Try-it!** adds the opening [ and closing ] square brackets on its own, so paste your filter without them, for example expiration_date][conditions][$before. (optional) /// Index associated with the operation. /// Cancellation Token to cancel the request. /// Task of VouchersListResponseBody @@ -753,7 +753,7 @@ public interface IVouchersApiAsync : IApiAccessor /// Sorts the results using one of the filtering options, where the dash - preceding a sorting option means sorting in a descending order. (optional) /// (optional) /// (optional) - /// Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. (optional) + /// Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. Note that **Try-it!** adds the opening [ and closing ] square brackets on its own, so paste your filter without them, for example expiration_date][conditions][$before. (optional) /// Index associated with the operation. /// Cancellation Token to cancel the request. /// Task of ApiResponse (VouchersListResponseBody) @@ -2439,7 +2439,7 @@ public Voucherify.Client.ApiResponse GetVoucherWithHttp } /// - /// Import Vouchers Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 norms. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. + /// Import Vouchers Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. /// /// Thrown when fails to make API call /// The request body is an array of objects. Each object contains details about a specific voucher. @@ -2452,7 +2452,7 @@ public VouchersImportCreateResponseBody ImportVouchers(List - /// Import Vouchers Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 norms. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. + /// Import Vouchers Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. /// /// Thrown when fails to make API call /// The request body is an array of objects. Each object contains details about a specific voucher. @@ -2537,7 +2537,7 @@ public Voucherify.Client.ApiResponse ImportVou } /// - /// Import Vouchers Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 norms. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. + /// Import Vouchers Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. /// /// Thrown when fails to make API call /// The request body is an array of objects. Each object contains details about a specific voucher. @@ -2551,7 +2551,7 @@ public Voucherify.Client.ApiResponse ImportVou } /// - /// Import Vouchers Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 norms. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. + /// Import Vouchers Import generic (standalone) vouchers and gift cards into the repository. You can upload up to 100,000 codes to a campaign, as a campaign can have up to 100,000 codes by default. Also, the request can include up to **10 MB** of data. 📘 Important notes - **Start and expiration dates** need to be provided in compliance with the ISO 8601 standard. For example, 2020-03-11T09:00:00.000Z. - Custom code attributes (not supported by-default) need to be added as code **metadata**. - You **cannot import the same codes** to a single Voucherify Project. Any parameters not provided in the payload will be left blank or null. For both **standalone discount vouchers and gift cards**, you can import the following fields: - code - category - active - type - start_date - expiration_date - redemption.quantity - additional_info - metadata For **gift cards**, you can also import the following field: - gift.amount For **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. Fields other than the ones listed above wont be imported. Even if provided, they will be silently skipped. This API request starts a process that affects Voucherify data in bulk. In 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. The 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). 🚧 Standalone Vouchers and Campaigns In version [v20241004](https://support.voucherify.io/article/23-whats-new-in-voucherify#v20241004), generic (standalone) vouchers created through the Voucherify dashboard 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. /// /// Thrown when fails to make API call /// The request body is an array of objects. Each object contains details about a specific voucher. @@ -3090,7 +3090,7 @@ public Voucherify.Client.ApiResponse ImportVou /// Sorts the results using one of the filtering options, where the dash - preceding a sorting option means sorting in a descending order. (optional) /// (optional) /// (optional) - /// Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. (optional) + /// Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. Note that **Try-it!** adds the opening [ and closing ] square brackets on its own, so paste your filter without them, for example expiration_date][conditions][$before. (optional) /// Index associated with the operation. /// VouchersListResponseBody public VouchersListResponseBody ListVouchers(int? limit = default(int?), int? page = default(int?), string category = default(string), string campaignId = default(string), string customer = default(string), string campaign = default(string), ParameterCreatedBeforeAfter createdAt = default(ParameterCreatedBeforeAfter), ParameterUpdatedBeforeAfter updatedAt = default(ParameterUpdatedBeforeAfter), ParameterOrderVouchers? order = default(ParameterOrderVouchers?), string code = default(string), List ids = default(List), Object filters = default(Object), int operationIndex = 0) @@ -3114,7 +3114,7 @@ public Voucherify.Client.ApiResponse ImportVou /// Sorts the results using one of the filtering options, where the dash - preceding a sorting option means sorting in a descending order. (optional) /// (optional) /// (optional) - /// Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. (optional) + /// Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. Note that **Try-it!** adds the opening [ and closing ] square brackets on its own, so paste your filter without them, for example expiration_date][conditions][$before. (optional) /// Index associated with the operation. /// ApiResponse of VouchersListResponseBody public Voucherify.Client.ApiResponse ListVouchersWithHttpInfo(int? limit = default(int?), int? page = default(int?), string category = default(string), string campaignId = default(string), string customer = default(string), string campaign = default(string), ParameterCreatedBeforeAfter createdAt = default(ParameterCreatedBeforeAfter), ParameterUpdatedBeforeAfter updatedAt = default(ParameterUpdatedBeforeAfter), ParameterOrderVouchers? order = default(ParameterOrderVouchers?), string code = default(string), List ids = default(List), Object filters = default(Object), int operationIndex = 0) @@ -3263,7 +3263,7 @@ public Voucherify.Client.ApiResponse ImportVou /// Sorts the results using one of the filtering options, where the dash - preceding a sorting option means sorting in a descending order. (optional) /// (optional) /// (optional) - /// Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. (optional) + /// Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. Note that **Try-it!** adds the opening [ and closing ] square brackets on its own, so paste your filter without them, for example expiration_date][conditions][$before. (optional) /// Index associated with the operation. /// Cancellation Token to cancel the request. /// Task of VouchersListResponseBody @@ -3288,7 +3288,7 @@ public Voucherify.Client.ApiResponse ImportVou /// Sorts the results using one of the filtering options, where the dash - preceding a sorting option means sorting in a descending order. (optional) /// (optional) /// (optional) - /// Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. (optional) + /// Object for setting voucher filters. Read [Advanced filters for fetching resources](/api-reference/listing#advanced-filters-for-fetching-resources) for filter examples. Note that **Try-it!** adds the opening [ and closing ] square brackets on its own, so paste your filter without them, for example expiration_date][conditions][$before. (optional) /// Index associated with the operation. /// Cancellation Token to cancel the request. /// Task of ApiResponse (VouchersListResponseBody) diff --git a/src/Voucherify/Client/ApiClient.cs b/src/Voucherify/Client/ApiClient.cs index 3e578966..dde27eec 100644 --- a/src/Voucherify/Client/ApiClient.cs +++ b/src/Voucherify/Client/ApiClient.cs @@ -324,7 +324,7 @@ private RestRequest NewRequest( if (path == null) throw new ArgumentNullException("path"); if (options == null) throw new ArgumentNullException("options"); if (configuration == null) throw new ArgumentNullException("configuration"); - + bool debugModeEnabled = configuration.DebugModeEnabled; Stopwatch stopwatch = StartTiming(debugModeEnabled); @@ -604,7 +604,7 @@ private async Task> ExecClientAsync(Func> DeserializeRestResponseFromPolicyAsync(RestClient client, RestRequest request, PolicyResult policyResult, bool debugModeEnabled = false, CancellationToken cancellationToken = default) + private async Task> DeserializeRestResponseFromPolicyAsync(RestClient client, RestRequest request, PolicyResult policyResult, bool debugModeEnabled = false, CancellationToken cancellationToken = default) { if (policyResult.Outcome == OutcomeType.Successful) { @@ -624,7 +624,7 @@ private async Task> DeserializeRestResponseFromPolicyAsync(Re }; } } - + private ApiResponse Exec(RestRequest request, RequestOptions options, IReadableConfiguration configuration) { Action setOptions = (clientOptions) => @@ -679,6 +679,7 @@ private ApiResponse Exec(RestRequest request, RequestOptions options, IRea Func>> getResponse = async (client) => { bool debugEnabled = configuration.DebugModeEnabled; + if (RetryConfiguration.AsyncRetryPolicy != null) { var policy = RetryConfiguration.AsyncRetryPolicy; diff --git a/src/Voucherify/Client/Configuration.cs b/src/Voucherify/Client/Configuration.cs index a1f255e9..380527b4 100644 --- a/src/Voucherify/Client/Configuration.cs +++ b/src/Voucherify/Client/Configuration.cs @@ -151,6 +151,7 @@ public Configuration() OperationServers = new Dictionary>>() { }; + DebugModeEnabled = IsDebugModeEnabledInEnvironment(); // Setting Timeout has side effects (forces ApiClient creation). diff --git a/src/Voucherify/Model/ClientQualificationsCheckEligibilityRequestBody.cs b/src/Voucherify/Model/ClientQualificationsCheckEligibilityRequestBody.cs index 48fb1a51..fc6fbb6b 100644 --- a/src/Voucherify/Model/ClientQualificationsCheckEligibilityRequestBody.cs +++ b/src/Voucherify/Model/ClientQualificationsCheckEligibilityRequestBody.cs @@ -126,7 +126,7 @@ public bool ShouldSerializeScenario() /// Defines the scenario Voucherify should consider during the qualification process. - `ALL` - Scenario that returns all redeemables available for the customer in one API request. This scenario is used by default when no value is selected. - `CUSTOMER_WALLET` - returns vouchers applicable to the customer's cart based on the vouchers assigned to the customer's profile. - `AUDIENCE_ONLY` - returns all vouchers, promotion tiers, and campaigns available to the customer. Voucherify validates the rules based on the customer profile only. - `PRODUCTS` - returns all promotions available for the products (when a discount is defined to be applied to the item or when the item is required in the validation rule). - `PRODUCTS_DISCOUNT` - returns all promotions available for products when a discount is defined as applicable to specific item(s). - `PROMOTION_STACKS` - returns the applicable promotion stacks. - `PRODUCTS_BY_CUSTOMER` - returns all promotions available for a customer for the products (when a discount is defined to be applied to the item or when the item is required in the validation rule). - `PRODUCTS_DISCOUNT_BY_CUSTOMER` - returns all promotions available for a customer for products when a discount is defined as applicable to specific item(s).. /// options. /// session. - /// A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard; in the _Advanced Rule Builder_ &rarr; _Advanced_ &rarr; _Redemption metadata satisfy_ or _Basic Builder_ &rarr; _Attributes match_ &rarr; _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule).. + /// A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules) in the the Dashboard.. public ClientQualificationsCheckEligibilityRequestBody(Customer customer = default(Customer), Order order = default(Order), string trackingId = default(string), ScenarioEnum? scenario = default(ScenarioEnum?), QualificationsOption options = default(QualificationsOption), ClientQualificationsCheckEligibilityRequestBodySession session = default(ClientQualificationsCheckEligibilityRequestBodySession), Object metadata = default(Object)) { this._Customer = customer; @@ -288,9 +288,9 @@ public bool ShouldSerializeSession() return _flagSession; } /// - /// A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard; in the _Advanced Rule Builder_ &rarr; _Advanced_ &rarr; _Redemption metadata satisfy_ or _Basic Builder_ &rarr; _Attributes match_ &rarr; _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule). + /// A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules) in the the Dashboard. /// - /// A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard; in the _Advanced Rule Builder_ &rarr; _Advanced_ &rarr; _Redemption metadata satisfy_ or _Basic Builder_ &rarr; _Attributes match_ &rarr; _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule). + /// A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules) in the the Dashboard. [DataMember(Name = "metadata", EmitDefaultValue = true)] public Object Metadata { diff --git a/src/Voucherify/Model/LoyaltiesMembersRedemptionRedeemRequestBody.cs b/src/Voucherify/Model/LoyaltiesMembersRedemptionRedeemRequestBody.cs index 919f6c0c..3996f7d7 100644 --- a/src/Voucherify/Model/LoyaltiesMembersRedemptionRedeemRequestBody.cs +++ b/src/Voucherify/Model/LoyaltiesMembersRedemptionRedeemRequestBody.cs @@ -38,7 +38,7 @@ public partial class LoyaltiesMembersRedemptionRedeemRequestBody : IValidatableO /// /// reward. /// order. - /// A set of key/value pairs that you can send in the request body to check against vouchers requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard; in the _Advanced Rule Builder_ &rarr; _Advanced_ &rarr; _Redemption metadata satisfy_ or _Basic Builder_ &rarr; _Attributes match_ &rarr; _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule).. + /// A set of key/value pairs that you can send in the request body to check against vouchers requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules) in the the Dashboard.. public LoyaltiesMembersRedemptionRedeemRequestBody(LoyaltiesMembersRedemptionRedeemRequestBodyReward reward = default(LoyaltiesMembersRedemptionRedeemRequestBodyReward), Order order = default(Order), Object metadata = default(Object)) { this._Reward = reward; @@ -107,9 +107,9 @@ public bool ShouldSerializeOrder() return _flagOrder; } /// - /// A set of key/value pairs that you can send in the request body to check against vouchers requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard; in the _Advanced Rule Builder_ &rarr; _Advanced_ &rarr; _Redemption metadata satisfy_ or _Basic Builder_ &rarr; _Attributes match_ &rarr; _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule). + /// A set of key/value pairs that you can send in the request body to check against vouchers requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules) in the the Dashboard. /// - /// A set of key/value pairs that you can send in the request body to check against vouchers requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard; in the _Advanced Rule Builder_ &rarr; _Advanced_ &rarr; _Redemption metadata satisfy_ or _Basic Builder_ &rarr; _Attributes match_ &rarr; _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule). + /// A set of key/value pairs that you can send in the request body to check against vouchers requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules) in the the Dashboard. [DataMember(Name = "metadata", EmitDefaultValue = true)] public Object Metadata { diff --git a/src/Voucherify/Model/OAuthTokenGenerateResponseBody.cs b/src/Voucherify/Model/OAuthTokenGenerateResponseBody.cs index f7167462..faf72ce6 100644 --- a/src/Voucherify/Model/OAuthTokenGenerateResponseBody.cs +++ b/src/Voucherify/Model/OAuthTokenGenerateResponseBody.cs @@ -82,7 +82,7 @@ public bool ShouldSerializeTokenType() /// Unique client identifier, assigned by Voucherify, for OAuth.. /// Timestamp in seconds in the Unix format indicating when the token expires.. /// Number of seconds left until the token expires.. - /// Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`.. + /// Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`.. /// Type of the token. Use the value as the header prefix for authorization.. public OAuthTokenGenerateResponseBody(string accessToken = default(string), string clientId = default(string), int? expiresAt = default(int?), int? expiresIn = default(int?), string scope = default(string), TokenTypeEnum? tokenType = default(TokenTypeEnum?)) { @@ -219,9 +219,9 @@ public bool ShouldSerializeExpiresIn() return _flagExpiresIn; } /// - /// Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. + /// Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. /// - /// Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. + /// Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. [DataMember(Name = "scope", EmitDefaultValue = true)] public string Scope { diff --git a/src/Voucherify/Model/OAuthTokenIntrospectResponseBody.cs b/src/Voucherify/Model/OAuthTokenIntrospectResponseBody.cs index 6bd86554..3a13e9eb 100644 --- a/src/Voucherify/Model/OAuthTokenIntrospectResponseBody.cs +++ b/src/Voucherify/Model/OAuthTokenIntrospectResponseBody.cs @@ -82,7 +82,7 @@ public bool ShouldSerializeTokenType() /// Unique client identifier, assigned by Voucherify, for OAuth.. /// Timestamp in seconds in the Unix format indicating when the token expires.. /// Number of seconds left until the token expires.. - /// Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`.. + /// Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`.. /// Type of the token. Use the value as the header prefix for authorization.. /// Determines if the token is active. Nonexistent tokens are also marked as inactive.. public OAuthTokenIntrospectResponseBody(string accessToken = default(string), string clientId = default(string), int? expiresAt = default(int?), int? expiresIn = default(int?), string scope = default(string), TokenTypeEnum? tokenType = default(TokenTypeEnum?), bool? active = default(bool?)) @@ -225,9 +225,9 @@ public bool ShouldSerializeExpiresIn() return _flagExpiresIn; } /// - /// Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. + /// Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. /// - /// Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `SKUs`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. + /// Defines the scope of possible actions that can be done with the OAuth token. The `api` scope allows using the server-side API. The `client_api` scope allows using the whole client-side API. Possible values: `api`, `assets`, `async-actions`, `campaigns`, `categories`, `client_api`, `client_consents`, `client_customers`, `client_events`, `client_promotions`, `client_publish`, `client_qualifications`, `client_redeem`, `client_redemptions`, `client_validate`, `client_validations`, `client_vouchers`, `consents`, `customers`, `events`, `exports`, `locations`, `loyalties`, `metadata-schemas`, `orders`, `product-collections`, `products`, `promotions`, `publications`, `qualifications`, `redemptions`, `referrals`, `rewards`, `segments`, `skus`, `task-results`, `templates`, `trash-bin`, `validation-rules-assignments`, `validation-rules`, `validations`, `vouchers`. [DataMember(Name = "scope", EmitDefaultValue = true)] public string Scope { diff --git a/src/Voucherify/Model/Order.cs b/src/Voucherify/Model/Order.cs index 141cf41b..a6b0b0aa 100644 --- a/src/Voucherify/Model/Order.cs +++ b/src/Voucherify/Model/Order.cs @@ -97,7 +97,7 @@ public bool ShouldSerializeStatus() /// Initializes a new instance of the class. /// /// Unique ID assigned by Voucherify of an existing order that will be linked to the redemption of this request.. - /// Unique source ID of an existing order that will be linked to the redemption of this request.. + /// Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request.. /// The order status.. /// A positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the total amount of the order. This is the sum of the order items' amounts.. /// A positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the total amount of the order. This is the sum of the order items' amounts.. @@ -174,9 +174,9 @@ public bool ShouldSerializeId() return _flagId; } /// - /// Unique source ID of an existing order that will be linked to the redemption of this request. + /// Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request. /// - /// Unique source ID of an existing order that will be linked to the redemption of this request. + /// Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request. [DataMember(Name = "source_id", EmitDefaultValue = true)] public string SourceId { diff --git a/src/Voucherify/Model/OrdersCreateRequestBody.cs b/src/Voucherify/Model/OrdersCreateRequestBody.cs index f406331b..b6a8db24 100644 --- a/src/Voucherify/Model/OrdersCreateRequestBody.cs +++ b/src/Voucherify/Model/OrdersCreateRequestBody.cs @@ -97,7 +97,7 @@ public bool ShouldSerializeStatus() /// Initializes a new instance of the class. /// /// Unique ID assigned by Voucherify of an existing order that will be linked to the redemption of this request.. - /// Unique source ID of an existing order that will be linked to the redemption of this request.. + /// Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request.. /// The order status.. /// A positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the total amount of the order. This is the sum of the order items' amounts.. /// A positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the total amount of the order. This is the sum of the order items' amounts.. @@ -198,9 +198,9 @@ public bool ShouldSerializeId() return _flagId; } /// - /// Unique source ID of an existing order that will be linked to the redemption of this request. + /// Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request. /// - /// Unique source ID of an existing order that will be linked to the redemption of this request. + /// Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request. [DataMember(Name = "source_id", EmitDefaultValue = true)] public string SourceId { diff --git a/src/Voucherify/Model/OrdersImportCreateRequestBodyItem.cs b/src/Voucherify/Model/OrdersImportCreateRequestBodyItem.cs index 70c46e3a..ac31e31e 100644 --- a/src/Voucherify/Model/OrdersImportCreateRequestBodyItem.cs +++ b/src/Voucherify/Model/OrdersImportCreateRequestBodyItem.cs @@ -97,7 +97,7 @@ public bool ShouldSerializeStatus() /// Initializes a new instance of the class. /// /// Unique ID assigned by Voucherify of an existing order that will be linked to the redemption of this request.. - /// Unique source ID of an existing order that will be linked to the redemption of this request.. + /// Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request.. /// The order status.. /// A positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the total amount of the order. This is the sum of the order items' amounts.. /// A positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the total amount of the order. This is the sum of the order items' amounts.. @@ -192,9 +192,9 @@ public bool ShouldSerializeId() return _flagId; } /// - /// Unique source ID of an existing order that will be linked to the redemption of this request. + /// Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request. /// - /// Unique source ID of an existing order that will be linked to the redemption of this request. + /// Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request. [DataMember(Name = "source_id", EmitDefaultValue = true)] public string SourceId { diff --git a/src/Voucherify/Model/OrdersUpdateRequestBody.cs b/src/Voucherify/Model/OrdersUpdateRequestBody.cs index e47c3973..64b8d5b7 100644 --- a/src/Voucherify/Model/OrdersUpdateRequestBody.cs +++ b/src/Voucherify/Model/OrdersUpdateRequestBody.cs @@ -96,7 +96,7 @@ public bool ShouldSerializeStatus() /// /// Initializes a new instance of the class. /// - /// Unique source ID of an existing order that will be linked to the redemption of this request.. + /// Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request.. /// The order status.. /// A positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the total amount of the order. This is the sum of the order items' amounts.. /// A positive integer in the smallest currency unit (e.g. 100 cents for $1.00) representing the total amount of the order. This is the sum of the order items' amounts.. @@ -167,9 +167,9 @@ public bool ShouldSerializeStatus() } /// - /// Unique source ID of an existing order that will be linked to the redemption of this request. + /// Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request. /// - /// Unique source ID of an existing order that will be linked to the redemption of this request. + /// Unique source ID of an existing order that will be linked to the redemption of this request. For validation and redemption, if `source_id` is used with an existing order, the original order data will be used, like `items`, `amount`, and so on, not the one sent in the new request. [DataMember(Name = "source_id", EmitDefaultValue = true)] public string SourceId { diff --git a/src/Voucherify/Model/QualificationsCheckEligibilityRequestBody.cs b/src/Voucherify/Model/QualificationsCheckEligibilityRequestBody.cs index e907138b..e16f5f8b 100644 --- a/src/Voucherify/Model/QualificationsCheckEligibilityRequestBody.cs +++ b/src/Voucherify/Model/QualificationsCheckEligibilityRequestBody.cs @@ -126,7 +126,7 @@ public bool ShouldSerializeScenario() /// Defines the scenario Voucherify should consider during the qualification process. - `ALL` - Scenario that returns all redeemables available for the customer in one API request. This scenario is used by default when no value is selected. - `CUSTOMER_WALLET` - returns vouchers applicable to the customer's cart based on the vouchers assigned to the customer's profile. - `AUDIENCE_ONLY` - returns all vouchers, promotion tiers, and campaigns available to the customer. Voucherify validates the rules based on the customer profile only. - `PRODUCTS` - returns all promotions available for the products (when a discount is defined to be applied to the item or when the item is required in the validation rule). - `PRODUCTS_DISCOUNT` - returns all promotions available for products when a discount is defined as applicable to specific item(s). - `PROMOTION_STACKS` - returns the applicable promotion stacks. - `PRODUCTS_BY_CUSTOMER` - returns all promotions available for a customer for the products (when a discount is defined to be applied to the item or when the item is required in the validation rule). - `PRODUCTS_DISCOUNT_BY_CUSTOMER` - returns all promotions available for a customer for products when a discount is defined as applicable to specific item(s).. /// options. /// session. - /// A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard; in the _Advanced Rule Builder_ &rarr; _Advanced_ &rarr; _Redemption metadata satisfy_ or _Basic Builder_ &rarr; _Attributes match_ &rarr; _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule).. + /// A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules) in the the Dashboard.. public QualificationsCheckEligibilityRequestBody(Customer customer = default(Customer), Order order = default(Order), string trackingId = default(string), ScenarioEnum? scenario = default(ScenarioEnum?), QualificationsOption options = default(QualificationsOption), QualificationsCheckEligibilityRequestBodySession session = default(QualificationsCheckEligibilityRequestBodySession), Object metadata = default(Object)) { this._Customer = customer; @@ -288,9 +288,9 @@ public bool ShouldSerializeSession() return _flagSession; } /// - /// A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard; in the _Advanced Rule Builder_ &rarr; _Advanced_ &rarr; _Redemption metadata satisfy_ or _Basic Builder_ &rarr; _Attributes match_ &rarr; _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule). + /// A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules) in the the Dashboard. /// - /// A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or via the Dashboard; in the _Advanced Rule Builder_ &rarr; _Advanced_ &rarr; _Redemption metadata satisfy_ or _Basic Builder_ &rarr; _Attributes match_ &rarr; _REDEMPTION METADATA_. [Read more](https://support.voucherify.io/article/148-how-to-build-a-rule). + /// A set of key/value pairs that you can send in the request body to check against redeemables requiring **redemption** metadata validation rules to be satisfied. The validation runs against rules that are defined through the [Create Validation Rules](/api-reference/validation-rules/create-validation-rules) endpoint or with the [Validation Rule Builder](/personalize/create-validation-rules) in the the Dashboard. [DataMember(Name = "metadata", EmitDefaultValue = true)] public Object Metadata { diff --git a/src/Voucherify/Voucherify.nuspec b/src/Voucherify/Voucherify.nuspec index f3364b54..d930d964 100644 --- a/src/Voucherify/Voucherify.nuspec +++ b/src/Voucherify/Voucherify.nuspec @@ -14,7 +14,7 @@ MIT - 2026-02-27: 9.0.1 + 2026-03-05: 9.0.1 - Added debug mode to measure request timings 2025-12-14: 9.0.0 - All POST requests now require a payload. As a result, the order of parameters in API method calls may have changed. If you encounter a build error, please check the documentation for the method you are calling.

K!ck6@oQk}im74sI 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